Capítol 4 - La producció del programari lliure
El model de producció del programari lliure ha demostrat tenir un èxit considerable i ser altament productiu en el desenvolupament de programes tan complexos com ara el Linux o l'Apache. Més enllà del programari, projectes com ara la Wikipedia1 o l'Open Directory2 mostren que aquest model és exportable a altres tipus de creacions intel·lectuals.
Motius que impulsen el desenvolupament del programari lliure
A primera vista, pot semblar sorprenent que un programari que ha requerit milers d'hores de desenvolupament es distribueixi de forma lliure, i sense cap cost, a través de la Xarxa i altres mitjans, tant físics com digitals. Els incentius i motivacions que poden portar a una persona a contribuir al desenvolupament del programari lliure són variats, i en general, al contrari del que es podria pensar, els de caràcter econòmic no són els principals.
Motivacions socials
Diversió. Linus Torvalds explica3 que, com molts altres hackers, va començar a treballar en el desenvolupament de Linux simplement per la diversió que implicava fer quelcom interessant. Un eix central en la cultura hacker ha estat sempre fer coses enginyoses que representen un repte, a més de ser una excel·lent manera de millorar el nostre coneixement. Enfrontar-se a un repte i trobar-hi una bona solució produeix un estat de satisfacció semblant al què experimenta un científic quan realitza un descobriment.
Reputació. La cultura del regal sempre ha tingut un paper important en les societats on hi ha hagut una certa abundància de béns i ha permès teixir enllaços socials més forts; en el programari lliure, tal com descriu Eric S. Raymond4, l'economia del regal en aquest entorn té com a objectiu el guany de reputació entre els altres membres de la comunitat.
Convicció ideològica. Quan Richard Stallman va crear la Free Software Foundation el 1984 i va iniciar el projecte GNU, la seva principal motivació era la creença que el programari lliure era necessari per preservar les llibertats dels usuaris i era bo per a la societat. Encara que no sempre és aquesta la motivació principal que impulsa una persona a col·laborar en un projecte lliure, no hi ha dubte que és un dels factors que hi influeixen enormement.
Motivacions tecnològiques
Resoldre un problema propi. Si un desenvolupador de programari té una necessitat determinada que no queda coberta per cap programa, és probable que escrigui el programa que necessita o, si troba un problema en una aplicació de tercers que vulgui resoldre, que col·labori en el projecte solucionant aquell problema concret.
Aprendre. El món del programari lliure és un excel·lent camp d'aprenentatge per als professionals de les tecnologies de la informació. Ofereix la possibilitat d'estudiar el codi font de milers de programes informàtics, participar-ne en el desenvolupament i correcció d'errors, o simplement millorar els coneixements generals seguint l'evolució de les diferents comunitats.
Motivacions econòmiques
Part d'un projecte empresarial o universitari. Són habituals els casos en què una empresa -com per exemple RedHat o Novell- té desenvolupadors que col·laboren en un projecte lliure, o una universitat que ha aconseguit suport financer per desenvolupar o millorar un projecte lliure. Aquests desenvolupadors, contribuint al programari lliure, estan realitzant la tasca per la qual reben una remuneració. En el cas de les empreses, és habitual contractar desenvolupadors que ja formaven part de la comunitat, és a dir, voluntaris que ja estaven contribuint al projecte i que ara s'hi podran dedicar a temps complet com a part de la seva feina.
Baix cost d'oportunitat. El programari lliure té unes barreres d'entrada molt baixes i ofereix un conjunt de recursos molt amplis que fan que, efectivament, el cost d'oportunitat sigui realment baix; qualsevol persona amb un PC i una connexió a Internet pot iniciar o contribuir a un projecte de programari lliure.
Reputació. El programari lliure aplica el model acadèmic tradicional de reconeixement de la feina per part d'altres participants de la comunitat. D'aquesta manera s'obté reconeixement del capital intel·lectual del participant, cosa que es pot traduir en oportunitats laborals. Molts dels desenvolupadors més destacats han rebut ofertes laborals de RedHat, Novell o Apple, entre d'altres, per treballar en projectes relacionats amb la seva activitat en el programari lliure. Per exemple, un dels líders del sistema operatiu lliure FreeBSD, Jordan Hubbar, fou contractat per Apple5 per treballar en el sistema operatiu per a Mac basat en FreeBSD.
Tots els estudis empírics que s'han realitzat a desenvolupadors de programari lliure demostren que sol ser una combinació d'aquests motius el que els impulsa a col·laborar en comunitats de programari lliure.
Perfil dels desenvolupadors de programari lliure
L'any 2002, el Boston Consulting Group va realitzar un estudi6 a 526 desenvolupadors de programari lliure per conèixer les motivacions per les quals contribueixen a aquests projectes. L'estudi afirma que les principals són l'estimulació intel·lectual, la millora dels coneixements i la convicció que el programari lliure és convenient. El 98% dels entrevistats eren homes, i el 70,4% tenien entre 22 i 37 anys d'edat. Quant a llur ubicació geogràfica, el 48% vivien als Estats Units i el 42,2% a Europa.
Durant l'any 2003, Karim R. Lakhani i Robert G. Wolf van realitzar un estudi basat en una enquesta via web a 684 desenvolupadors de programari lliure de 287 projectes diferents. Segons les conclusions de llur investigació, el perfil del típic programador és un home (97,5%) amb una mitjana d'edat de 30 anys. L'estudi conclou que millorar les habilitats com a programador i l'estimulació intel·lectual són els motius més habituals per escriure programari lliure, destacant que aproximadament el 40% dels enquestats contribuïen al programari lliure com a part de la seva feina.
Eines col·laboratives
El món del programari lliure ha desenvolupat i adaptat eines col·laboratives que permeten que grups de persones treballin de forma conjunta en el desenvolupament de projectes a través d'Internet.
La web ha tingut un paper central en el creixement d'Internet i, conseqüentment, en la difusió del programari lliure. Tots els projectes de programari lliure tenen un web que serveix de punt d'inici i trobada dels recursos que usuaris i desenvolupadors necessiten. Alguns projectes tenen llocs web propis i d'altres utilitzen repositoris públics com ara SourceForge.
Cada projecte sol tenir una o diverses llistes de distribució on es discuteix la direcció que pren el projecte, es plantegen possibles solucions a problemes complexos, i es prenen decisions sobre el procés de desenvolupament del programari. També és habitual disposar de canals de xat, que són molt més immediats i tenen una interactivitat superior a la del correu electrònic, i que solen utilitzar-se per resoldre problemes molt concrets de forma ràpida.
El codi font del projecte s'ubica en un servidor centralitzat, el qual gestiona un programari de control de versions. Aquests sistemes de control de versions funcionen com la columna vertebral del projecte: són sistemes que assenyalen les diferents versions del codi font per identificar-les posteriorment, faciliten la feina en paral·lel de grups d'usuaris, indiquen l'evolució dels diferents mòduls del projecte, i disposen d'un control detallat dels canvis que s'hi han realitzat. Totes aquestes funcions són indispensables durant la vida del projecte. Aquests sistemes no solament tenen aplicació en el desenvolupament del programari, sinó que, a més, són àmpliament utilitzats en la creació de documentació, llocs web i, en general, qualsevol projecte col·laboratiu que requereixi treballar amb equips de persones de forma simultània. El CVS7 (Concurrent Versions System) és el programa més utilitzat en el món del programari lliure per al control de versions de programari, i l'utilitzen projectes com ara el Mozilla, l'OpenOffice.org, el KDE o el GNOME, per esmentar-ne només uns quants.
Qualsevol usuari pot accedir al servidor on es troba el codi font d'un projecte, seguint la idea que tothom pot veure el codi, però només uns pocs disposen de privilegis per a l'addició de nou codi o la modificació de l'existent.
Un aspecte central en qualsevol projecte de programari és la gestió i el seguiment dels errors. Quan Netscape, el 1998, va alliberar el codi del Mozilla es va trobar amb la necessitat de tenir una aplicació de gestió d'errors via web que permetés la interacció entre usuaris i desenvolupadors. Van decidir adaptar a les necessitats d'un projecte obert l'aplicació que utilitzaven internament a les necessitats d'un projecte obert, i així va néixer el Bugzilla8. Inicialment va ser el sistema de gestió i seguiment d'errors del projecte Mozilla, però amb el temps ha estat adoptat per molts projectes lliures, incloent el KDE, el GNOME, o l'OpenOffice.org, entre d'altres. El Bugzilla permet als usuaris enviar errors facilitant-ne la classificació, l'assignació a un desenvolupador per tal que el resolgui, i tot el seguiment de les incidències relacionades.
Els projectes lliures tendeixen a crear documentació amb manuals d'ús i instal·lació o recopilatoris de preguntes i respostes més freqüents. Els sistemes Wiki9 i els seus derivats s'han convertit en eines molt populars per facilitar l'edició col·laborativa de contingut obert; aquestes eines permeten que els usuaris creïn i corregeixin qualsevol pàgina en un lloc del web, incentivant així la participació dels usuaris. Aquest és el mateix concepte i sistema que s'utilitza per produir l'enciclopèdia Wikipèdia.
Totes aquestes eines, juntament amb el talent dels membres dels diferents projectes, és el que fa possible la producció de programari lliure.
Organització de projectes lliures
El 1997, Eric S. Raymond publicà un assaig, amb el títol La catedral i el bazar10, que descrivia dos estils de desenvolupament en les comunitats de programari lliure. Tot i que es tracta d'un assaig i no està acompanyat de cap evidència empírica, i que ha rebut algunes crítiques per la seva falta de precisió, és cert també que s'ha convertit en un referent per a qualsevol que pretengui entendre com funciona l'organització de projectes lliures.
Raymond defensa que hi ha dos models d'organització de projectes lliures: la catedral i el basar. En el model “catedral” hi ha una jerarquia molt definida quant a la responsabilitat de cada àrea del projecte, i habitualment l'utilitza un grup reduït de persones. Aquest model té paral·lelismes en la forma en què es construïen catedrals en l'Edat Mitjana, ja que la construcció era un procés molt planificat. En el model “basar”, el desenvolupament es realitza entre molts desenvolupadors sense una jerarquia clara, de la mateixa forma que estan organitzats els basars a l'Orient.
Encara que ambdós models no són analogies perfectes per a tots els projectes de programari lliure, sí que defineixen dues estructures comunes, tot i que, lògicament, molts projectes són combinació d'ambdues en més o menys grau.
Presa de decisions
De vegades podem tenir la impressió que hi ha certa desorganització en els projectes de programari lliure, atesa la forma tan oberta en què es gestionen. La realitat és ben diferent, ja que hi ha tasques molt definides amb els seus respectius responsables. Encara que s'hi respira un ambient de cooperació, la majoria de projectes combinen contribucions d'empreses, voluntaris i institucions que, a més, representen sensibilitats diferents.
En els projectes petits hi ha un únic responsable de projecte. Es pot arribar a aquesta responsabilitat si s'és la persona que va fundar el projecte o si el fundador va passar el testimoni de la responsabilitat a una altra persona amb el vist-i-plau de la resta dels integrants del projecte. En projectes de gran envergadura, com per exemple Mozilla.org, la presa de decisions es distribueix entre un conjunt de persones11. A cadascuna d'elles se li assigna un mòdul sobre el qual té potestat. Els responsables del projecte prenen decisions com ara si s'ha d'acceptar o no una contribució externa concreta a un projecte -com ara la correcció d'un error-, quan s'han d'alliberar les diferents versions del programari, o decidir quins errors és imprescindible corregir abans d'alliberar una nova versió.
Alguns projectes han formalitzat una mica més el procés de presa de decisions. El projecte Apache compta amb l'Apache Group, que està format per desenvolupadors que hi han col·laborat durant un període llarg de temps i que s'escullen per votació12 per formar part del nucli de persones que prenen les decisions. El projecte FreeBSD té també un consell format per desenvolupadors que han participat activament en el projecte, i que són els responsables de les decisions més importants. Com es pot veure, s'aplica un sistema meritocràtic mitjançant el qual els responsables són escollits segons la feina que han aportat al projecte.
Exemple: la comunitat Abiword
Abiword és un projecte que té com a objectiu produir un processador de textos lliure per a Unix, Linux, Mac i Windows. Durant els dos primers anys va ser desenvolupat per SourceGear, en col·laboració amb la comunitat, fins que l'any 2000 va passar a ser un projecte mantingut exclusivament per una comunitat de voluntaris liderada per Dom Lachowicz13.
Lachowicz fou elegit responsable de projecte per acord de tots els integrants. Actualment existeix, a més, un responsable de la versió per a Linux, un altre per a la de Mac, i un altre per a la de Windows (que resulta ser l'autor d'aquestes línees), que s'encarreguen d'assegurar que les versions respectives van incorporant el codi necessari per a cada plataforma. Avui dia, Abiword compta amb 12 desenvolupadors considerats principals i, des dels seus inicis, 250 voluntaris hi han col·laborat millorant l'aplicació així i també traduint-la a més de 50 llengües.
Els usuaris i desenvolupadors d'Abiword es comuniquen diàriament a través de les diferents llistes del projecte14 i del canal Abiword del servidor de xat gimp.org. Setmanalment es recopila el més important que s'ha esdevingut en el desenvolupament de l'aplicació, i aquest resum es publica en un butlletí de notícies15. Aquestes notícies de caràcter setmanal són molt útils per poder continuar estant al dia en el desenvolupament del projecte en èpoques en què hom no disposa del temps necessari per poder llegir els missatges de la llista i anar apareixent pel canal de xat.
Anualment, una part del grup de desenvolupadors principals i entusiastes d'Abiword es reuneixen en la GUADEC16, que és la conferència anual de programadors de GNOME i que serveix de marc de trobada. En aquesta reunió presencial se solen acordar les funcionalitats que s'inclouran en les pròximes versions del projecte en base a les idees que els usuaris i desenvolupadors han anat comentant. La direcció que prendrà el projecte en els mesos següents es recull en el full de ruta17, que també indica qui serà el responsable d'implementar cada una de les noves funcionalitats.
L'Abiword, com altres projectes, té sempre dues versions de l'aplicació: una estable i una altra de desenvolupament. La versió estable és la que està pensada per als usuaris; els errors nous es van corregint a mesura que apareixen però no s'hi afegeix cap funcionalitat nova. La versió de desenvolupament, per la seva banda, inclou també les correccions que es van efectuant i a més tota la nova funcionalitat que la pròxima versió inclourà. Amb aquest sistema, sempre tenim una versió estable per oferir als nostres usuaris i una versió de desenvolupament, per a usuaris avançats i desenvolupadors, que reflecteix la direcció que prendrà el projecte.
Pel que fa a documentació per als usuaris de l'Abiword, el programa inclou una completa ajuda en línia, a què també es pot accedir via web, i una recopilació de les preguntes i respostes més freqüents basada en un sistema col·laboratiu tipus Wiki18. Els usuaris també tenen un paper molt important en la direcció que pren el projecte, ja que poden votar quins errors volen veure corregits en primer lloc19, poden proposar noves funcionalitats20 i poden informar de qualsevol problema que tinguin per tal que els desenvolupadors el tinguin documentat i el puguin corregir en versions successives del programa.
3 Vegeu el pròleg de La ética del hacker de Pekka Himanen
4 http://www.catb.org/~esr/writings/homesteading/homesteading/
5 http://www.workingmac.com/article/32.wm
6 http://www.bcg.com/opensource/BCGHACKERSURVEY.pdf
10 http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/
11 http://www.mozilla.org/hacking/module-ownership.html
12 http://www.apache.org/foundation/how-it-works.html
13 http://www.advogato.org/person/cinamod/
14 http://www.abisource.com/mailinglists/
15 http://www.abisource.com/information/news/
17 http://www.abisource.com/developers/2.2-roadmap.phtml
18 http://www.abisource.com/twiki/bin/view/Abiword/AbiWordFAQ