Indice
A volte, partecipando ad una festa, mi capita di pronunciare la frase "Io scrivo software libero". I primi tempi la gente mi guardava con aria perplessa, adesso rispondono "Ah, si, a codice aperto come Linux?" Annuisco compiaciuto. "Sì, esattamente! Ecco cosa faccio." Provo una piacevole sensazione nel non essere più considerato un alieno. In passato, la domanda successiva era generalmente scontata: "Come fai a guadagnare in questo modo?" Per rispondere, mi toccava riassumere l'economia dello sviluppo a codice aperto (meglio noto come open source): spiegavo che ci sono organizzazioni il cui interesse è di risolvere un problema attraverso un dato software, ma alle quali non serve venderne nemmeno una copia, basta che il programma sia disponibile e aggiornato, più come strumento che come merce.
Ultimamente, tuttavia, questa domanda successiva non è sempre stata legata al denaro. Il modello di business dei programmi a codice aperto[1] non è più così misterioso, ed un numero sempre maggiore di non addetti ai lavori già comprende — o per lo meno non rimane sconvolto — che alcune persone vi lavorano a tempo pieno. Invece la domanda che iniziano a pormi con maggior frequenza è "Interessante, ma come funziona?"
In principio non avevo una risposta soddisfacente a portata di mano, e più mi sforzavo di trovarne una, più mi rendevo conto quanto fosse difficile l'argomento. Dar vita ad un software libero non è esattamente come dirigere un'impresa (immagina di dover costantemente negoziare la natura del tuo prodotto con un gruppo di volontari, la maggior parte dei quali non li hai mai neppure visti in faccia). Tantomeno si può paragonare, per varie ragioni, ad organizzare e gestire un'associazione senza fini di lucro di tipo tradizionale, oppure governativa. Ci sono similitudini con tutte, ma alla fine sono lentamente giunto alla conclusione che il software libero è una cosa sui generis. I settori ai quali paragonarlo sono tanti, ma nessuno di questi è perfettamente uguale. A dirla tutta, persino l'assunzione che il software libero può essere "diretto", è una specie di forzatura. Un software libero può certamente essere avviato, ed il suo sviluppo può subire l'influenza di collaboratori interessati, anche in maniera forte. Ma le sue fondamenta non possono essere proprietà di un singolo, e finché ci sono persone in giro — ovunque — interessate nel suo sviluppo, non esiste modo unilaterale per cessarne la diffusione. Ognuno coinvolto ha un potere infinito, ed allo stesso tempo non ha nessun potere specifico. Dando vita ad una dinamica interessante.
Ecco il motivo per cui ho deciso di scrivere questo libro. I progetti che sviluppano software libero hanno fatto nascere una cultura differente, un'etica nella quale la libertà di creare programmi che facciano qualsiasi cosa si abbia in mente è al centro di tutto, e dove il risultato di questa libertà non sono individui sparpagliati che decidono separatamente come far evolvere il codice, ma è una collaborazione piena di entusiasmo. Proprio il "saper collaborare" diventa quindi una delle competenze di maggior valore, nel software libero. Gestire questi progetti vuol dire entrare a far parte di una specie di cooperazione ipertrofica, in cui l'abilità del singolo è di scoprire nuove metodologie per lavorare insieme, al fine di fornire tangibili benefici al software stesso. Questo libro vuol provare a descrivere le tecniche attraverso le quali tale processo può essere portato avanti. Non ha la pretesa di trattare l'argomento in maniera esaustiva, ma è pur sempre un inizio.
Fare del buon software libero è un obiettivo valido già di per sé. Spero quindi che il lettore desideroso di scoprire nuovi modi per raggiungere quest'obiettivo, si senta soddisfatto di ciò che troverà in questo libro. Ma soprattutto spero di trasmettere parte del puro piacere che si prova a lavorare con una squadra motivata di sviluppatori open source, e ad interagire con gli utenti nel modo meraviglioso che il software libero incoraggia. Partecipare alla progettazione di un programma aperto di successo è divertente, ed in definitiva è ciò che consente all'intero sistema di continuare ad esistere.
[1] I termini "codice aperto" e "libero" sono essenzialmente dei sinonimi in questo contesto, saranno discussi con maggior dettaglio in sezione chiamata «"Free" e "open source" a confronto» nel Capitolo 1, Introduzione.