Prefață
De ce a fost scrisă această carte?
La petreceri, oamenii nu mai rămân pierduți când le spun că eu
scriu software gratuit. Ei ma întreabă "A, da, open-source—ca și Linux?"
Eu dau din cap în semn de aprobare. "Da, exact! Cu asta mă ocup."
E plăcut să nu mai lucrezi într-un domeniu complet necunoscut.
În trecut, următoarea întrebare era destul de previzibilă: "Cum faci
bani făcând asta?" Pentru a răspunde, aș fi rezumat economia din spatele
mișcării open-source: că există organizații care sunt interesate de
existența anumitor aplicații dar care nu au nevoie să vândă copii
ale acestora ci doar să se asigure ca software-ul este disponibil și
întreținut, ca o unealtă și nu ca un bun.
Cu toate acestea, în ultima vreme următoarea întrebarea nu a mai
fost întotdeauna despre bani. Afacerile bazate pe open-source
Termenii ”open-source” și ”gratuit” sunt, în esență,
sinonime în acest context; ei sunt discutați mai mult în
în
. nu mai
reprezintă un asemenea mister și majoritatea non-programatorilor
înțeleg—sau cel puțin nu sunt surprinși—că există oameni
care sunt angajați în acest domeniu cu norma întreagă. În schimb,
întrebarea pe care o aud din ce în ce mai des este"Cum funcționează asta?"
Nu aveam un răspuns satisfăcător pregătit și, cu cât încercam
mai greu să formulez unul, cu atât realizam mai bine ce temă complicată este.
Conducerea unui proiect de software gratuit nu este întocmai ca și conducerea
unei afaceri (imaginați-vă să fiți nevoiți să negociați în mod constant
cu un grup de voluntari pe care, în marea lor majoritate, nu i-ați
întâlnit niciodată. Din diferite motive nu seamănă perfect cu conducerea
unei organizații non-profit și nici cu un guvern. Are unele puncte
similare tuturor acestora dar am ajuns încet la concluzia că software-ul
gratuit este sui
generis. Există multe lucruri cu care poate fi comparată
dar niciunul cu care să fie egală. Până și presupunerea că proiectele de
software gratuit pot fi conduse este dusă la extrem. Un proiect de software
gratuit poate fi demarat,
și poate fi influențat chiar puternic de către părțile interesate.
Dar bunurile lui nu pot deveni ale unui singur proprietar și, atâta vreme cât
există oameni undeva —oriunde—care să fie interesați de
continuarea lui, nu poate fi terminat în mod unilateral. Toată lumea are
putere infinită; toată lumea este lipsită de putere. Dinamica acestui fenomen
e interesantă.
De aceea am vrut să scriu această carte. Proiectele de software gratuit
au evoluat într-o cultură distinctă, un etos în care libertatea de a face
aplicația să facă orice reprezintă canonul principal, și totuși rezultatul
acestei libertăți nu este o împrăștiere a indivizilor în care fiecare
să meargă în direcția lui proprie cu codul ci colaborarea entuziastă.
Într-adevăr, competența în cooperare este una dintre cele mai valoroase
abilități în software-ul gratuit. Conducerea unui astfel de proiect
înseamnă angajarea într-o cooperare hipertrofiată unde nu numai abilitatea
de a lucra cu ceilalții dar și abilitatea de a găsi noi modalități de a lucra
împreună pot aduce beneficii tangibile aplicației. Această carte încearcă să
descrie tehnicile prin care se poate realiza acest lucru. Nu este completă
dar reprezintă cel puțin un început în acest sens.
Software-ul gratuit de calitate reprezintă el însuși un țel valoros și
sper ca cititorii care caută în această carte modalități prin care să-l
atingă să fie satisfăcuți de ce vor găsi. Dincolo de acest scop sper și să
transmit o parte din pura plăcere pe care o ai când lucrezi cu o echipă
motivată de dezvoltatori open-source și din minunata interacțiune directă
cu utilizatorii pe care mișcarea open-source o încurajează. Participarea
într-un proiect open-source de succes este distractivă
și, în cele din urmă, asta face ca sistemul să meargă înainte.
Cine ar trebui să citească această carte?
Cartea aceasta se adresează programatorilor și managerilor care
se gândesc să inițieze un proces open-source sau au pornit unul și se
întreabă ce să facă de-acum încolo. Ar trebui să fie utilă și celor
care doresc doar să participe la un proiect open-source dar care nu
au mai făcut așa ceva niciodată.
Cititorul nu trebuie să fie neapărat un programator dar trebuie
să înțeleagă concepte de bază ale ingineriei software cum ar fi cele de
cod sursă, compilator și patch.
Experiența anterioară cu aplicațiile open-source, ca și utilizator
sau dezvoltator, nu e necesară. Celor care au mai lucrat înainte la
proiecte de software gratuit li se vor părea puțin evidente anumite părți
ale cărții și ar putea dori să sară peste acele porțiuni. Pentru că
experiența anterioară a cititorului se poate situa oriunde într-o gamă
atât de largă,
am încercat să etichetez secțiunile cât mai clar și să menționez când
pot fi omise de către cei care deja cunosc subiectul.
Surse
O mare parte din materialul prezentat în această carte
e rezultatul a cinci ani de muncă la proiectul Subversion
(). Subversion este un sistem
de control al versiunii open-source, scris de la zero, care intenționează
să înlocuiască aplicația CVS ca și sistem de control al versiunii ales
de facto în comunitatea open-source. Proiectul
a fost demarat de angajatorul meu, CollabNet
(), la începutul anului 2000 și am avut
norocul ca ei să înțeleagă de la început cum să conducă proiectul ca pe rezultat
al unei colaborări distribuite. Am avut parte de participarea multor
dezvoltatori voluntari devreme în istoria proiectului; astăzi există
aproximativ 50 de dezvoltatori dar puțini dintre ei sunt angajați CollabNet.
Subversion este, din multe puncte de vedere, un exemplu clasic
de proiect open-source și am preluat din el mai mult decât mă așteptam
la început. Acesta este mai degrabă rezultatul obișnuinței: oricând
aveam nevoie de un exemplu pentru un fenomen anume puteam găsi un exemplu
legat de Subversion din memorie. Pe de altă parte e și o problemă de
verificare. Deși sunt implicat în alte proiecte în diferite grade și
vorbesc cu prieteni și cunoștințe implicate în mult mai multe, toate
afirmațiile care sunt făcute în carte trebuie să fie verificate. Nu am
vrut să fac afirmații despre evenimentele din alte proiecte bazându-mă numai
pe ceea ce puteam citi în arhivele lor publice de discuții. Știam că dacă
o persoană ar fi încercat asta cu Subversion ar făcut afirmații din care doar
o jumătate ar fi fost adevărate. Astfel, când m-am inspirat sau am
creat exemple pe baza a ceea ce s-a întâmplat în alt proiect, am
încercat prima dată să vorbesc cu cineva de-acolo, o persoană în care
să am destulă încredere cât să-i explic ce se întâmplă.
Subversion a fost munca mea timp de 5 ani dar am fost implicat
în software gratuit timp în ultimii 12. Printre celelalte proiecte care
au influențat această carte se află și:
Editorul text GNU Emacs al Free Software Foundation, unde
mai întrețin câteva pachete mici.
Concurrent Versions System (CVS), la care am lucrat
intens între 1994–1995 cu Jim Blandy, dar la care
am mai fost implicat doar intermitent de atunci.
Colecția de proiecte cunoscute ca și Apache Software
Foundation, în special la proiectele Apache Portable Runtime
(APR) și Apache HTTP Server.
OpenOffice.org, Baza de date Berkeley din Sleepycat și
MySQL; nu am fost implicat personal în aceste proiecte dar
le-am observat și, în unele cazuri, am vorbit cu oamenii de acolo.
GNU Debugger (GDB) (la fel ca mai sus).
The Debian Project (la fel ca mai sus).
Desigur că lista aceasta nu este completă. La fel ca majoritatea
programatorilor open-source, am colaborări deschise la mai multe proiecte
doar pentru a avea o viziune asupra stării generale a lucrurilor. Nu le voi
menționa pe toate aici dar ele apar în text acolo unde își au sensul
Mulțumiri
Cartea aceasta mi-a ocupat de patru ori mai mult timp decât
am anticipat și mult timp am simțit-o ca pe un pian suspendat deasupra
capului meu oriunde mergeam. Fără ajutorul multor oameni nu aș fi putut
s-o termin și să rămân sănătos.
Andy Oram, editorul meu de la O'Reilly, a fost pentru mine visul
oricărui scriitor. Pe lângă faptul că deja cunoaște îndeaproape domeniul (
el a sugerat o mare parte din subiecte), are și rarul talent de a ști ce
vreau să transmit și să mă ajute să găsesc formularea corectă. A fost o onoare
să lucrez alături de el. Îi mulțumesc de asemenea lui Chuck Toporek care a
direcționat propunerea mea către Andy imediat.
Brian Fitzpatrick a corectat aproape întregul material pe măsură
ce îl scriam ceea ce nu numai că a făcut cartea mai bună dar m-a convins
să continui să scriu atunci când aș fi vrut să fiu oriunde în lume dar nu în fața
calculatorului. Ben Collins-Sussman și Mike Pilato au supravegheat și ei progresul
și au fost întotdeauna dornici să discute —câteodată în amănunțime—
orice temă doream să acopăr într-o anumită săptămână. Ei au observat și când am
încetinit și m-au mustrat cu blândețe când a fost nevoie. Vă mulțumesc, băieți.
Biella Coleman își scria dizertația în același timp în care eu scriam această
carte. Ea știe ce înseamă să te așezi și să scrii în fiecare zi și mi-a fost atât exemplu
cât și ureche plină de simpatie. De asemenea, ea are o viziune interesantă, de
antropolog, a mișcării pentru software gratuit și mi-a dat idei și referințe
pe care le-am putut folosi în carte. Alex Golub—un alt antropolog cu
un picior în lumea software-ului gratuit care își termina dizertația în aceeași
perioadă— a fost de un mare sprijin la începutul proiectului, ceea ce m-a ajutat
considerabil.
Micah Anderson niciodată nu părea prea asuprit de propria lui muncă de scris,
ceea ce m-a inspirat într-un mod bolnav și generator de invidie, dar mi-a
oferit întotdeauna prietenie, conversație și (cel puțin o dată) suport tehnic.
Mulțumesc, Micah!
Jon Trowbridge și Sander Striker mi-au oferit atât încurajări cât
și ajutor concret—experiența lor vastă în domeniu mi-a oferit material
pe care nu l-aș fi putut obține altfel.
Îi mulțumesc lui Greg Stein nu numai pentru prietenia și
încurajările venite la momentul potrivit dar și pentru că a arătat proiectului
Subversion cât de importantă este revederea regulată a codului pentru construirea
unei comunități de programatori. Mulțumiri și lui Brian Behlendorf, care
ne-a băgat în cap cu tact importanța discuțiilor purtate public; sper ca acest
principiu să fie reflectat în cuprinsul acestei cărți.
Mulțumiri lui Benjamin "Mako" Hill și Seth Schoen, pentru diferite
conversații despre software-ul gratuit și politica lui; lui Zack Urlocker
și Louis Suarez-Potts pentru că au rezervat timp în programele lor încărcate
pentru un interviu; lui Shane de pe lista Slashcode pentru că mi-a permis să
citez post-ul lui; și lui Haggen So pentru ajutorul enorm acordat în compararea
site-urilor de hosting.
Le mulțumesc și lui Alla Dekhtyar, Polina, și Sonya pentru încurajările lor
răbdătoare. Sunt foarte fericit că nu mai e nevoie să închei (sau, să încerc fără
succes să închei) serile noastre împreună devreme pentru a merge acasă să lucrez la
”carte”
Mulțumiri și lui Jack Repenning pentru prietenie, conversație și refuzul
încăpățânat de a accepta vreodată o analiză ușoară și greșită atunci când
există una mai dificilă dar corectă. Sper ca o parte din experiența lui îndelungată
cu dezvoltarea de aplicații și industria software să se resimtă în această carte.
Compania CollabNet a fost extrem de generoasă pentru că mi-a permis să
am un program flexibil în care să scriu și nu s-a plâns pentru că a durat mult mai mult
decât planificasem anterios. Nu cunosc toate detaliile modului în care conducerea
ia astfel de decizii dar suspectez că Sandhya Klute și, mai apoi, Mahesh Murthy
au avut ceva de-a face cu asta—le mulțumesc amândurora
Întreaga echipă de dezvoltare a proiectului Subversion a fost inspirația mea
în ultimii cinci ani și mult din ce am cuprins în această carte am învățat lucrând cu ei.
Nu o să îi menționez pe toți aici după nume pentru că sunt prea mulți dar rog fiecare
cititor care se întâlnește cu unul dintre participanții la proiect să-i cumpere
imediat o băutură la alegere—eu unul așa voi face.
De multe ori m-am plâns lui Rachel Scollon despre starea cărții;
ea a fost întotdeauna dornică să asculte și, cumva, a reușit să facă problemele
să pară mai mici decât înaintea discuției—mulțumesc.
Îi mulțumesc din nou lui Noel Taylor, care sigur s-a întrebat de ce
am vrut să scriu încă o carte dat fiind cât m-am plâns data trecută dar a cărui
prietenie și bună conducere a Golosá au făcut ca muzica și compania plăcută
să rămână în viața mea chiar și în cele mai aglomerate momente. Le mulțumesc și lui
Matthew Dean și Dorothea Samtleben, prieteni și parteneri în muzică, care au fost
foarte înțelegători că nu exersam. Megan Jennings m-a sprijinit în mod constant și
a fost interesată de subiect chiar dacă nu îi era cunoscut—un tonifiant
bun pentru un scriitor nesigur. Mulțumesc, prieteni!
Am avut patru recenzori plini de cunoștințe și silitori pentru această
carte: Yoav Shapira, Andrew Stellman, Davanum Srinivas, și Ben Hyde. Dacă
aș fi reușit să includ toate sugestiile lor excelente, această carte ar fi fost
mai bună. Așa cum s-a întâmplat, constrângerile de timp m-au obligat să aleg
dintre ele dar îmbunătățirile au fost oricum semnificative. Orice greșeli care
au mai rămas sunt în întregime ale mele.
Părinții mei, Frances și Henry, m-au sprijinit la fel de mult ca întotdeauna,
și, de vreme ce această carte e mai puțin tehnică decât cea anterioară, sper că
li se va părea mai ușor de citit.
În cele din urmă aș vrea să le mulțumesc celor cărora le dedic cartea aceasta,
Karen Underhill și Jim Blandy. Prietenia și înțelegerea lui Karen au însemnat
totul pentru mine, nu doar în timp ce am scris această carte ci în ultimii șapte
ani. Nu aș fi putut termina cartea fără ajutorul ei. De asemenea pentru Jim,
un prieten adevărat și un hacker al hacker-ilor, care m-a învățat despre
open-source cam la fel cum o pasăre ar putea învăța un avion să zboare.
Precizări (limitare a responsabilității)
Gândurile și părerile exprimate în această carte sunt ale mele.
Ele nu reprezintă în mod necesar punctul de vedere al CollabNet sau al
proiectului Subversion.