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.