LinuxForum
Linux samler Unix-folket, og det er en af de store styrker ved Linux-miljøet. Det er sagt før, men det kunne ses tydeligt den første lørdag i marts. Her blev LinuxForum 2001 afholdt med fulde huse, hvor 500 mennesker samledes i Symbion i København. LinuxForum er organiseret af Unix-brugergrupperne SSLUG, DKUUG og BSD/Dk.
Bred samling
LinuxForum er blevet en årlig begivenhed, hvor Unix-folk samles om foredrag og diskussioner. Ligesom det var tilfældet sidste år, deltog folk fra BSD-versionerne af Unix-styresystemet på lige fod med Linux i arrangementet. Dagens anden hovedtaler var Poul Henning Kamp fra FreeBSD.
Der er ingen tvivl om, at Linux-miljøet vokser. Det er ikke blot antallet af installationer, der bliver større, men udviklingsmiljøet vokser også i bredde og rummelighed. Der er en mangfoldighed fra dem, der fokuserer på stabile tekniske styresystemer, over til udviklerne af grafisk brugerinterface og applikationer. Denne bredde sås også blandt udstillerne, der havde spændvidde fra IBM og Sybase over Lotus, Apple og til mindre virksomheder med LIGA og flere andre.
De to første taler gav forskellige indgange til programmering af henholdsvis komponentbaserede applikationer og programmering af kernen i styresystemet. Den første taler, Matthias Ettrich, arbejder med softwarekomponenter og opbygning af applikationer, der har fokus på effektiv opbygning af komplekse programmer. Den anden taler Poul Henning Kamp introducerede kerneprogrammering, hvor alt skrives i programmeringssproget C, så programkoden giver stabile tekniske løsninger.
Softwarekomponenter
Komponenter
Matthias Ettrich var første hovedtaler på LinuxForum. Han arbejder for firmaet Trolltech i Norge, som programmerer Qt. Qt er et komponentbibliotek, der blandt andet anvendes i KDE. Ettrich er desuden pioneren bag ved KDE.
KDE er et grafisk brugerinterface til Linux, som giver brugerne mulighed for at styre computeren med mus, grafiske ikoner og vinduer. Alternativet til KDE i Linux-miljøet er Gnome, og mange Linux-distributioner har begge programpakker med, så brugerne selv kan vælge den brugerflade, de foretrækker. KDE er efterhånden en omfattende samling programmer, idet er kommet flere applikationer til i pakken udover det fundamentale brugerinterface.
KDE giver programmørerne et miljø for deres applikationer, hvor de kan bygge programmerne med anvendelse af KDE og Qt. Det betyder, at applikationerne kan genbruge og bygge videre på de almindelige brugerinterface funktioner, som KDE leverer.
Ettrich startede sin tale med at argumentere for softwarekomponenter, der er byggeklodser til programudvikling. Programmørerne får softwarekomponenter fra KDE og Qt. Hvis slutbrugerne derimod anvender flere selvstændige og isolerede applikationer, vil der være overlap på op imod 80 procent af programkode til ensartede funktioner. Applikationerne indeholder i vid udstrækning dublerede funktioner, som den grundlæggende brugerflade, håndtering af data, netværk og grænseflade til styresystem.
En applikation kan betragtes som et antal softwarekomponenter samlet i en enhed. Det betyder, at en rationel produktion af software bør gøre brug af standardiserede softwarekomponenter. Spørgsmålet er derefter, hvilken standard der skal bruges for disse softwarekomponenter?
Som vi også har gennemgået her på PC World Online findes der en række modeller og teknologier for softwarekomponenter. Ettrich gennemgik de eksisterende teknologier og modeller for komponenter, som CORBA og Javas RMI. KDE-projektet brugte et år på at anvende CORBA's model for softwarekomponenter. Men de forkastede denne model, fordi den var for tung og gav for begrænset understøttelse af datatyper.
COM inspiration
Inspiration fra Microsoft COM
Komponentmodellen i Qt, som hedder Kparts, er inspireret af Microsofts COM (Common Object Model). Kparts er en ramme for komponenter i KDE, og bygger på Qt objekter. Blandt nogle Linux-folk giver det anledning til politisk og økonomisk begrundet modvilje, men for Ettrich handlede hovedargumenterne om teknologien i COM. COM er en begrænset, men ganske effektiv model for softwarekomponenter.
En kopiering af binære COM-objekter er ikke relevant, når man arbejder på Linux. Fremstilling af komponenter med COM giver binære objekter, og COM kan udelukkende anvendes på Windows-platforme, på trods af Microsofts og andres ideer om det modsatte.
COM specificerer en grænseflade til softwarekomponenter, der giver programmører adgang til at benytte dem. Gennem dette interface kan programmører med COM genbruge andres programmoduler, de får adgang til komponenternes funktioner, og kan bygge videre på dem. Men COM efterlader en række mangler i forhold til at kontrollere komponenternes adfærd under programmets kørsel.
Qt har udviklet metoder til at håndtere og styre softwarekomponenter ud over et simpelt grænseflade. Genbrug af andres komponenter giver det problem, at disse komponenter skal være nemme at gennemskue, effektive at bruge, og det skal være let at overføre informationer til og fra dem. Det er ikke mindst et spørgsmål om, hvor meget tid programmøren skal bruge for at gennemskue de anvendte komponenter.
Hertil har Qt udviklet metoder, som gør det nemmere at genbruge softwarekomponenter med minimal brug af tid, således at de anvendte komponenter bliver selvstyrende og selvforklarende.
Spørgsmålet er herefter, at når Microsoft nu er ved at skifte komponentmodel fra COM til .Net, vil Qt da følge efter denne nye model? Hertil svarede Ettrich afvisende. Microsofts .Net-strategi var fornuftig for softwarekoncernen, men det ville ikke umiddelbart påvirke Qt.
Kerne-programmering
Kerneprogrammering
Poul Henning Kamp deltager i programmeringen af FreeBSD kernen. På den baggrund talte han om, hvordan man bliver kerne-programmør, hvilket for mange programmører er en mandomsprøve ud over det almindelige. Kamp både sagde og illustrerede, at kerneprogrammering er hårdt og morsomt.
Poul Henning Kamp. |
Programmeringen af kernen i styresystemerne sker i direkt forbindelse til hardware, og der findes ikke styresystemer eller værktøjer, som kan kontrollere forløbet. Det betyder, at fejl i programmeringn kan ende med, at maskinen "dør". Der er ingen anden udvej end at slukke maskinen. Hvorefter det simple spørgsmål. "Hvad skete der egentlig?" kan blive en kompliceret affære, fordi fejl i kernen af styresystemet lukker og slukker alt. Alle spor af fejlen er forsvundet med nedbrudet. Programmøren skal derfor skrive og gemme informationer, som han kan kan bruge til at identificere forløbet indtil systemnedbrudet.
Han udfordrede dem blandt publikummet, der havde ambitioner om at programmere styresystemkerner. Først skulle man tage 10 liniers C-kode, som åber en enhed og lukker den igen. Du skal derefter følge alle de instruktioner, som et styresystem må udføre fra start til slut, før dette er gennemført. Det involverer cirka tusinde liniers kode. Falder man af undervejs, bør man overveje om det nu er programmering af styresystem kernen, som man vil?
Dernæst er det en god ide at skrive en enhedsdriver (device driver). Det skulle kunne gøres på en måneds tid. Kamp gav nogle klare og simple anvisninger. Det er for eksempel godt at have manual og informationer om enheden, der skal styres, i stedet for at forsøge at gætte sig frem.
Programmører kan komme hurtigt igang ved at bruge cut-and-paste fra andres device drivere. Men dette lån af andres programkode kræver også en kritisk revision bagefter. Der var eksempler på, at programmører klippede og genbrugte kode, som de ikke vidste noget om. Andre genbrugte det igen, og andre igen genbrugte genbruget af genbruget. Først i senere led fandt programmører ud af, at der ikke var noget fornuftigt formål med den første kopierede kode.
Blandt de aktuelle projekter for udviklingen af kernen i FreeBSD, arbejder de med SMP-NG, fortalte Kamp til slut. Det er en teknik, hvor styresystemet kan køre på flere processorer sideløbende.
Samling om Linux
Linux-miljøet dækker i dag meget bredt fra C-programmører, der fokuserer på at tune styresystemets centrale motor, mens andre fokuserer på rationel produktion af softwarekomponenter. Andre igen arbejder med at anvende Linux i apparater og enheder, mens en tredje gruppe fokuserer på anvendelsen af Linux til populære applikationer.
Kan den løse og uformelle organisation af Linux-miljøet holde sammen på disse meget forskellige interesser? LinuxForum 2001 besvarede spørgmålet med et klart ja.
LinuxForum 2001 har stadig informationer på deres hjemmeside: http://www.linuxforum.dk/" TARGET="_blank"> http://www.linuxforum.dk/. Her findes der også præsentationsdias fra talerne.