Personliga verktyg
Du är här: Hem Dokumentation Tutorials Katedralen och basaren Open-sources sociala sammanhang
Dokumentåtgärder

Open-sources sociala sammanhang

Open-sources sociala sammanhang
Jag analyserar ett framgångsrikt open-source projekt, fetchmail, som medvetet kördes som en test av några överraskande teorier om utveckling av programvara, som kommer från Linux historia. Jag diskuterar dessa teorier utifrån två fundamentalt olika utveklingsmodeller, 'katedral-modellen', som flertalet i den kommersiella världen använder, kontra 'basar-modellen' från Linuxvärlden. Jag visar, att dessa modeller emanerar från motstridiga ansatser om felsökningens natur gällande programvara. Jag ger sedan en underbyggd argumentation för att Linuxerfarenheten "med ett tillräckligt antal ögon blir alla fel ytliga" visar analogi med andra självkorrigerande system av själviska agenter, och avslutar med en utredning om vad denna insikt betyder för programmeringskonstens framtid.
Page 11 of 16.

Det är sant som det är skrivet: de bästa hacken börjar som en personlig lösning till upphovsmannens vardagsproblem, och sprider sig eftersom problemet visar sig vara typiskt för en större grupp användare. Detta för oss tillbaka till innehållet i regel 1, omformulerat till ett kanske mer användbart teorem:

18. Vill man lösa ett intressant problem, ska man börja med ett som är är av intresse för en själv.

Så var det med Carl Harris och föregångaren Popclient, och med mig och fetchmail. Och det har länge varit känt. Det intressanta, som berättelserna om Linus och fetchmail kräver att vi koncentrerar oss på, är nästa steg - evolutionen av programvara inom ett stort och aktivt samhälle av användare och medutvecklare.

I "The Mythical Man-Month", konstaterar Fred Brooks att programmerartid inte är utbytbar; att lägga till utvecklare i ett sent skede i ett programvaruprojekt skapar ytterligare försening. Hans argumentation går ut på att komplexiteten och kommunikationskostnaden i ett projekt ökar med kvadraten på antalet utvecklare, medan nyttigt arbete endast ökar linjärt. Detta förhållande har sedermera blivit känt som "Brooks lag" och är en allmänt accepterad självklarhet. Men om Brooks lag vore hela sanningen, skulle Linux vara en omöjlighet.

Gerald Weinbergs klassiska "The Psychology Of Computer Programming" lade till i efterhand att man kan se en väsentlig korrektion till Brooks. I sin diskussion om "egoless programming", observerade Weinberg att på arbetsplatser där det saknas revirtänkande och där programmerarna uppmuntrar andra att leta efter fel och att föreslå förbättringar, där sker förbättringar också avsevärt snabbare än på andra ställen.

Weinbergs terminologi har kanske hindrat hans analys från att få den acceptans den förtjänar - man kan le åt hans beskrivning av internethackare som "egoless", men jag tycker att hans argument är mer oumbärliga idag än någonsin.

Unix historia torde ha förberett oss på vad vi nu lär oss av Linux (och som verifierats experimentellt i mindre skala genom att man plagierat Linus metod [EGCS]). Det vill säga, att medan programmering fortfarande väsentligen är en ensamaktivitet, så kommer de verkligt stora hacken när man mobiliserar uppmärksamhet och hjärnkraft från hela samhällen. Den utvecklare som endast använder sin egen hjärna i ett slutet projekt kommer att hamna efter den utvecklare som förstår att skapa en öppen och evolutionär miljö där återkoppling undersöker designrummet och där kodbidrag, felpåpekanden och andra förbättringar kommer från hundratals eller kanske tusentals individer.

Men den traditionella Unixvärlden hindrades av flera orsaker att använda detta arbetssätt fullt ut. Det fanns legala begränsningar i licenser, affärshemligheter och kommersiella intressen. En annan orsak vi kan se i efterhand var att Internet inte fanns eller var tillräckligt bra.

Före det billiga Internet, fanns det ett antal geografiskt avgränsade samhällen där kulturen uppmuntrade Weinbergs "egoless" programmering, och där utvecklare lätt kunde attrahera gott om skickliga belackare och medutvecklare. Bell Labs, MIT AI lab, UC Berkeley - dessa blev innovationsscentra som är legendariska och fortfarande aktiva.

Linux blev det första projektet där man gjorde en medveten och framgångsrik ansträngning att använda hela världen som en talangpool. Jag tror inte att det var en tillfällighet att beredningsperioden för Linux sammanföll med 'World Wide Web's tillkomst, och att Linux lämnade sitt småbarnsstadium samma period 1993-1994 som ISP-industrin (internetleverantörerna) startade och allmänhetens intresse för Internet exploderade. Linus var den förste som lärde sig att spela efter de nya regler som en allmän tillgänglighet till Internet medgav.

Emedan ett billigt Internet var en nödvändig förutsättning för att Linuxmodellen skulle uppstå, så tror jag inte att det var en tillräcklig förutsättning. En annan väsentlig faktor var framväxten av en ledarstil och en uppsättning kooperativa seder som kunde attrahera medutvecklare och på så sätt få ut maximal hävstångseffekt ur detta medium.

Men vad består denna ledarstil av och vilka är dessa seder? De kan inte baseras på maktrelationer - och även om så skulle vara, så skulle inte ledarskap genom tvång kunna producera de resultat vi ser. Weinberg citerar den ryske 1800-tals anarkisten Pyotr Alexeyvich Kropotkins självbiografi "Memoirs of a Revolutionist" för att belysa ämnet:

Efter att ha vuxit upp i en familj som ägde livegna tjänare, började jag mitt aktiva liv, liksom de flesta unga män på min tid, med stor portion tro på nödvändigheten av att kommendera, beordra, banna, bestraffa och dylikt. Men när jag, vid ett tidigt skede, blev tvungen att sköta seriösa verksamheter och göra affärer med [fria] människor, och när felgrepp omedelbart skulle få allvarliga konsekvenser, då började jag inse skillnaden mellan att agera efter principer om befallning och disciplin och att agera efter principer om ömsesidig förståelse. Det förstnämnda fungerar bra för militärparader, men har inget värde i det verkliga livet, där mål kan nås enbart genom hårda insatser från många konvergerande viljor.

Just "hårda insatser från många konvergerande viljor" är vad som behövs i ett projekt som Linux - Och "principer om befallning" är absolut omöjligt att tillämpa på det anarkisternas paradis som kallas Internet. Om det skall fungera effektivt, så måste hackare som vill leda samarbeten lära sig hur man rekryterar och motiverar intressegemenskaper på det sätt som ges av Kropotkins "principer om ömsesidig förståelse". De måste lära sig att använda Linus lag. [SP]

Tidigare refererade jag till "Delphi effekten" som en möjlig förklaring av Linus lag. Men det finns mer träffande analogier med adaptiva system inom biologi och ekonomi som oemotståndligen tränger sig på. Linuxvärlden beter sig på många sätt som en fri marknad eller ett ekologiskt system, en samling av själviska agenter som försöker maximera nyttigheter och som i denna process skapar en självkorrigerande spontan samordning som är mer fulländad och mer effektiv än vad någon centralplanering skulle kunna åstadkomma. Här är rätta platsen att söka efter "principer om ömsesidig förståelse".

Den 'nyttighetsfunktion' Linux hackare maximerar är inte klassisk ekonomi, utan det abstrakta i deras ego-tillfredsställelse och ryktbarhet inför andra hackare. (Man skulle kunna beskriva deras motivation som 'altruistisk', men då glömmer man att altruism är en form av ego-tillfredsställelse bland altruister). Frivillighetskulturer som fungerar på detta sättet är inte ovanliga; en sådan som jag själv har deltagit i är "science fiction fandom" , vilken till skillnad från "hackerdom" länge uttryckligen har erkänt 'egoboo' (ego-boosting, eller att göra sig ett namn hos andra i gruppen) som den grundläggande drivkraften bakom frivilliga aktiviteter.

Linus, som framgångrikt placerade sig som gatekeeper i ett projekt där utvecklingsarbetet huvudsakligen görs av andra, och som drev fram projektet tills det blev självgående, har visat prov på skarpsinnig insikt i Kropotkins "princip om ömsesidig förståelse". Denna kvasiekonomiska syn på Linuxvärlden får oss att se hur denna "förståelse" tillämpas i verkligheten.

Man kan se Linus metod som ett sätt att skapa en verkansfull marknad för egoboo - att koppla samman själviskhet hos enskilda hackers så hårt som möjligt för att nå mål som är så svåra att de endast kan nås med uthålligt samarbete. Med fetchmail-projektet har jag visat (om än i mindre skala) att metoden kan plagieras med gott resultat. Kanske har jag gjort det en aning mer medvetet och systematiskt än han.

Många människor, särskilt de som misstror den fria marknaden, skulle nog tro att en kultur av självständiga egoister är fragmenterad, territoriell, slösaktig, full av hemlighetsmakeri och fientlighet. Men denna misstro är klart motbevisad av den förbluffande mångfald av Linuxdokumentation med kvalitet och djup. Det är en helig fördom att programmerare hatar att dokumentera. Hur kommer det sig då att Linuxhackers genererar så mycket av detta? Tydligen är det så att Linux fria marknad av 'egoboo' är bättre på att skapa ett sedesamt och utåtriktat beteende, än de kommersiella mjukvaruproducentarnas penningslukande dokumentationsfabriker.

Både fetchmail- och Linuxprojekten visar att man genom att på rätt sätt belöna 'egot' hos många hackare, så kan en stark utvecklare/koordinator använda Internet för att fånga in fördelarna med att ha många medutvecklare utan att projektet kollapsar i ett kaos. Så i motsats till Brooks lag föreslår jag följande:

19. Förutsatt att koordinatorn har ett medium minst lika bra som Internet, och förstår att leda utan tvång, är många hjärnor oundvikligen bättre än en.

Jag tror att framtiden för öppen källkod kommer att tillhöra dem som kan spela Linus spel, de som lämnar katedralmodellen bakom sig och omfamnar basarmodellen. Det betyder inte att individens visioner och briljans har spelat ut sin roll, snarare tror jag att frontlinjen inom öppen mjukvara tillhör människor som startar med visioner och briljans, och sedan förstärker dessa genom att bygga upp samhällen av frivilliga som delar deras intresse.

Kanske gäller detta inte bara open-source programvara. Ingen 'closed source'-utvecklare kan mäta sig med den talangpool som Linux-rörelsen kan uppbåda för att möta ett problem. Väldigt få kan ens ha råd att anställa de tvåhundra (1999:sexhundra, 2000:åttahundra) personer som har bidragit till fetchmail!

Kanske kommer open-source kulturen slutligen att triumfera, inte därför att samarbete är moraliskt rätt och programvaruhamstring moraliskt fel (förutsatt att du tycker det senare, vilket varken Linus eller jag gör), utan helt enkelt därför att den slutna världen (close-source-word) inte kan vinna den evolutionära kampen med open-source rörelserna, vilka kan lägga magnituder av mer kvalificerad arbetskraft och tid på ett problem.