Sverige har en mängd duktiga utvecklare av öppen källkod inom kända projekt som KDE, Gnome, GTK+, Gimp, My SQL och Squid-cache, men framgångarna har inte varit gratis. Det ligger många timmars arbete bakom och gemensamt för alla är att de någon gång har tagit de första staplande stegen in i öppen källkod-världen.
Allt har en början. Du behöver inte vara någon duktig utvecklare för att komma igång. Det enklaste sättet att bidra till öppen källkod är att komma med goda idéer och rapportera in de buggar du hittar i olika öppna program.
Ubuntu Brainstorm är ett bra exempel på en plats där du kan ventilera dina idéer och låta andra communitymedlemmar rösta på dem. Ju bättre, mer pedagogiska och mer genomarbetade idéerna är, desto högre är sannolikheten att andra får upp ögonen för dem, att de får röster och till sist implementeras i en distribution.
Du behöver absolut inte vara någon Linuxhackare för att börja med öppen källkod. Öppen källkod passar såväl Windows som Mac och Linux. Eftersom koden är öppen är de flesta projekt också helt plattformsoberoende.
Ramverket det viktigaste
I öppen källkod-världen finns det alltid folk som kommer att titta snett på dig på grund av ditt, i deras ögon, felaktiga val av operativsystem men då är det viktigare vilket ramverk du valt att utveckla i.
Befinner du dig i Windowsvärlden är chansen stor att du väljer Mono/Dotnet. Arbetar du i KDE utvecklar du troligtvis i Qt, och sitter du med Gnome är GTK+ förstahandsvalet. Är du stordatorfantast med förkärlek för realtidssystem kanske du fastnar för Java. Fler och fler program utvecklas även i Python.
Alla de här ramverken tar tid att lära sig, men de är allihop plattformsoberoende. Det betyder att det projekt du är involverad i inte är begränsat till ett operativsystem. När du själv blir projektledare kommer du att märka att det är enklare att få folk att bidra till ett program som är baserat på ett känt ramverk än på ett mindre obskyrt och plattformsberoende dito.
”Det enda som kostar
är datorn du sitter vid och
bandbredden.”
Det fina med öppen kod är att du oftast inte behöver betala några programlicenser över huvud taget för att komma i gång. Det enda som kostar är datorn du sitter vid och bandbredden du använder. Utvecklar du i Mono/Dotnet ska du titta på Monodevelop. Är Java/J2EE/Python/C/C++/php din grej ska du i stället titta på Eclipse.
Eclipse håller också på att bli standardmiljön för mobil utveckling. Den är även kapabel att hantera Microsofts Silverlight och Qt från Nokia, även om respektive leverantör också har egna utvecklingsmiljöer.
Du kan utveckla öppen källkod även om du sitter på Windows och Mac, men det enklaste sättet att komma in i communityarbetet är via någon av de etablerade Linuxdistributionerna. Distributionerna Fedora, Opensuse, Ubuntu, Gentoo och Mandriva slåss alla om ditt engagemang. Välj den distribution du trivs bäst med och där du känner förtroende för de drivande. Alla är bra på sitt sätt.
Utvecklarna hänger på IRC
Utvecklarna får du lättast kontakt med via IRC-chatten, som är den viktigaste kommunikationsvägen. Varje distribution har en eller flera kanaler där utvecklare och användare träffas och diskuterar. Följ etiketten för kanalen och ställ frågor i den kanal där de hör hemma. Håll dig också till ämnet och för inga privata ovidkommande diskussioner över IRC.
Hjälp gärna andra på chatten som har problem – det är ett säkert sätt att successivt bygga upp ett rykte om dig som en duktig communitymedlem. Att hjälpa andra är också ett sätt att bidra till projektet som sådant.
”Att hitta fel och fixa
buggar är det bästa sättet
att lära sig koden.”
Att hitta fel och fixa buggar låter som en tröstlös sysselsättning, men det är det bästa sättet att lära sig hur koden är uppbyggd och vilken syntax chefsutvecklaren förväntar sig att du ska använda. Dessutom kommer du själv garanterat att bli en betydligt bättre programmerare själv när du ser hur andra har gjort.
Att komma fram till att en bugg existerar är inte så svårt. Betydligt svårare är det att förstå vad den beror på, när den uppträder och hur det i stället borde vara. När du skriver en buggrapport och lämnar in, antingen via projektets egna buggrapporteringsverktyg eller via den Linuxdistribution du använder, ska du se till att skicka med så mycket väsentlig information som möjligt: vilken version av programmet du använder, vilka övriga paket programmet är beroende av att du har installerade och vilken version de har, samt eventuellt vilka program och drivrutiner du har installerade i din maskin.
Det enda som slår en väl författad buggrapport är en färdig fix (patch) där du själv gått in i koden, identifierat felet, rättat det och skickat in den rättningen tillsammans med buggrapporten. En välskriven buggrapport tillsammans med en färdig patch är ett säkert sätt att skapa sig ett namn i projektet.
Lär dig versionshantering
För att leta och rapportera in buggar behöver du inte ha några programmeringskunskaper, men så fort du vill gå in i koden och rätta behöver du lära dig ett system för versionshantering. Versionshanteraren underlättar när du hämtar hem källkoden, gör ändringar och skapar en fix som den projektansvarige sedan kan använda i programmet du fixat.
Så gott som alla öppna projekt lagar källkoden under en versionshanterare där SVN tillhör de vanligaste. Trenden går däremot mot att använda distribuerade versionshanterare, så kallade dvcs (distributed version control system), där Git och Bazaar vinner mark. Git är utvecklad av Linus Torvalds och används bland annat av Linuxkärnan. Bazaar utvecklas av Canonical, företaget bakom Linuxdistributionen Ubuntu, och används bland annat av My SQL.
Vilken versionshanterare du börjar med att lära dig beror därför på vilket projekt du är intresserad av att bidra till. I takt med att du blir en bättre utvecklare kommer du sannolikt att lära dig alla stora versionshanteringssystem.
Lär dig paketering
Tiden då användare gladeligen laddade hem källkoden och körde ./configure; make; make install är sedan länge förbi. För att någon som inte är hardcore-utvecklare ska vilja ta i ditt program måste det paketeras i ett format anpassat för just den plattformen. Vilket paketformat du börjar med beror troligtvis på vilket operativsystem eller vilken distribution du använder.
Blir du duktig på paketering och på att anpassa koden för en viss Linuxdistribution kan du också få en gräddfil in i communityn. Bra utvecklare som kan paketera och som dessutom har goda kunskaper i programutveckling är en bristvara.
Bristen på den typen av arbetskraft är orsaken till att programmen i en viss distribution inte alltid är uppdaterade. Det saknas helt enkelt folk som kan ta koden och anpassa den för distributionen. Finns inte ditt öppna favoritprogram hos din distribution kan du alltid erbjuda dig att paketera det. Ditt erbjudande kommer troligtvis att tas emot med öppna armar.
Råd för hur du paketerar hittar du via distributionernas respektive hemsidor och flera distributioner anordnar utvecklarträffar på IRC där de lär ut knepen. Träffarna hålls inte med någon större regelbundenhet utan annonseras ut via distributionens e-postlista, nyhetsbrev eller hemsida.
Fedora och Ubuntu är två distributioner som har IRC-baserad utbildning för utvecklare. Opensuse har sin ”hackvecka” där de anställda och communityn under en veckas tid hackar på olika projekt.
Åk på utvecklarträffar
Många stora projekt har årligen återkommande träffar runt om i världen där utvecklare och intresserade träffas för att planera, umgås och dricka öl. Några projekt, till exempel Ubuntu, har till och med två eller flera årliga utvecklarträffar. KDE har sitt Akademy, Gnome har Guadec, och Debian har Debconf. Andra projekt som också träffas årligen är Gimp, Openoffice.org, Drupal och Wine.
”En driven community
gör det så mycket roligare att
jobba med projektet.”
Andra projekt som Joomla brukar samla communityn på olika ställen runt om i världen där utvecklarna under några dagar jobbar på att krossa buggar. En driven community med trevliga arrangemang gör det så mycket roligare att jobba med projektet.
Eftersom resor och uppehälle kostar pengar kanske det tar emot att lägga ut de tusenlappar som krävs. Då kan det vara bra att veta att många projekt har en reskassa de använder för att se till att duktiga utvecklare får råd att åka.
Har du blivit en viktig bidragsgivare till ett visst projekt är det bara att fråga den projektansvarige om det finns möjlighet till sponsring. Många ”fattiga” utvecklare använder den möjligheten för att ta skuttet över Atlanten. Pengarna ska räcka till resa och husrum. Gimp, KDE och Ubuntu är exempel på projekt som har en reskassa att ta av.
Flera projekt har även svenska intresseföreningar som träffas mer eller mindre regelbundet. Ta reda på vad som gäller för just ditt projekt eller vad din region har att erbjuda. Sverige har många duktiga utvecklare av öppen källkod som gärna hjälper dig en bit på väg.
De flesta stora projekt har årliga utvecklarträffar där atmosfären är öppen och gemytlig. På Openoffice.org Conference jobbar konkurrenter sida vid sida under tre dagar.
Prispengar i potten
Tycker du att det är roligt att jobba med olika projekt och samtidigt vill tjäna pengar på det, ska du hålla ögonen öppna när det dyker upp projekt med prispengar i potten. Det kan vara allt från betalt sommarjobb under Googles paroll ”Google Summer of Code”, där du hjälper något känt projekt med förutbestämda uppgifter, till tävlingar som ”Android Challenge” med miljoner i potten.
För de allra minsta finns Googles ”Highly Open Participation Contest” där åldersgränsen är 13 år. Sun Microsystem har också ett program där de erbjuder rejäla prispengar om du åstadkommer något banbrytande inom projekten Openoffice, Netbeans, Glassfish, Open Solaris, Open JDK eller Open Sparc.
Skulle du inte vinna några prispengar kan du alltid trösta dig med att du åtminstone har blivit en bra mycket vassare programmerare på kuppen. Vilka tävlingar som pågår för tillfället får du reda på genom att kika på TechWorlds avdelning för öppen källkod på www.techworld.se.
”En hel del projekt har
problem med att få utvecklare
som vill hjälpa till.”
Starta ditt eget projekt
Många utvecklares dröm är att starta och driva ett eget projekt. Vill du driva ett projekt har du tre val som alla innebär hårt arbete. Du kan ansluta dig till ett existerande projekt och arbeta dig uppåt i hierarkin. En hel del projekt har problem med att få utvecklare som vill hjälpa till och ser gärna att någon annan tar över stafettpinnen.
Ett annat alternativ är att ta över ett föräldralöst projekt. Via Debians sida kommer du åt listor över projekt som är ”orphans”, föräldralösa. Ta kontakt med den före detta projektansvarige och försäkra dig om att projektet verkligen är föräldralöst och adoptera det sedan.
Det tredje alternativet, och det tuffaste, är att starta ett projekt från början. Du får räkna med att vara ensam utvecklare ett tag och att bidragsgivare kommer och går.
Alla projekt är beroende av en viss infrastruktur och behöver marknadsföras. Ett av de enklaste sätten att komma i gång är att använda webbplatsen Sourceforge eller Ubuntus utvecklingsplattform Launchpad.
Launchpad erbjuder dig en webbplats där du lagrar koden under versionshanteringssystemet Bazaar. Projektet får bland annat en egen e-postlista, du får en ”bugg-tracker” där användare lägger in och spårar buggar, och du kan lägga upp en lista med förslag på framtida implementeringar. Kort sagt, Launchpad kan du använda för de grundläggande bitarna som måste finnas på plats för att ditt projekt ska lyfta.
Eclipse är en öppen utvecklingsmiljö som fungerar med flera system för versionshantering. Det är så nära Microsofts Visual Studio du kan komma. Google, Motorola, Microsoft och Qt är några som bygger en del av sin utvecklingsmiljö runt Eclipse.
Launchpad.net är en av de platser där du kan publicera din kod under ett versionshanteringssystem. Det är för närvarande stängd kod men Launchpad kommer att öppnas upp senast i november 2009. På bilden ser vi My SQL:s sida på Launchpad.net.
Det viktigaste sättet att kommunicera på för utvecklarna i ett projekt är via IRC. Här får du direktkontakt med dem som utvecklar koden. Flera utvecklare har jobbat ihop i många år på samma projekt och pratas vid dagligen via IRC men de har aldrig träffats i verkligheten.
Blogga om utvecklingen
Sedan är det givetvis ingen nackdel att ha en snygg hemsida och en blogg där du berättar om hur ditt projekt framskrider, men det är inget måste. Linuxkärnans hemsida ser exempelvis fortfarande ut som skräp, men den fyller sin funktion väl. Postfix och Sambas sidor är inte mycket bättre de heller. Gemensamt för de båda sistnämnda är att de är späckade med dokumentation.
En vettig hemsida består i sitt enklaste utförande av en Wiki som du kan komplettera med något bloggverktyg. Glöm inte att det viktigaste är ditt projekt och den kod du producerar.
I öppen källkod-gurun Eric S. Raymonds bok ”The Cathedral and the Bazaar” får du tipset ”release early – release often”. Du ska alltså släppa din kod i ett tidigt skede och du ska ha en snabb uppgraderingstakt. De flesta Linuxdistributioner kommer ut med nya versioner var sjätte månad.
Linuxkärnan, som kan räknas till ett av de större öppna projekten, kommer ut med en ny version var tredje månad. Projektet Wine, som är ett öppet Windows-api, släpper en ny version varannan vecka.
Vår rekommendation är ändå att inte vara alltför snabb med att släppa på koden om du ska starta ett projekt. Grundsatsen är att du bör ha något som åtminstone går att kompilera utan fel och som är tillräckligt moget för att din målgrupp ska nappa.
Tålamod och viljan att lära
Det är många projekt som vill ha duktiga bidragsgivare och det är svårt att skapa intresse för ett projekt som befinner sig på planeringsstadiet. När Linus Torvalds släppte Linuxkärnan var projektet inte längre på idéstadiet utan ett embryo till en kärna som till viss del gick att kompilera och använda.
Att bli en duktig utvecklare och en god communitymedlem är inget som sker över en natt utan det är resultatet av ett gediget och hårt hackande. Linuxkärnan släpptes till exempel för hela 17 år sedan. Wineprojektet tog 15 år på sig att nå version 1.0. Men är du bara tålmodig, villig att lära och gillar dynamiken som finns hos öppen kod är det bara en tidsfråga innan du når toppen. Var så säker på det!
Illustraion: Jonas Englund
» Så går du vidare, länkar:
- ldn.linuxfoundation.org/book/how-participate-linux-community – Linux Foundation beskriver hur du blir en god kärnhackare.
- https://fedoraproject.org/wiki/Main_Page – Fedora har flera möjligheter till ett aktivt communityarbete.
- www.ubuntu.com/community/participate – Ubuntu vill ha hjälp med design, support, utveckling och buggkrossning.
- en.opensuse.org/How_to_Participate – Opensuse har också en mängd möjligheter för blivande öppen källkods-experter.
- www.mandriva.com/en/community/start – Mandrivas communitysida.
Sverige har många duktiga och framstående utvecklare av öppen källkod. Daniel Nylander är en av dem. Han beskriver sig själv som en perfektionist som lägger ner alldeles för många timmar på öppen källkod. Idogt hackande och översättande har gett honom en nominering till Nordic Free Software Award.
Daniel Nylander är också ett lysande exempel på att man inte behöver ha djuplodande programmeringskunskaper för att komma riktigt långt.
Vilka f/oss-projekt är du involverad i?
– Det är alltför många. Några exempel är Gnome, Gnu, Debian Gnu/Linux, Ubuntu, mediespelaren VLC, Evolution, Gimp, Virtualbox, Wine och Gnu PG.
Hur kom det sig att du började?
– Hela mitt engagemang började med att min far hade stora problem med att lämna röstmeddelanden på min hemtelefon. Han kan knappt ett ord engelska och jag använde på den tiden telefonväxeln Asterisk med de engelska rösterna. Hans samtal blev bara en massa tomma röstmeddelanden. Då bestämde jag mig för att spela in svenska röster för samtliga menyer i telefonväxeln. Det väckte mitt intresse för öppen källkod och eftersom jag programmerar som en kratta engagerade jag mig i lokalanpassning av program. Med åren har det blivit fler än tusen program.
Hur ser din utvecklingsmiljö ut?
– Jag kör flera olika virtuella plattformar för att testa olika programversioner. Mitt favoritprogram är Poedit för översättningar men jag använder också flera olika verktyg för att checka in patchar (subversion, cvs, git, bzr med flera).
Hur tror du att man kan få fler människor engagerade inom öppen källkod?
– Många tror att man måste kunna programmera för att kunna engagera sig inom öppen källkod. Det är givetvis fel, det finns många sätt att delta i gemenskapen. Det absolut enklaste sättet är att hjälpa andra att använda program med öppen källkod.
Vilka tips vill du ge till någon som är intresserad av att skriva öppen källkod men som inte vet var de ska börja?
– Använd standardiserade bibliotek, uppfinn inte hjulet igen. Det finns många källor på internet där man kan få hjälp att komma igång. Fundera på vad ditt program ska fylla för funktion. Använd gemenskapen! Lägg upp ditt projekt på en utvecklarportal, exempelvis Launchpad eller Sourceforge.
Hur pass ”bra” måste du vara som programmerare för att bli accepterad?
– Du måste inte kunna programmering även om det är ett stort plus i kanten. Att rapportera fel i program, skriva små programfixar, rätta felstavningar samt översättningar är också ett sätt att dra sitt strå till stacken.
1. Läs boken The Cathedral and the Bazaar, skriven av Eric S. Raymond. Eric var med och myntade begreppet open source. Ursprungsmaterialet till hans bok fick Netscape att öppna koden. Bra källa till inspiration.
2. Lär dig versionshantering. Den stora majoriteten av alla öppna projekt använder program för att hålla koll på koden. Du bör lära dig ett eller flera av dem. Git, Mercury, Bazaar och Subversion är exempel på versionshanteringssystem du bör känna till.
3. Börja med buggrapportering. Det är inte bara roligt, utan också ett bra sätt att få kontakt med andra utvecklare i projektet. Du blir dessutom successivt bättre och bättre på både felsökning och kodning. De flesta projekt är i behov av fler testare – det gäller speciellt under den tidiga utvecklingsfasen.
4. Lär dig paketering. Oavsett vilken plattform eller distribution du har valt att utveckla för måste programmen till slut paketeras. Se till att lära dig minst ett paketformat. Alla distributioner är beroende av paketerare. Dina kunskaper inom paketering kan på sikt skapa dig en fin position hos någon av de mer kända distributionerna.
5. Häng på IRC. Det är här utvecklarna håller till när de inte sover. Var inte rädd för att fråga och tala även om att du gärna vill vara med och hjälpa till.
6. Var trevlig, ödmjuk och följ etiketten. Det handlar om att ha kul tillsammans. Ingen gillar en besserwisser.
7. Ta dig till något av de arrangemang som anordnas. IRC i all ära men det slår inte att svepa ett par öl med de övriga i projektet och prata om allt mellan himmel och jord.