Forord
Hvorfor skrive denne bog?
Til fester, er reaktionen når jeg fortæller at jeg udvikler fri
software ikke længere bare et stift blik ud i rummet. "Åh, ja, open
source—ligesom Linux?" siger de. Jeg nikker ivrigt. "Ja, præcis!
Det er det jeg beskæftiger mig med." Det er rart ikke at være komplet
på kanten(!) mere. Før i tiden var det næste spørgsmål normalt rimeligt
forudsigeligt: "Hvordan tjener du penge på det?". Som svar, ville jeg så
kort ridse økonomien omkring open source op: at der er visse
organisationer hvis interesse det er at noget bestemt software eksisterer,
men at de ikke nødvendigvis behøver at sælge kopier af det, men bare vil
være sikker på at softwaren er tilgængelig og bliver vedligeholdt, mere
som værktøj end som en handelsvare.
På det sidste, har det næste spørgsmål dog ikke altid været om
penge. Forretningsmetoden(!) for open source software
Betegnelserne "open source" og "fri" er i denne sammenhæng i det
væsentligste synonymer; de behandles yderligere i i . er ikke længere så
mystisk, og mange ikke-programmører forstår, —eller er i det
mindste ikke overaskede over—at der er folk der arbejder med det
på fuld tid. Istedet er spørgsmålet jeg hører mere og mere
"Okay, hvordan virker det så?"
Jeg havde ikke et tilfredsstillende svar klar, og jo mere jeg
forsøgte at finde et, jo mere måtte jeg indse hvor komplekst emnet
virkelig er. At drive et frit software projekt er ikke det
samme som at drive en forretning (forestil dig konstant at skulle
forhandle om dit produkts indhold med en gruppe frivillige, hvoraf de
fleste er nogen du aldrig har mødt!). Af forskellige årsager er det
heller ikke præcis som at drive en traditionel ikke-for-profit(!)
forening, eller en statsadministration(!). Det har lighedspunkter med
alle disse, men jeg er lige så langsomt kommet til den konklusion at
fri software er sui generis. Der er
mange ting det kan sammenlignes med, men ingen det kan ikke sidestilles
helt med. Selv antagelsen at et fri software projekt kan "drives" er
lidt af en tilsnigelse. Et frit software projekt kan startes
, og det kan påvirkes af interesserede parter, ofte temmelig
stærkt. Men projektets værdier kan ikke skifte ejerskab til en enkelt
ejer, og så længe der er folk et eller andet sted —et hvilket som
helst sted—som er interesserede i at fortsætte det, kan det ikke
lukkes af en enkelt part. Enhver har uendelig magt; enhver har ingen
magt. Det giver en interessant dynamik.
Derfor ønskede jeg at skrive denne bog. Fri software
projekter har udviklet en (distinct culture) unik kultur(!), et ethos(!)
hvori friheden til at få software til at gøre præcis hvad man vil en
en central tese(!), og dog er resultatet af denne frihed ikke en
spredning af individer der arbejder i hver deres retning med koden,
men entusiastisk samarbejde. Ja, blot kompetencen i samarbejde i sig
selv, er en af de mest værdsatte evner indenfor fri software. At styre
disse projekter er at kaste sig ud i en slags hypertrofi
abnorm forstørrelse af kropsdel eller organ-ramt
samarbejde, hvor ens evne til, ikke blot at arbejde med andre, men også
at finde på nye måder at arbejde sammen, kan resultere i betydelige
fordele for softwaren. Denne bog forsøger at beskrive teknikker hvormed
dette kan gøres. Den er på ingen måder komplet, men den er i det mindste
en begyndelse.
God fri software er et værdigt mål i sig selv, og jeg håber at
læsere som søger efter måder at opnå det på, vil blive tilfreds med hvad
de finder her. Men udover det, håber jeg også at kunne viderebringe noget
af den rene glæde det bringer at arbejde med et motiveret hold af open
source udviklere, og af at interagere med brugere på den herligt direkte
måde som open source tilskynder. At deltage i et successfuldt fri software
projekt er sjovt, og det er i sidste ende præcis det
der holder hele systemet kørende.
Hvem har interresse i at læse denne bog?
Denne bog er skrevet til softwareudviklere og ledere som
overvejer at starte et open source projekt, eller som har startet et og
nu er bekymret for hvordan de kommer videre. Den vil nok også kunne
hjælpe folk der bare vil deltage i et open source projekt, men aldrig
har gjort det før.
Læseren behøver ikke at være programmør, men bør kende til
grundlæggende koncepter indenfor software udvikling, såsom kilde kode,
kompilere og lapper til kilde kode (patches, herefter kaldet lap).
Forhåndserfaring med open source software, hverken som bruger eller
udvikler er ikke nødvendig. De som har arbejdet i fri software projekter
før vil nok opfatte dele af bogen som en smule indlysende, og vil måske
kunne springe disse dele over. Da der er så stort et spænd i læsernes
potentielle erfaringer, har jeg gjort meget ud af at navngive bogens
sektioner så de antyder hvilket erfaringsniveau de er henvendt til,
samt at fortælle når noget kan springes over af dem der er bekendt med
stoffet på forhånd.
Bogens kilder
Det meste af råmaterialet til denne bog er opstået ud af fem års
arbejde med Subversion projektet (). Subversion er et open source
versions kontrol system, skrevet helt fra bunden af, med intentionen om
at erstatte CVS som de facto valget for
versions kontrol systemer i open source fællesskabet. Projektet blev
startet af min arbejdsgiver, CollabNet (), tidligt i år 2000, og heldigvis
forstod CollabNet lige fra starten at drive det som en ægte
kollaborativ, distribueret opgave(!)(effort). Vi fik tidligt en masse
frivillige udviklere koblet på projektet, og i dag er der nogen og
halvtreds aktive udviklere, heraf er kun et fåtal CollabNet
medarbejdere.
Subversion er på mange måder et klassisk eksempel på et open
source projekt, og jeg endte med at referere mere til det i denne bog,
end jeg oprindeligt forventede. Dette til dels af bekvemmelighedsgrunde,
når jeg skulle bruge et eksempel på et bestemt fænomen, dukkede der som
regel et fra Subversion op i mit hoved som det første. Men også for at
kunne være helt sikker på mine kilders pålidelighed. Selvom jeg er
involveret i andre fri software projekter i forskellige grader, og
snakker med venner og bekendte der er involveret i mange andre, indser
man hurtigt at når man skriver til tryk, skal enhver antagelses sandhed
verificeres. Jeg ville ikke udtale mig om hændelser i andre projekter,
baseret på hvad jeg kunne læse i deres offentlige post-liste arkiver.
Hvis nogle gjorde det med Subversion, ved jeg at de ville have ret
omkring halvdelen af tiden, og tage fejl den anden halvdel. Så når jeg
hentede inspiration eller eksempler fra et projekt jeg ikke havde
direkte erfaring med, prøvede jeg først at finde en meddeler derfra, én
som jeg kunne stole på ville kunne forklare hvad der virkelig skete.
Subversion har været mit job i de sidste 5 år, men jeg har været involveret i fri software i 12. Andre projekter der har influeret denne bog er:
GNU Emacs tekst editor projektet hos Free
Software Foundation, i hvilket jeg vedligeholder nogle få små
pakker.
Concurrent Versions System (CVS), som jeg arbejdede
intenst på i 1994–1995 sammen med Jim Blandy, men som
jeg kun har været sporadisk involveret i siden.
Samlingen af open source projekter kendt som Apache
Software Foundation, specielt Apache Portable
Runtime (APR) og Apache HTTP Server.
OpenOffice.org, Berkeley databasen fra
Sleepycat, og MySQL databasen har jeg ikke personligt været
involveret, men har observeret dem, og i
nogle tilfælde snakket med folk derfra.
GNU Debugger (GDB) (som ovenstående).
The Debian Project (som ovenstående).
Dette er selvfølgelig ikke en komplet liste. Som de fleste open
source programmører, skæver jeg løbende til mange forskellige projekter,
bare for at have en fornemmelse af deres generelle tilstand. Jeg vil
ikke liste dem alle her, men de er nævnt i teksten ved lejlighed.
Tilegnelser
Denne bog tog fire gange længere tid at skrive end jeg troede,
og det meste af den tid føltes det som om jeg havde et større
klavermøbel svævende over hovedet hvorend jeg bevægede mig. Uden hjælpen
fra mange mennesker, ville jeg ikke have været i stand til at færdiggøre
den, og stadig være ved mine sansers fulde fem.
Andy Oram, min redaktør hos O'Reilly, var en forfatters drøm.
Bortset fra hans intime kendskab til området (han foreslog mange af
emnerne), har han den sjældne egenskab at kunne gennemskue hvad man
gerne ville have sagt, og hjælpe en til at finde den rette måde at
sige det på. Det har været en ære at arbejde med ham.
Tak skal også gå til Chuck Toporek for at styre mig i Andys retning
da jeg kun havde ideen til bogen.
Brian Fitzpatrick læste korrektur på næsten alt materialet mens
jeg skrev, hvilket ikke bare gjorde bogen bedre, men holdt mig i gang
med at skrive når jeg ønskede at være alle andre steder end foran
computeren. Ben Collins-Sussman og Mike Pilato fulgte også bogens
fremskridt, og var altid villige til at diskutere—nogen gange
længe—det emne jeg nu lige forsøgte at dække den uge. De lagde
også mærke til det når jeg gik ned i tempo, og stak forsigtigt til mig
når det var nødvendigt. Tak gutter.
Biella Coleman skrev hendes disputats samtidigt med at jeg skrev
denne bog. Hun ved hvad det betyder at sætte sig ned hver dag for at
skrive, og var et inspirerende eksempel såvel som et sympatisk øre.
Hendes fascinerende antropologiske indgansvinkel til fri software
bevægelsen, gav både ideer og referencer som jeg kunne bruge i bogen.
Alex Golub—endnu en antropolog med en fod indenfori fri software
verdenen, som også færdiggjorde hans disputats samtidigt—gav en
ekseptionel støtte tidligt i forløbet, hvilket var en stor hjælp.
Det lykkedes Micah Anderson at fremstå upåvirket af hans eget
skrive-job, hvilket var inspirerende på en sådan lidt syg,
misundelses-skabende måde, men han var altid klar med venskab, samtale
og (ved mindst en lejlighed) teknisk support. Tak Micah!
Jon Trowbridge og Sander Striker bidrog med både opmuntring og
konkret hjælp—deres brede erfaringsgrundlag indenfor fri software
gav materiale jeg ikke kunne have fået på andre måder.
Tak til Greg Stein, ikke kun for venskab og vel-placeret
opmuntring, men for at vise Subversion projektet, hvor vigtigt
regelmæssige kode gennemgange er i opbygningen af et
programmerings-fællesskab. Tak skal også gå til Brian Behlendorf,
som taktfuldt fik vigtigheden af at diskussioner skulle foregå
offentligt trommet ind i vores hoveder. Jeg håber det princip er
afspejlet gennem hele bogen.
Tak til Benjamin "Mako" Hill og Seth Schoen, for adskillige
samtaler om fri software og dets politikker. Til Zack Urlocker og Louis
Suarez-Potts for at tage tid ud af deres travle kalendre for at blive
interviewet. Til Shane på Slashcode listen for at tillade mig at citere
hans meddelelse, og til Haggen So for hans enormt hjælpsomme
sammenligning af canned hosting(!) sider.
Tak til Alla Dekhtyar, Polina, og Sonya for deres unflagging(!)
og tålmodige opmuntring. Jeg er meget glad for at jeg ikke længere er
nødt til at afslutte (eller rettere, forsøge uden held at afslutte)
vores aftener tidligt for at gå hjem og arbejde på "Bogen".
Tak til Jack Repenning for venskab, samtale, og for stædigt at
nægte at acceptere en nem forkert analyse, når der er en svær men rigtig
tilgængelig. Jeg håber at noget af hans store erfaring med software-
udvikling og software-industrien er smittet af på denne bog.
CollabNet was exceptionally generous in allowing me a flexible
schedule to write, and didn't complain when it went on far longer than
originally planned. I don't know all the intricacies of how
management arrives at such decisions, but I suspect Sandhya Klute, and
later Mahesh Murthy, had something to do with it—my thanks to
them both.
The entire Subversion development team has been an inspiration
for the past five years, and much of what is in this book I learned
from working with them. I won't thank them all by name here, because
there are too many, but I implore any reader who runs into a
Subversion committer to immediately buy that committer the drink of
his choice—I certainly plan to.
Many times I ranted to Rachel Scollon about the state of the
book; she was always willing to listen, and somehow managed to make
the problems seem smaller than before we talked. That helped a
lot—thanks.
Thanks (again) to Noel Taylor, who must surely have wondered why
I wanted to write another book given how much I complained the last
time, but whose friendship and leadership of Golosá helped keep
music and good fellowship in my life even in the busiest times.
Thanks also to Matthew Dean and Dorothea Samtleben, friends and
long-suffering musical partners, who were very understanding as my
excuses for not practicing piled up. Megan Jennings was constantly
supportive, and genuinely interested in the topic even though it was
unfamiliar to her—a great tonic for an insecure writer. Thanks,
pal!
I had four knowledgeable and diligent reviewers for this book:
Yoav Shapira, Andrew Stellman, Davanum Srinivas, and Ben Hyde. If I
had been able to incorporate all of their excellent suggestions, this
would be a better book. As it was, time constraints forced me to pick
and choose, but the improvements were still significant. Any errors
that remain are entirely my own.
My parents, Frances and Henry, were wonderfully supportive as
always, and as this book is less technical than the previous one, I
hope they'll find it somewhat more readable.
Finally, I would like to thank the dedicatees, Karen Underhill
and Jim Blandy. Karen's friendship and understanding have meant
everything to me, not only during the writing of this book but for the
last seven years. I simply would not have finished without her help.
Likewise for Jim, a true friend and a hacker's hacker, who first
taught me about free software, much as a bird might teach an airplane
about flying.
Disclaimer
The thoughts and opinions expressed in this book are my own.
They do not necessarily represent the views of CollabNet or of the
Subversion project.