Il software libero o, meglio, la prassi di condividere programmi e codici sorgenti è invalsa fin dagli albori della scienza dell'informazione. In principio la condivisione era spontanea e data per scontata. I computer erano quasi esemplari unici costruiti artigianalmente e con oneri di manutenzione molto alti. Questi fattori facevano sí che solo grandi centri di calcolo, prevalentemente universitari e statali, oltre che militari, potessero permettersi di possederne uno.
Negli ambienti accademici era invalsa la pratica di condividere il frutto delle proprie ricerche e la pratica venne adottata anche per programmi. I programmi, poi, e le architetture per le quali venivano scritti, avevano caratteristiche peculiari che costringevano il software a essere riscritto per poterlo spostare da un ambiente operativo ad un'altro. Questo, ovviamente, ne rendeva la vendita assolutamente antieconomica. Il software consisteva principalmente in applicativi verticali altamente specializzati per risolvere problemi molto delimitati. Le applicazioni orizzontali come i wordprocessor ed i fogli di calcolo erano lungi dal comparire.
Con la crescente diffusione dei computer, la scrittura di programmi, non più pratica pioneristica, comincia ad attrarre l'attenzione delle imprese. I produttori di computer cominciarono a considerare conveniente la commercializzazione del software e pensarono di non limitare la loro offerta al solo sistema operativo. Per rendere redditizia l'attività si pensò conveniente stipulare degli accordi di non diffusione per proteggere il proprio operato.
Un brevissimo passo tratto da un saggio di Richard Stallman, "Il progetto GNU", illustra bene l'impatto che questa pratica ebbe su parte degli sviluppatori dell'epoca:
Questo significava che il primo passo per usare un computer era promettere di negare aiuto al proprio vicino. Una comunità cooperante era vietata. La regola creata dai proprietari di software proprietario era: "se condividi il software col tuo vicino sei un pirata. Se vuoi modifiche, pregaci di farle". (tratto da Richard Stallman - Il progetto GNU)
La standardizzazione dell'hardware e la diffusione dei computer presso il grande pubblico fece si che in pochissimi anni la situazione si ribaltasse. Se fino alla prima metà degli anni '70 condividere software era scontato, gli anni '80 videro la diffusione a macchia d'olio del software proprietario. Da prassi comune, la condivisione dei propri programmi diviene un gesto fortemente critico delle dinamiche di mercato, tanto che Richard M. Stallman, uno dei principali propugnatori del software libero e fondatore del progetto GNU e della Free Software Foundation, scrive di quegli anni:
Una volta che il mio gruppo si fu sciolto, continuare come prima fu impossibile.
Mi trovai di fronte a una difficile scelta morale. La scelta facile sarebbe
stata quella di unirsi al mondo del software proprietario, firmando accordi di
non-diffusione e promettendo di non aiutare i miei compagni hacker.
[...]
In questo modo avrei potuto guadagnare, e forse mi sarei divertito a programmare.
Ma sapevo che al termine della mia carriera mi sarei voltato a guardare indietro,
avrei visto anni spesi a costruire muri per dividere le persone, e avrei compreso
di aver contribuito a rendere il mondo peggiore.
[...]
Un'altra possibile scelta, semplice ma spiacevole, sarebbe stata quella di
abbandonare l'informatica. In tal modo le mie capacità non sarebbero state mal
utilizzate, tuttavia sarebbero state sprecate. Non sarei mai stato colpevole di
dividere o imporre restrizioni agli utenti di calcolatori, ma queste cose sarebbero
comunque successe.
Allora cercai un modo in cui un programmatore potesse fare qualcosa di buono.
Mi chiesi dunque: c'erano un programma o dei programmi che io potessi scrivere,
per rendere nuovamente possibile l'esistenza di una comunità?
La risposta era semplice: innanzitutto serviva un sistema operativo. Questo è
difatti il software fondamentale per iniziare a usare un computer. Con un
sistema operativo si possono fare molte cose; senza, non è proprio possibile far
funzionare il computer. Con un sistema operativo libero, avremmo potuto avere
nuovamente una comunità in cui hacker possono cooperare, e invitare chiunque a
unirsi al gruppo. E chiunque sarebbe stato in grado di usare un calcolatore,
senza dover cospirare fin dall'inizio per sottrarre qualcosa ai propri amici.
(tratto da Richard Stallman - Il progetto GNU)Dalla stesura della definizione di software libero ai primi anni '90 passano diversi anni. In questo tempo nascono e si sviluppano, o falliscono, diversi progetti software. Uno in particolare, la creazione di un sistema operativo completamente libero, dopo un impulso iniziale langue nonostante sia stato quasi del tutto completato.
Manca il Kernel, lo strato più interno del sistema, quello a contatto con l'hardware. Un componente delicato perchè deve interagire direttamente con le centinaia di periferiche presenti sul mercato che possono comporre un computer.
Il "la" al progetto che porterà alla stesura di un kernel funzionante viene dato da uno studente finlandese, Linus Torvalds, e prenderà il nome di Linux proprio dall'ispiratore e principale, almeno inizialmente, sviluppatore. Al di la del successo dell'iniziativa, il progetto è importante per un fattore che inizialmente passerà inosservato o, meglio, a cui non viene data da subito la rilevanza che merita.
Se la licenza sotto cui viene distribuito e sviluppato Linux resta pur sempre la licenza libera stilata da Stallman (v.), cambia radicalmente il metodo di sviluppo del software. In un libro, "La cattedrale ed il Bazaar", Eric Rymond, altro propugnatore del software libero della prima ora, analizza tale modello di sviluppo e lo descrive contrapponendolo a quello fino ad allora dominante.
Il modello di sviluppo Tradizionale viene indicato da Raymond come "a cattedrale". In tale modello pochi sviluppatori, spesso solo uno, si occupano di sviluppare un programma e di rilasciarlo sotto licenza libera una volta che venga reputato stabile,in modo cha altri possano utilizzarlo, modificarlo e migliorarlo. I tempi di rilascio sono lunghi, spesso legati alla disponibilità degli sviluppatori di portare avanti il singolo progetto.
Il modello che viene utilizzato per lo sviluppo di Linux viene chiamato "a bazaar". Differentemente dal modello precedente si cerca di massimizzare il numero di persone coinvolte nel progetto. Per fare ciò il software viene rilasciato (messo a disposizione di tutti) molto frequentemente, anche se imperfetto, in modo che chiunque ne abbia competenze e voglia possa intervenire nello sviluppo proponendo idee e risolvendo problemi che possano essere emersi.
Si tratta di due approcci completamente diversi. Tra di loro giace quella che viene comunemente chiamata "La legge di Brooks", che recita pressapoco così:
Al crescere del numero di programmatori coinvolti in un progetto, la quantità di
lavoro svolta aumenta proporzionalmente ma la complessità e la frequenza dei bug
aumenta col quadrato.
(Frederick P. Brooks - The mithical man-month).In altre parole, se il numero di programmatori dedicati ad un progetto aumenta troppo questo diventa ingestibile e lo sviluppo si blocca.
L'affermazione di Brooks sembrava descrivere talmente bene le dinamiche riguardanti lo sviluppo da essersi guadagnata la definizione di legge eppure, nel caso di Linux sembra fallire. Non è ambizione di questo scritto dimostrare se la valutazione di Brooks sia corretta oppure no, se sia corretto applicarla allo sviluppo di programmi liberi, oppure se lo sviluppo di Linux sia effettivamente uno sviluppo di tipo "bazaar" o non, piuttosto, un sistema misto.
E' importante in questo momento, invece, evidenziare come il più grosso cambiamento intervenuto riguardi la modalità di relazione all'interno della comunità degli sviluppatori. Se precedentemente la pratica predominante nel mondo del software libero riguardava la messa in comune dei risultati del proprio lavoro, con lo sviluppo a bazaar la cooperazione passa alla fase di creazione. Non si mette a disposizione degli altri il frutto del proprio lavoro ma si collabora attivamente fin dalle prime fasi di sviluppo.
continua ...
BFSF Wiki