IL SOFTWARE LIBERO E OPEN SOURCE Ma se 'è la crisi, perché compriamo software proprietario?

di Giulio Bigliardi giulio.bigliardi@ gmail .com - opentechne.wordpress.com

Quest'opera è stata rilasciata nel mese di Febbraio 2014 con licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/4.0/deed.it. Indice generale Premessa...... 2 1. Il software è nato libero...... 3 2. Libero software in libero stato...... 9 3. L'unione fa la forza...... 15 4. Or Open Source Software?...... 20 5. Il calabrone continua a volare...... 23

1 Premessa Free and Open Source Software (FOSS) è software liberamente rilasciato con licenze atte a concedere agli utenti il diritto di utilizzare, copiare, studiare, cambiare e migliorare il software attraverso la disponibilità del suo codice sorgente1. La dizione è stata adottata a partire dal 20032, anno in cui l'acronimo venne usato per la prima volta per comprendere entrambe le correnti del software libero: quella Free Software introdotta negli anni '80 da R. Stallman e sostenuta dalla Free Software Foundation, e quella Open Source, introdotta negli anni '90 principalmente da E. Raymond e sostenuta dall'Open Source Initiative. Sebbene FOSS e i suoi termini attinenti abbiano meno di 30 anni, il concetto dietro essi è antico quanto l’informatica stessa: condividere e modifcare il codice sorgente di un programma è una pratica comune e antica quanto la storia della moderna informatica.

1 Il codice sorgente (spesso detto semplicemente sorgente), in informatica, è il testo di un algoritmo di un programma scritto in un linguaggio di programmazione da parte di un programmatore in fase di programmazione. Il sorgente scritto dovrà essere opportunamente elaborato per arrivare a un programma eseguibile dal processore ponendosi dunque come punto di partenza ("sorgente") dell'intero processo che porta all'esecuzione del programma stesso e che può includere altre fasi come precompilazione, compilazione, interpretazione, caricamento e linking (a seconda del tipo di linguaggio di programmazione utilizzato) per concludersi con l'installazione. 2 http://www.terrybollinger.com/index.html#dodfoss

2 1. Il software è nato libero e la nascita del software proprietario

“There are two major products that came out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence.” Jeremy S. Anderson

Comunità software paragonabili alle attuali comunità FOSS esistevano molto tempo prima del movimento Free Software e della stessa defnizione di “free software”. Negli anni '50 e '60 del secolo scorso i programmi informatici erano prodotti principalmente da ricercatori universitari e aziendali che lavoravano in gruppo. Il codice sorgente veniva distribuito insieme al software e gli utenti modifcavano spesso i programmi per risolvere bug3 oppure aggiungere nuove funzioni. Il sistema A-2 sviluppato da Grace M. Hopper4 presso la divisione UNIVAC della Remington Rand è considerato il primo esempio di FOSS: nel 1953 venne rilasciato con il proprio codice sorgente e gli utenti furono invitati a inviare i loro miglioramenti. Analogamente, nel 1967 un sistema operativo mainframe IBM, il Programma di Controllo Aereo (ACP), venne distribuito con il codice sorgente. Si formarono così in quegli anni gruppi di utenti per facilitare il libero scambio di software: come quello della IBM 701, chiamato SHARE, oppure quello della Digital Equipment Corporation (DEC), chiamato DECUS. Proprio l'attitudine e la consuetudine alla libera divulgazione e circolazione dei risultati della ricerca rendevano completamene inutile parlare di software libero: tutto il software, all'epoca, era libero. Per comprendere come e perché si sia arrivati alla necessità di codifcare e defnire il software libero, in contrapposizione al software non-libero, è necessario partire proprio da quel periodo, durante il quale vennero gettate le basi – software e hardware – dell'informatica che conosciamo oggi. Il CTSS - Compatible Time-Sharing System è un sistema operativo sviluppato al MIT – Massachusetts Institute of Technology e presentato per la prima volta nel 1961. Si tratta di uno dei primi sistemi operativi in time-sharing che pose le basi per il successivo sviluppo di tali sistemi. Il time-sharing consiste nell’esecuzione contemporanea di diversi programmi applicativi

3 Nell'informatica il termine bug o baco identifca un errore nella scrittura di un programma software. Meno comunemente, il termine bug può indicare un difetto di progettazione in un componente hardware, che ne causa un comportamento imprevisto o comunque diverso da quello specifcato dal produttore. L'uso del termine bug, che in inglese indica genericamente un piccolo insetto, è legato ad un curioso aneddoto risalente ai tempi pionieristici dell'informatica: il 9 settembre 1947 il tenente Grace M. Hopper ed il suo gruppo stavano cercando la causa del malfunzionamento di un computer Mark II quando, con stupore, si accorsero che una falena si era incastrata tra i circuiti. Dopo aver rimosso l'insetto, il tenente incollò la falena rimossa sul registro del computer e annotò: «1545. Relay #70 Panel F (moth) in relay. First actual case of bug being found». Questo registro è conservato presso lo Smithsonian National Museum of American History. 4 Grace Murray Hopper (New York, 9 dicembre 1906 – Arlington, 1 gennaio 1992) è stata una matematica, informatica e militare statunitense. Defnita da molti una pioniera della programmazione informatica, ottenne il Ph.D. in matematica nel 1934 a Yale, insegnando per i due anni successivi presso Vassar, per poi entrare a far parte della Riserva della Marina nel 1943. Famosa per il suo lavoro sul primo computer digitale della Marina, Harvard Mark I, fu assegnata presso l'ufcio per l'Ordenance Computation Project dell'università di Harvard. La sua brillante carriera ebbe nel 1949 un momento di grande prestigio quando entrò nella Eckert-Mauchly Computer Corporation, la società che aveva sviluppato l'ENIAC, fra i primi computer digitali in circolazione, e che in quel periodo stava progettando l'UNIVAC I, ovvero quello che sarebbe stato il primo modello di computer commerciale.

3 indipendenti tra loro, e permette a più utenti, con i loro programmi in esecuzione, di interagire simultaneamente con il sistema centralizzato, ciascuno con un proprio terminale. I primi computer mainframe erano estremamente costosi e non era possibile garantire l'accesso esclusivo ad un singolo utilizzatore, ma dal momento che con la modalità di utilizzo a singolo utente i computer trascorrevano molto tempo in attesa dell'input dell'utente, si pensò di far utilizzare simultaneamente a più utenti lo stesso elaboratore, utilizzando i tempi morti per servire a rotazione i diversi utenti. La CPU del computer centrale venne utilizzata per rispondere alle richieste dei singoli utenti, passando rapidamente da uno all'altro dando così l'impressione ad ognuno di avere a disposizione il computer centrale interamente per sé, ovvero dando l'impressione di un processamento multiplo in parallelo di più processi verso più utenti. Il CTSS costituì la base per lo sviluppo di Multics - Multiplexed Information and Computing Service, altra pietra miliare nella storia dell'informatica, a cui lavorarono, a partire dal 1964, tre enti: il MIT, i Bell Laboratories (di propietà della AT&T Corp.) e la General Electric. Multics mise sul campo una serie di concetti e tecniche costruttive che sono ancora oggi elementi essenziali dei moderni sistemi operativi. Nella sua concezione originale avrebbe dovuto servire le necessità di calcolo dell'intera città di Boston e tra gli scopi principali del progetto vi era l'abilitazione di utenti remoti all'utilizzo di uno stesso computer, ed è per questo che il time-sharing doveva essere una delle caratteristiche fondamentali del sistema. Il sistema venne modifcato nell'arco degli anni seguenti per consentirne la portabilità su varie macchine, costituendo di fatto il primo software della storia ad essere in grado di funzionare in ambienti totalmente diversi. Il progetto si rivelò troppo complesso, specie per i ricercatori abituati ai sistemi operativi classici e perfettamente lineari, e nel 1969 la AT&T abbandonò il progetto ritenendolo poco utilizzabile nella pratica per le proprie esigenze. L'anno successivo subentrò così la Honeywell, acquistando la divisione computer della General Electric. La Honeywell commercializzò Multics a partire dal 1973, il prezzo dell'architettura hardware e del sistema operativo era di sette milioni di dollari; nonostante ciò i sistemi venduti nei venti anni successivi furono un centinaio. Lo sviluppo di Multics terminò nel 1985 e l'ultima installazione attiva venne defnitivamente spenta nell'ottobre del 2000 al Canadian Department of National Defence. Alcuni ricercatori dei Bell Laboratories non ritennero corretta la decisione presa di abbandonare il progetto Multics e decisero di continuarne lo sviluppo. Furono in particolare Ken Thompson e Dennis Ritchie a non arrendersi: fu proprio grazie ai loro sforzi che, su una vecchia macchina PDP-7, nacque la versione fnale di Unics (in seguito UNIX), nome che stava a sottolineare la semplicità del progetto rispetto alla mal gestita complessità di Multics. Il primo sistema operativo che può defnirsi a tutti gli efetti come UNIX fu sviluppato da Thompson nel 1969 per poter eseguire un programma chiamato Space Travel, che simulava i movimenti del sole e dei pianeti e il movimento di una navicella spaziale. Una causa antitrust contro la AT&T le vietò di entrare nel settore dell'informatica. AT&T decise quindi di distribuire UNIX ad un prezzo simbolico alle istituzioni universitarie, senza tuttavia il permesso di ridistribuire o modifcare il codice. In breve tempo si formò una comunità mondiale a livello universitario incentrata sullo sviluppo di nuove componenti e applicazioni per UNIX, coordinata dall'Università di Berkeley, da dove sarebbe poi uscita la versione BSD - Berkeley Software Distribution di UNIX. Questa versione è alla base di una delle due famiglie principali di sistemi operativi liberi attualmente più difusi, tra cui gli esponenti più noti sono FreeBSD, OpenBSD, NetBSD, PC-BSD, DesktopBSD, FreeSBIE, DarwinOS (il cuore UNIX di Mac OS X) e DragonFly BSD (con le sue distribuzioni FirefyBSD e GoBSD).

4 L'acronimo BSD viene usato anche per indicare la licenza BSD. In breve, la licenza consente la redistribuzione del software anche in forma proprietaria, purché venga riconosciuto il merito all'autore. Chi infatti modifca un programma protetto da licenze BSD, può ridistribuirlo usando la stessa o qualunque altra licenza (anche non libera), senza avere l'obbligo di redistribuire le modifche apportate al codice sorgente. Per questo molti esponenti del movimento Free Software consigliano di non utilizzarle, per poter meglio salvaguardare i proprietari dallo sfruttamento a fni commerciali del proprio lavoro da parte di terzi, utilizzando al suo posto una licenza che fornisca più tutele sulle opere derivate, come quella della Free Software Foundation (GNU GPL). Basti pensare, a titolo di esempio, che se il sistema operativo BSD fosse stato rilasciato sotto licenza GPL invece che BSD, la Apple non avrebbe mai potuto incorporare il sistema operativo Darwin (derivato da BSD) all'interno del suo OS X, di cui costituisce il cuore. Avrebbe potuto farlo solamente rilasciando OS X sotto la medesima licenza GPL. Ma la licenza del sistema operativo BSD consentiva la chiusura in senso proprietario e lo sfruttamento commerciale delle opere derivate e di conseguenza la Apple ha potuto includere il generoso lavoro altrui all'interno di un prodotto destinato al mercato senza violare alcunché. Questa pratica di cooperazione e libera difusione cominciò a cambiare negli anni ’70 quando i computer divennero prodotti commerciali e le aziende iniziarono a imporre restrizioni ai loro programmi attraverso il copyright allo scopo di trarne proftti. In realtà il software commerciale esisteva da sempre, ma i costi elevati dell'hardware facevano sì che il business delle aziende non fosse concentrato sul software, che era considerato una parte naturale del prodotto, ed i cui sorgenti erano in genere pubblici. Con il progressivo crollo dei costi dell'hardware, lo sviluppo commerciale del software divenne un business notevole, ed il codice sorgente divenne un investimento prezioso che poteva da un lato far acquisire una fetta di tale mercato in rapida crescita e dall'altro legare i propri utenti al proprio software mantenendo il segreto sui metodi utilizzati per lo sviluppo di sistemi e applicazioni. Le aziende iniziarono così a non distribuire i sorgenti e ad obbligare i propri dipendenti a non rivelare nulla per non avvantaggiare la concorrenza. Proprio in questi anni arrivarono le prime riforme riguardanti i diritti d'autore che aprirono alla tutela dei software e che si conclusero nel 1980 con l'emissione del Computer Software Copyright Act, che defnì il software come opera soggetta al diritto d'autore in quanto assimilabile ad una serie di istruzioni utilizzabili tramite un computer per ottenere un risultato. Nello stesso anno venne emesso anche l'atto normativo Bayh-Dole Act, che consente alle università di privatizzare i risultati delle ricerche, allo scopo di incoraggiare il trasferimento tecnologico, vale a dire la ricerca, lo sviluppo e l'applicazione commerciale delle scoperte della ricerca da parte delle aziende. In questo modo le aziende cominciavano ad utilizzare la legge sul diritto d'autore per impedire ai concorrenti di leggere e modifcare i loro prodotti, assicurandosi il controllo dei propri clienti che, senza più poter vedere e modifcare il codice sorgente del software, non potevano più adattarlo alle loro esigenze ma dovevano chiedere alle aziende di farlo per loro. Con lo smembramento di AT&T nel 1984 nelle famose sette baby-bells, società più piccole che operavano a livello locale, la condivisione gratuita di UNIX ebbe fne. Solamente alcune Università, come Berkeley in California, continuarono a sviluppare la loro versione derivata di UNIX. AT&T aveva dismesso la propria posizione di operatore dominante ed era diventato un carrier per le chiamate tra i vari stati. La commercializzazione di UNIX non conosceva quindi più ostacoli e pertanto UNIX System III (basato sulla settima versione) fu la prima release ad essere rilasciata dietro corrispettivo di un prezzo e senza codice sorgente. Seguì pochi anni dopo la versione UNIX System V, che includeva il supporto ad altre architetture. Alcune società ottennero un'apposita licenza di utilizzo del codice da parte di AT&T e cominciarono a ofrire versioni

5 commerciali di UNIX. Fu appunto da questa derivazione che Bill Joy creò SunOS (ora Solaris e OpenSolaris) e fondò Sun Microsystems nel 1982. Anche Microsoft ebbe la propria versione di UNIX, che chiamò XENIX, poi acquisita dalla SCO (Santa Cruz Operation). Tale deriva commerciale ormai dilagante, portò Richard Stallman a guidare una carica per difendere la posizione del Free Software, decidendo di scrivere un nuovo sistema operativo libero in grado di competere contro i ceppi commerciali del sistema operativo UNIX. “Di cosa ha bisogno la società? Ha bisogno di una informazione che sia realmente disponibile ai suoi cittadini, per esempio programmi che si possano leggere, correggere, adattare e migliorare, non soltanto usare. Ma quello che viene consegnato di solito dai proprietari del software è una scatola nera che non si può studiare o cambiare. La società ha anche bisogno di libertà. Quando un programma ha un proprietario, gli utenti perdono la libertà di controllare parte della loro stessa vita. Ma soprattutto la società ha bisogno di stimolare nei propri cittadini lo spirito di cooperazione volontaria. Quando i proprietari del software ci dicono che aiutare i nostri vicini in maniera naturale è “pirateria”, essi inquinano lo spirito civico della nostra società. Questo è il motivo per cui diciamo che il software libero è una questione di libertà, non di prezzo.” (R. Stallman) E' impossibile comprendere la flosofa dei movimenti liberi senza conoscere Richard Stallman.

--- per approfondire –-

Storia di UNIX UNIX è un sistema operativo portabile per computer inizialmente sviluppato da un gruppo di ricerca dei laboratori AT&T e Bell Laboratories (AT&T Corp.). Il primo sistema operativo che può defnirsi a tutti gli efetti come UNIX fu sviluppato da Ken Thompson nel 1969 per poter eseguire un programma chiamato "Space Travel" che simulava i movimenti del sole e dei pianeti, oltre al movimento di una navicella spaziale che poteva atterrare in diversi luoghi. Lo sviluppo di UNIX si deve in parte a un progetto precedente, Multics - Multiplexed Information and Computing Service a cui lavorarono, a partire dal 1964, tre enti: MIT- Massachusetts Institute of Technology, i Bell Laboratories (di proprietà della AT&T Corp.) e General Electric. Multics nacque con presupposti molto avanzati per l'epoca, in particolare era un sistema operativo time-sharing: permetteva cioè a più utenti di utilizzare simultaneamente lo stesso computer. Il progetto si rivelò troppo complesso, specie per i ricercatori abituati ai sistemi operativi classici e perfettamente lineari e nel 1969 la AT&T abbandonò il progetto ritenendolo poco utilizzabile nella pratica, a favore di un altro sistema nettamente più semplice, ma anche molto più modesto: GECOS. Alcuni ricercatori non ritennero corretta la decisione presa e decisero nonostante tutto di continuare lo sviluppo del progetto. Furono in particolare Ken Thompson e Dennis Ritchie a non arrendersi: fu grazie ai loro sforzi che, su una vecchia macchina PDP-7, nacque la versione fnale di UNIX, nome che stava a sottolineare la semplicità del progetto rispetto alla mal gestita complessità di Multics. L'invenzione del linguaggio di programmazione C costituisce una fase importante nella storia di UNIX. Il C, sviluppato da Thompson e Ritchie tra il 1969 e il 1973, ha permesso di portare il kernel, ossia il nucleo del sistema operativo5, su piattaforme diverse dall'originario PDP-7, costituendo di fatto il primo software della storia ad essere in grado di funzionare in ambienti totalmente diversi. Assieme al kernel, UNIX è stato corredato di una serie di applicazioni standard per la gestione dei fle e degli utenti, che continuano ad essere usati nei sistemi operativi moderni. I Bell Laboratories erano di proprietà dell'AT&T, società che gestiva le comunicazioni telefoniche negli Stati Uniti, la quale deteneva i diritti di UNIX. Proprio in quel periodo, all'inizio degli anni '70, il sistema telefonico statunitense stava subendo una piccola rivoluzione interna: l'utilizzo di mini-

5 In informatica, il kernel costituisce il nucleo di un sistema operativo. Si tratta di un software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware. Dato che possono esserne eseguiti simultaneamente più di uno, il kernel ha anche la responsabilità di assegnare una porzione di tempo-macchina (scheduling) e di accesso all'hardware a ciascun programma (multitasking).

6 computer per la gestione del trafco voce e dati, che erano tuttavia ancora dotati di software che permetteva operazioni di manutenzione piuttosto limitate. Ben presto si scoprì come UNIX, grazie alla sua concezione moderna e alla sua versatilità, permettesse ai mini-computer di fare operazioni molto più complesse e, in particolare, le operazioni di manutenzione potevano essere gestite in remoto, senza mandare i tecnici a investigare sul posto ad ogni singolo guasto. AT&T non volle avere alcuna royalty sull'utilizzo e la modifca di UNIX, ciò non a fni di benefcenza, come si potrebbe erroneamente pensare, ma per una questione politica. In quanto monopolista, AT&T aveva una gamma di servizi da ofrire al mercato limitato per legge e UNIX non costituiva un afare direttamente collegato alle telecomunicazioni, anche se sotto certi aspetti lo era. Al centro di forti critiche per via della sua posizione dominante, AT&T permise che UNIX venisse distribuito gratuitamente per fni di studio presso le università di tutto il mondo, senza tuttavia il permesso di ridistribuire o modifcare il codice. Ottenere una copia del sistema operativo era piuttosto semplice e davvero poco costoso: bastava pagare le spese di spedizione del supporto. In breve tempo si formò una comunità mondiale a livello universitario incentrata sullo sviluppo di nuove componenti e applicazioni per UNIX. Grazie a questo processo, nel corso degli anni settanta videro la luce le prime sette versioni del sistema operativo. Per risolvere i problemi di condivisione del codice, si introdusse per la prima volta la copia di fle tra sistemi dislocati in parti diverse del mondo attraverso la linea telefonica. Il sistema venne chiamato UUCP (UNIX to UNIX Copy) e nonostante venne ben presto surclassato dalla nascente ARPANET (in seguito Internet), costituì un esempio dell'ambiente vivace e produttivo che si era costruito attorno a UNIX. Con lo smembramento di AT&T nel 1984 nelle famose sette baby-bells, società più piccole che operavano a livello locale, la condivisione gratuita di UNIX ebbe fne. Solamente alcune Università, come Berkeley in California, continuarono a sviluppare la loro versione derivata di UNIX. L'acronimo BSD (Berkeley Software Distribution) indica la variante originaria di UNIX sviluppata presso l'Università di Berkeley in California e alla base di una delle due famiglie principali di sistemi operativi liberi attualmente più difusi, tra cui gli esponenti più noti sono FreeBSD, OpenBSD, NetBSD, PC-BSD, DesktopBSD, FreeSBIE, DarwinOS (il cuore unix di Mac OS X) e DragonFly BSD (con le sue distribuzioni FirefyBSD e GoBSD). L'acronimo BSD viene infatti usato anche per indicare la licenza BSD In breve, la licenza consente la redistribuzione del software anche in forma proprietaria, purché venga riconosciuto il merito all'autore. Chi infatti modifchi un programma protetto da licenze BSD, può ridistribuirlo usando la stessa o qualunque altra licenza (anche non libera), senza avere l'obbligo di redistribuire le modifche apportate al codice sorgente. Per questo molti esponenti del movimento Free Software, a cominciare da Richard Stallman suo fondatore, consigliano di non utilizzarle, per poter meglio salvaguardare i proprietari dallo sfruttamento a fni commerciali del proprio lavoro da parte di terzi, utilizzando al suo posto una licenza che fornisca più tutele sulle opere derivate, come quella della Free Software Foundation (GPL). Basti pensare, a titolo di esempio, che se il sistema operativo BSD fosse stato rilasciato sotto licenza GPL invece che BSD, la Apple inc. non avrebbe mai potuto incorporare il sistema operativo Darwin (derivato da BSD) all'interno del suo OS X, di cui costituisce il cuore. O avrebbe potuto farlo, a patto di rilasciare OS X sotto la medesima licenza GPL. Invece, la licenza del sistema operativo BSD consentiva la chiusura in senso proprietario e lo sfruttamento commerciale delle opere derivate e di conseguenza la Apple ha potuto includere il generoso lavoro altrui all'interno di un prodotto destinato al mercato (OS X) senza violare alcunché. AT&T aveva dimesso la propria posizione di operatore dominante ed era diventato un carrier per le chiamate tra i vari stati. La commercializzazione di UNIX non conosceva più ostacoli e pertanto UNIX System III (basato sulla settima versione) fu la prima release ad essere rilasciata dietro corrispettivo di un prezzo e senza codice sorgente. Seguì pochi anni dopo la versione UNIX System V, che includeva il supporto ad altre architetture. Altre società cominciarono a ofrire versioni commerciali di UNIX: alcune ottennero un'apposita licenza di utilizzo del codice da parte di AT&T, altre si afdarono al ramo di sviluppo creato dall'Università di Berkeley e fu proprio da questa derivazione che Bill Joy creò SunOS (ora Solaris e OpenSolaris) e fondò Sun Microsystems nel 1982. Anche Microsoft ebbe la propria versione di UNIX, che chiamò XENIX, poi acquisita dalla SCO (Santa Cruz Operation); si deve proprio alla SCO l'opera per renderla compatibile con i sistemi Intel 386. Nel 1984 nacque il primo vero standard di UNIX, il SVR4 o System V Release 4, che racchiudeva tutte le innovazioni promosse dalle varie società che avevano commercializzato UNIX fnora come Sun, BSD, SCO e IBM. Nel 1993 AT&T decise di vendere tutti i diritti di UNIX a Novell, con i quali creò UnixWare, un sistema che integrava la tecnologia alla base di NetWare. Poi UnixWare si trovò a dover competere con Microsoft Windows NT, ma essendo mancante di un supporto commerciale valido alla lunga perse la

7 battaglia. Inizialmente la SCO supportò con una propria distribuzione e collaborò attivamente nell'intento di rendere più appetibile il suo UNIX schiacciato dalla concorrenza Microsoft; accadde, però, che mentre la SCO perdeva le vendite a causa di un inadeguato supporto commerciale, le piccole ditte di Linux crescevano incredibilmente. La crescita di Linux causò non pochi problemi a SCO, che venne schiacciata dalla forte crescita di Linux da un lato e dalla forza commerciale di Microsoft dall'altro. Decise allora di ricorrere per vie legali contro IBM e altre società che utilizzavano fortemente Linux al centro del proprio business. Le accuse riguardano presunte violazioni di copyright nel kernel di Linux; ciò signifca che alcune parti di Linux, secondo SCO, sarebbero state copiate dal kernel di UNIX, di cui SCO aferma di detenere i diritti. All'inizio del 2007 SCO fornì i dettagli specifci della presunta violazione di copyright. Diversamente dalle precedenti afermazioni che vedevano SCO proprietaria di 1 milione di righe di codice, specifcarono soltanto 326 linee di codice, la maggior parte del quale non era coperto da copyright. Ad Agosto 2007, la corte nel caso Novell stabilì che SCO non possedeva neanche i diritti di copyright su UNIX. Curiosamente anche BSD sofrì di un attacco legale simile (relativamente alla neo-distribuzione BSD/386), ad opera della AT&T. La disputa si concluse nel 1994, largamente a favore di BSD, dove, tra 18000 fle, soltanto 3 dovettero essere rimossi dal sistema e 70 modifcati in termini di licenza.

8 2. Libero software in libero stato Il progetto GNU e la ri-nascita del software libero

“Free software is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”. R. Stallman

La saga di Stallman ebbe inizio nel 1971 al MIT, un istituto che ha sempre rappresentato una fucina di scienziati e ingegneri di massimo livello e che si è sempre collocato all'avanguardia rispetto a tutto ciò che avviene in ambito informatico. “Quando cominciai a lavorare nel laboratorio di Intelligenza Artifciale del MIT nel 1971, entrai a far parte di una comunità in cui ci si scambiavano i programmi, che esisteva già da molti anni. La condivisione del software non si limitava alla nostra comunità; è un cosa vecchia quanto i computer, proprio come condividere le ricette è antico come il cucinare. Ma noi lo facevamo più di quasi chiunque altro.”6 (R. Stallman) Stallman ben presto si accorse che la consuetudine di distribuire software in pubblico dominio7 nascondeva in realtà parecchie falle. Pubblico dominio signifcava che la proprietà intellettuale non era sotto il possesso e il controllo di nessuno, ma anche che, paradossalmente, avrebbe potuto essere soggetta a maggiori limitazioni. Il problema era che le aziende potevano copiare il codice dei programmi posti sotto il pubblico dominio, modifcarlo e tenere poi segrete queste alterazioni. Prendere senza restituire appariva agli occhi di Stallman ingiusto e provocò un gran numero di dispute tra lui e le società che si accaparravano e commercializzavano il codice che Stallman stesso aveva contribuito a scrivere. Mentre lui aveva liberamente distribuito la sua opera di perfezionamento sotto il regime del pubblico dominio, le aziende commerciali non erano invece obbligate a condividere la loro opera di miglioramento. Infatti, una società poteva imporre limiti all'uso del materiale proveniente dal pubblico dominio, tutelando tramite copyright le modifche apportate a quel materiale, rendendolo così non più disponibile gratuitamente. Un'occasione particolare spinse Stallman a iniziare la sua battaglia, ossia un caso in cui una stampante non funzionava e gli utenti non potevano risolvere il problema poiché il codice sorgente non era aperto. La spinta fnale alla flosofa Free Software e il suo manifesto fu uno scontro tra Stallman e la Symbolic riguardante l'impossibilità per Stallman di accedere ai cambiamenti che la Symbolic aveva apportato a un programma scritto da lui stesso. “Mi trovai di fronte ad una difcile scelta morale. La scelta facile sarebbe stata quella di unirsi al mondo del software proprietario, frmando accordi di non-difusione e promettendo di non aiutare i miei compagni hacker. Con ogni probabilità avrei anche sviluppato software che sarebbe stato distribuito secondo accordi di non-difusione, contribuendo così alla pressione su altri perché a loro volta tradissero i propri compagni. In questo modo avrei potuto guadagnare, e forse mi sarei

6 http://www.gnu.org/gnu/thegnuproject.it.html 7 Il modo più semplice per rendere un programma libero è dichiararlo di dominio pubblico, privo di copyright (in Italia questo concetto a rigore non esiste, perché l'autore non può rinunciare alla paternità dell'opera). Ciò permette a chiunque di condividere il programma e i suoi miglioramenti. Tuttavia, permette anche a chi non vuol cooperare di convertire il programma in software proprietario. Costoro possono infatti apportare modifiche, che siano significative o meno, e distribuire il risultato come prodotto proprietario.

9 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.” (R. Stallman) Stallman decise così che la soluzione di questo problema sarebbe diventata la sua crociata e, nel marzo del 1985, scrisse il Manifesto GNU8, che descriveva le sue motivazioni per creare un sistema operativo libero che potesse girare su un ampio numero di macchine diferenti. Stallman decise di scegliere il ben noto e all'epoca assai difuso sistema operativo UNIX come base per il proprio lavoro e fece riferimento a questo nuovo progetto con il nome di GNU, usando l'acronimo ricorsivo “GNU is not Unix”. Nella sua concezione il sistema GNU avrebbe dovuto avviare un semplice ambiente operativo per fornire agli utenti strumenti di sviluppo liberi da utilizzare per creare nuovo software libero. Stallman propose inoltre un sistema chiamato provocatoriamente “licenza di copyleft”9, in contrapposizione alle tradizionali restrittive licenze di copyright. Questo tipo di licenza assicurava che chiunque potesse studiare, utilizzare, modifcare e distribuire un'opera e le opere che da essa derivano. La licenza di copyleft aferma che le opere derivate debbano essere altrettanto liberamente disponibili, restando sottoposte allo stesso tipo di licenza, una sorta di licenza “virale”. Subito dopo il lancio del progetto GNU, Stallman coniò il termine "software libero" e fondò la Free Software Foundation (FSF), impegnata nello sviluppo di applicazioni software libere, tutte sottoposte alla nuova GNU GPL – GNU General Public License10. Pubblicata per la prima volta nel 1989, buona parte del software libero viene ora distribuito con la licenza GNU GPL, scritta dallo stesso Stallman con la collaborazione di Eben Moglen11. Dal punto di vista dello sviluppo software, la licenza GPL viene considerata una delle più restrittive, poiché impone che necessariamente ogni prodotto software derivato, che modifca o usa codice sotto licenza GPL, venga a sua volta distribuito con la stessa licenza. “Lo scopo di GNU consisteva nell'ofrire libertà agli utenti, non solo nell'ottenere ampia difusione. Avevamo quindi bisogno di termini di distribuzione che evitassero che il software GNU fosse trasformato in software proprietario. Il metodo che usammo si chiama 'copyleft'. Il copyleft (impropriamente tradotto come permesso d'autore) usa le leggi sul copyright, ma le capovolge per ottenere lo scopo opposto: invece che un metodo per privatizzare il software, diventa infatti un mezzo per mantenerlo libero.” (R. Stallman) Secondo Richard Stallman e la Free Software Foundation, un software si può defnire libero solo se garantisce quattro "libertà fondamentali":

• Libertà 0: Libertà di eseguire il programma per qualsiasi scopo. • Libertà 1: Libertà di studiare il programma e modifcarlo. • Libertà 2: Libertà di ridistribuire copie del programma in modo da aiutare il prossimo. • Libertà 3: Libertà di migliorare il programma e di distribuirne pubblicamente i

8 http://www.gnu.org/gnu/manifesto.it.html 9 Si tratta di un gioco di parole: copyright (diritto di autore) è formato dalle parola "copy" (copia) e "right" (diritto, ma anche destra), opposto di "left" (sinistra, ma anche lasciato). 10 http://www.gnu.org/licenses/licenses.it.html 11 Professore di legge e storia legale presso la Columbia Law School di New York, è membro della Free Software Foundation per la quale opera come consulente legale. In questa veste ha partecipato alla stesura di molte delle licenze dell'organizzazione, tra cui vale la pena di ricordare la GNU General Public License. Si occupa di software libero e presiede il Software Freedom Law Center, da lui fondato nel febbraio 2005. È il fondatore del progetto FreedomBox.

10 miglioramenti, in modo tale che tutta la comunità ne tragga benefcio.

Una licenza simile, ma meno restrittiva, è la GNU LGPL - GNU Lesser General Public License, che permette di utilizzare il codice anche in software proprietario e sotto altre licenze open source, purché le parti coperte da LGPL - anche se modifcate - vengano comunque distribuite sotto la medesima licenza. Esiste infne la GNU GFDL - GNU Free Documentation License, una forma di copyleft pensata per un manuale, libro di testo o altro documento, in modo da garantire a chiunque l'efettiva libertà di usarlo e distribuirlo, con o senza modifche, commercialmente o meno. Le licenze d'uso non vietano in genere di vendere software libero e di solito non stabiliscono minimamente il possibile prezzo di vendita12. “Molta gente crede che lo spirito del progetto GNU sia che non si debba far pagare per distribuire copie del software, o che si debba far pagare il meno possibile - solo il minimo per coprire le spese. Questo è un fraintendimento. In realtà noi incoraggiamo chi ridistribuisce il software libero a far pagare quanto vuole o può. Se vi sembra sorprendente, per favore continuate a leggere. Il termine 'free' ha due legittimi signifcati comuni in inglese; può riferirsi sia alla libertà che al prezzo. Quando parliamo di 'free software', parliamo di libertà, non di prezzo. Si pensi all'espressione 'free speech' (libertà di parola) piuttosto che all'espressione 'free beer' (birra gratis). In particolare, signifca che l'utente è libero di eseguire il programma, modifcarlo, e ridistribuirlo con o senza modifche. I programmi liberi sono talvolta distribuiti gratuitamente, e talvolta ad un prezzo consistente. Spesso lo stesso programma è disponibile in entrambe le modalità in posti diversi. Il programma è libero indipendentemente dal prezzo, perché gli utenti sono liberi di utilizzarlo.” (R. Stallman) Il progetto GNU, fnanziato dalla FSF, venne prodotto da programmatori appositamente stipendiati. I principali contributi vennero da Stallman stesso: lo GNU Compiler Collection13 e l'editor di testo Emacs. Furono sviluppate anche altre componenti di sistema UNIX, alle quali si sono aggiunte applicazioni per veri e propri giochi. Questi programmi furono distribuiti per circa 150$ che oltre a coprire i costi di riproduzione garantivano un servizio di supporto al cliente. L'unica condizione era che tutte le modifche eventualmente efettuate su tali programmi venissero notifcate agli sviluppatori. All’inizio degli anni ’90, il progetto GNU aveva prodotto o integrato tutto ciò che era necessario per un sistema operativo, eccetto l'elemento fondamentale: il software GNU Hurd14 che nelle intenzioni di Stallman avrebbe dovuto sostituire il kernel15 UNIX, ma il cui sviluppo continuava a subire rallentamenti. “Originariamente il kernel GNU non avrebbe dovuto chiamarsi Hurd; il suo nome originale era Alix, come la donna di cui ero innamorato in quel periodo. Alix, che era amministratrice di sistemi Unix, aveva sottolineato come il suo nome corrispondesse ad un comune schema usato per battezzare le versioni del sistema Unix: scherzosamente diceva ai suoi amici: "qualcuno dovrebbe chiamare un

12 http://www.gnu.org/philosophy/selling.it.html 13 http://it.wikipedia.org/wiki/GNU_Compiler_Collection 14 HURD è un acronimo doppiamente ricorsivo che significa Hird of Unix-Replacing Daemons (Hird di demoni che sostituiscono Unix). E poi "Hird" sta per Hurd of Interfaces Representing Depth (Hurd di interfacce che rappresentano la profondità). Le parole "hurd" e "hird" non hanno alcun significato in lingua inglese, ma si pronunciano come la parola inglese "herd", che significa branco, quindi "GNU HURD" può significare "branco di gnu": http://it.wikipedia.org/wiki/GNU_Hurd. 15 In informatica, il kernel è il componente software di base in un sistema operativo, la prima applicazione che parte e permette a tutte le altre di avviarsi, accedere al disco rigido del computer e alla scheda di rete, di visualizzare elementi sul monitor e via dicendo. "Linux" è di per sé un kernel, e tutti i sistemi operativi ne hanno uno: quello di MacOS si chiama "Darwin", quello di Windows "NT": http://it.wikipedia.org/wiki/Kernel. i

11 kernel come me". Io non dissi nulla ma decisi di farle una sorpresa scrivendo un kernel chiamato Alix. Le cose non andarono così. Michael Bushnell (ora Thomas), principale autore del kernel, preferì il nome Hurd, e chiamò Alix una parte del kernel, quella che serviva a intercettare le chiamate di sistema e a gestirle inviando messaggi ai server che compongono Hurd. Infne io e Alix ci lasciammo e lei cambiò nome; contemporaneamente la struttura di Hurd veniva cambiata in modo che la libreria C mandasse messaggi direttamente ai server, e così il componente Alix scomparve dal progetto.” (R. Stallman) Ci si riferisce spesso a Hurd come al "kernel del progetto GNU", ma tale defnizione è inesatta poiché il kernel è la sola parte del sistema operativo che viene eseguita in kernel mode, cioè utilizza un sottoinsieme privilegiato delle istruzioni del processore, cioè il codice macchina eseguito in tale modalità ha accesso illimitato alla memoria, all'hardware e alle altre risorse. Hurd, invece, è formato da un insieme di server che interagiscono tra loro utilizzando il GNU Mach (basato sul kernel Mach). Sono proprio questi server che implementano il fle system, i protocolli di rete, i permessi degli utenti, e tutti gli altri servizi che vengono generalmente oferti da un kernel classico. Un sistema così concepito presenta molti vantaggi: per esempio, consente modifche, manutenzione ed estensioni delle sue funzionalità senza dover essere ricompilato completamente e, talvolta, senza nemmeno riavviare la macchina sulla quale è in esecuzione. Ciò vale anche in caso di crash, in quanto la caduta di uno dei server non bloccherebbe l'intero computer. Lo svantaggio principale è il maggior tempo che occorre per progettarlo e renderlo stabile. Infatti, il progetto non è ancora giunto alla versione 1 e attualmente viene utilizzato il kernel Linux per implementare un sistema GNU completo. Attualmente gli sviluppatori non rilasciano una vera e propria distribuzione Hurd, ma esiste una distribuzione che lo utilizza. L'ultima versione ufciale di Hurd rilasciata senza Debian è la 0.2 nel 1997. L'ultima versione di Debian GNU/Hurd, invece, è la L1 rilasciata nel 2009. La distribuzione Debian segue strettamente lo sviluppo ufciale di Hurd e spesso aggiunge nuove caratteristiche. Né Hurd, né la distribuzione Debian che lo utilizza sono pronti per un uso quotidiano, in quanto alcuni problemi nel port dei pacchetti Debian non sono ancora stati risolti (attualmente funziona il 68% di essi) e alcune caratteristiche ancora mancano. Lo sviluppo è comunque attivo e il software sta lentamente guadagnando stabilità.

--- per approfondire –-

Vita e miracoli di Richard Stallman “Sono Richard Stallman, inventore dell'editor EMACS originale, poi molto imitato; attualmente mi trovo al laboratorio di Intelligenza Artifciale del MIT. Ho lavorato molto su compilatori, editor di testo, debugger, interpreti di comandi, l'Incompatible Timesharing System e il sistema operativo della Macchina Lisp. Ho introdotto il display indipendente dal terminale su ITS. Inoltre, ho implementato un fle system a prova di crash e due sistemi a fnestre per le macchine Lisp” così si presentava Stallam nell'annuncio ufciale del progetto GNU, avvenuto il 27 settembre 1983.

Stallman nacque da Daniel Stallman e Alice Lippman nel 1953 a New York. La sua prima esperienza con i computer fu presso l'IBM New York Scientifc Center: Stallman passò l'estate dopo il diploma di scuola superiore scrivendo il suo primo programma, un processore per il linguaggio di programmazione PL/I sull'IBM 360. Durante questo periodo, fu anche un assistente di laboratorio volontario presso il dipartimento di biologia alla Rockefeller University. Sebbene si stesse già indirizzando verso una carriera da matematico o fsico, il suo professore alla Rockefeller pensò che avrebbe avuto un futuro come biologo. Nel giugno del 1971 al primo anno da studente all'università Harvard, Stallman diventò un

12 programmatore al laboratorio IA - Intelligenza Artifciale del MIT. Qui prese parte alla comunità degli hacker, dove era conosciuto con la sigla "rms" (nella prima edizione del dizionario dell'Hacker scrisse: Richard Stallman è solo il mio nome mondano; tu puoi chiamarmi "rms"). Stallman si laureò con lode alla Harvard in Fisica nel 1974. In seguito si iscrisse ad un corso post- laurea in fsica al MIT, ma abbandonò gli studi universitari, rimanendo un programmatore al laboratorio di Intelligenza Artifciale. Comunque Stallman è stato premiato con 6 dottorati onorari e 2 cattedre universitarie onorarie. Mentre era studente al MIT, Stallman pubblicò una relazione su “Truth Maintenance System” (revisione controllata) intitolata “dependency-directed backtracking” con Gerald Jay Sussman. Questa relazione fu un primo lavoro sul problema dell'”Intelligent backtracking” nel “constraint satisfaction problems” (soddisfazione dei vincoli). Dal 2003, la tecnica introdotta da Stallman e Sussman è ancora il metodo più generale e potente di “Intelligent backtraking”. In questa relazione fu anche introdotta la tecnica “constraint recording” (memorizzazione dei vincoli) in cui risultati parziali di una ricerca sono registrati per un loro reiterato riutilizzo. Come hacker al laboratorio di intelligenza artifciale del MIT, Stallman lavorò su progetti di software come TECO, Emacs, e il sistema operativo per Lisp Machine. Fu fortemente critico sulla politica di limitazione dell'accesso ai computer dei laboratori impostata al MIT. Quando nel 1977 il laboratorio per le scienze del computer (LCS) del MIT installò un sistema di accesso limitato controllato da password Stallman trovò un modo per decrittare le password e inviò agli utenti un messaggio contenente la loro password decodifcata, con il suggerimento di cambiarla con una stringa vuota (che signifca non immettere password), per permettere nuovamente l'accesso anonimo al sistema. Circa il 20% degli utenti seguirono il suo consiglio, sebbene gli accessi con password alla fne prevalsero. Stallman si vantò del successo nella sua campagna per molti anni a seguire. Nei tardi anni settanta e primi anni ottanta, la cultura hacker che Stallman portava avanti cominciò a frammentarsi. Per evitare che il software fosse usato sui computer dei concorrenti, la maggior parte dei produttori smise di distribuire il codice sorgente e cominciò a usare Copyright e licenze restrittive per il software, per limitarne o proibirne la copia e la redistribuzione. Tale proprietà dei software già esisteva prima, e divenne chiaro che sarebbe diventata la norma. Quando Brian Reid nel 1979 mise “time bombs” in Scribe per limitare l'accesso senza licenza al software, Stallman lo considerò “un crimine contro l'umanità”. Egli chiarì, anni dopo, che quello che lui considera un crimine non è far pagare i software, bensì ostacolare la libertà dell'utente. Nel 1980, a Stallman e ad alcuni altri hacker del laboratorio di intelligenza artifciale fu rifutato il codice sorgente del software per la stampante laser Xerox 9700 (“Dover”), la prima del settore. Stallman aveva modifcato il software su una vecchia stampante (la XGP, Xerographic Printer); con la sua modifca l'utente riceveva dalla stampante un messaggio elettronico che gli segnalava il completamento della stampa da lui richiesta. Tutti gli utenti in coda di stampa venivano anche avvertiti di condizioni di congestione di code di stampa, in modo che l'utente si potesse attendere un ritardo nella stampa. Vedere impedito questo servizio aggiuntivo, per l'indisponibilità del codice sorgente della stampante, non era un inconveniente trascurabile, dato che, come accadeva spesso, la stampante era unica per diversi utenti su diversi piani, e presso la stampante fnivano per sostare diverse persone, a perdere tempo prezioso in attesa, o a districarsi fra le altrui stampe non ritirate. Questa esperienza convinse Stallman che le persone hanno bisogno di essere libere di modifcare il software che usano. Nel 1980, Richard Greenblatt, un compagno hacker del laboratorio AI, fondò Lisp Machines, Inc. (LMI) per commercializzare Lisp machines, che lui e Tom Knight avevano creato in laboratorio. Greenblatt rifutò investimenti esterni, credendo che i proftti dalla costruzione e dalla vendita di un po' di macchine poteva essere reinvestito con proftto per la crescita della società. Al contrario, gli altri hacker ritenevano che fosse meglio l'avvicinamento di una venture capital fnanziatrice. Poiché non fu possibile raggiungere alcun accordo, hacker dell'ultimo campo fondarono Symbolics, con l'aiuto di Russ Noftsker, un amministratore del laboratorio AI. Symbolics reclutò la maggior parte degli hacker rimasti incluso l'insigne hacker Bill Gosper, che poi lasciò il laboratorio AI. Symbolics costrinse Greenblatt anche a dimettersi citando le politiche del MIT. Mentre entrambe le compagnie rilasciavano software proprietario, Stallman credeva che LMI, a diferenza di Symbolics, avesse provato ad evitare di danneggiare la comunità del laboratorio. Per due anni, dal 1982 alla fne del 1983, Stallman lavorò da solo per clonare la produzione dei programmatori di Symbolics, con lo scopo di

13 evitare che essi ottenessero un monopolio sui computer del laboratorio. Comunque, fu l'ultimo della sua generazione di hacker nel laboratorio. Rifutò un futuro dove avrebbe dovuto frmare accordi di non divulgazione per non condividere codici sorgente o informazioni tecniche con altri sviluppatori di software e compiere altre azioni che considerava tradimenti dei suoi principi. Scelse invece di condividere il suo lavoro con altri, in quello che considerava un classico spirito di collaborazione. Sebbene Stallman non partecipasse negli anni sessanta all'era della controcultura, fu ispirato dal suo rifuto della ricerca della ricchezza come primo obiettivo di vita. Stallman sostiene che gli utenti di software dovrebbero avere la libertà di “condividere con i loro vicini” e di essere in grado di studiare e fare modifche al software che loro usano. Ha ripetutamente detto che i tentativi dei venditori di software proprietario di proibire questi atti sono “antisociali” e “non etici”. La frase “il software vuole essere libero” gli è spesso non correttamente attribuita, e Stallman sostiene che questa è una descrizione inesatta della sua flosofa. Egli sostiene che la libertà è vitale per il bene degli utenti e della società come un valore morale, e non puramente per ragioni pragmatiche come sviluppare in qualche modo un software tecnicamente superiore. Per evitare eventuali infuenze da parte del MIT, nel gennaio 1984 Stallman lasciò il suo lavoro per dedicarsi a tempo pieno al progetto GNU, che aveva annunciato nel settembre del 1983. Stallman annunciò il progetto per il sistema operativo GNU nel settembre 1983 su molte mailing list ARPAnet e Usenet. Nel 1985, Stallman pubblicò il manifesto GNU, che descriveva le sue motivazioni per creare un sistema operativo libero chiamato GNU, che sarebbe stato compatibile con Unix. Il nome GNU è un acronimo ricorsivo per "GNU's Not Unix (GNU non è Unix)". Poco dopo, diede vita a una corporazione no proft chiamata Free Software Foundation per impiegare programmatori di software libero e fornire un'infrastruttura legale per il movimento del software libero. Stallman ne è il presidente non stipendiato. Nel 1985, Stallman inventò e rese popolare il concetto di copyleft, un meccanismo legale per proteggere i diritti di modifca e redistribuzione per il software libero. Fu inizialmente implementato nella GNU Emacs General Public License, e nel 1989 il primo programma indipendente sotto licenza GPL fu rilasciato. Da allora, gran parte del sistema GNU è stato completato. Stallman contribuì con molti strumenti necessari, inclusi un editor di testo, un compilatore, un debugger, un build automator (un metodo automatico di compilazione da codice sorgente a codice binario). Quello che ancora mancava era il kernel. Nel 1990, membri del progetto GNU cominciarono lo sviluppo di un kernel chiamato GNU Hurd, che deve ancora raggiungere il livello di maturità richiesto per l'uso difuso. Nel 1991, , uno studente fnlandese, usò gli strumenti di sviluppo GNU per produrre il kernel Linux. I programmi esistenti del progetto GNU furono prontamente adattati per funzionare con il kernel Linux ed ora molti sorgenti usano il nome “Linux” per riferirsi al sistema operativo general purpose risultante. Nella comunità del software libero ne è risultata una controversia sul nome da utilizzare per il nuovo sistema operativo. Stallman sostiene che non usare “GNU” sminuisce ingiustamente il valore del progetto GNU e nuoce alla sostenibilità del movimento del software libero rompendo il collegamento tra il software e la flosofa del software libero del progetto GNU. Le infuenze di Stallman sulla cultura hacker includono il nome POSIX e l'editor Emacs. Sui sistemi UNIX, la popolarità di GNU Emacs fece concorrenza all'altro editor vi, provocando una guerra fra editor. Stallman prese posizione su questo canonizzando scherzosamente se stesso come "St. IGNUcius" della Chiesa di Emacs e riconoscendo che "vi vi vi è l'editor del diavolo", mentre "usare una versione libera di vi non è un peccato; è una penitenza". Un numero di sviluppatori vide Stallman come un personaggio difcile con cui lavorare da un punto di vista politico, interpersonale o tecnico. Intorno al 1992, sviluppatori alla Lucid Inc. facendo il loro lavoro su Emacs si scontrarono con Stallman e alla fne fecero un fork sul software. Il loro fork più tardi diventò XEmacs. Un archivio email pubblicato da Jamie Zawinski documenta le loro critiche e le risposte di Stallman. Ulrich Drepper, che Stallman aveva nominato per lavorare sul GNU libc per il Progetto GNU, pubblicò lamentele contro Stallman nelle note per la release di glibc 2.2.4. Drepper accusa Stallman di aver tentato una "scalata ostile " del progetto, riferendosi a lui come un "maniaco del controllo e matto da legare." Eric S. Raymond, che a volte proclama di parlare a nome di una parte dei membri del movimento open source, ha scritto molti articoli in toni aspramente critici, nei quali spiega il disaccordo del movimento open source con Stallman e il movimento per il software libero.

14 3. L'unione fa la forza GNU/Linux e la nascita del primo sistema operativo completamente libero

“Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un’idea, ed io ho un’idea, e ce le scambiamo, allora abbiamo entrambi due idee.” G. B. Shaw

Il nome del progetto che è riuscito a raggiungere l'obiettivo prefssato da Stallman, cioè un sistema operativo completo e interamente libero, è ormai entrato nella leggenda: Linux. Avviato dall'hacker16 fnlandese Linus Torvalds, il progetto è cresciuto rapidamente e ha raccolto volontari da tutto il mondo, ispirandosi alla visione di Stallman relativa alle modalità di copia, analisi e miglioramento del software. Tutto ebbe inizio quando Torvalds cominciò a testare un piccolo sistema operativo Unix-like17 chiamato “MINIX”18. Andrew S. Tanenbaum, professore ordinario di Sistemi di rete alla Vrije Universiteit ad Amsterdam, creo MINIX nel 1987 per esemplifcare i principi dei sistemi operativi spiegati nel suo libro di testo, nel quale erano anche riportate le 12.000 righe del codice sorgente. Al momento del suo sviluppo originale, la licenza di MINIX era considerata piuttosto liberale. Il suo costo di licenza era molto piccolo rispetto a quelli di altri sistemi operativi, appena 60$. Anche se Tanenbaum desiderava che MINIX fosse il più possibile accessibile agli studenti, il suo editore non era invece disposto ad ofrire materiale che avrebbe potuto essere copiato liberamente, come il codice sorgente, così venne applicata una tassa di licenza nominale, inclusa nel prezzo del libro, come compromesso. Torvalds, appassionato di programmazione, era tuttavia insoddisfatto del sistema operativo MINIX, poiché supportava male la nuova architettura i38619 a 32 bit, all'epoca tanto economica e popolare. Così Torvalds decise di creare un nuovo kernel UNIX. “Sono convinto che l'informatica abbia molto in comune con la fsica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La diferenza, naturalmente, è che mentre in fsica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confni del

16 http://it.wikipedia.org/wiki/Hacker 17 In informatica con il termine Unix-like (spesso abbreviato con *nix), si indicano tutti quei sistemi operativi che sono progettati seguendo le direttive dei sistemi Unix descritte nella Single UNIX Specifcation (una defnizione di una serie di standard che i sistemi operativi per computer devono rispettare per potersi fregiare del nome "Unix"), ma che, per questioni legali, non possono usare il marchio UNIX. Il nome UNIX, infatti, è un marchio registrato da The Open Group, autore della Single Unix Specifcation, e viene concesso in licenza solo dopo un costoso processo di certifcazione. I sistemi operativi (come i BSD e le distribuzioni GNU/Linux) che non hanno un'azienda alle spalle che intenda sostenere i costi di questa certifcazione sono quindi costretti a defnirsi "Unix-like". Tuttavia nell'uso comune quest'ultimo termine designa prevalentemente i sistemi operativi BSD (che possono usare questa indicazione per motivi storici): http://it.wikipedia.org/wiki/Unix-like. 18 http://it.wikipedia.org/wiki/MINIX 19 L'Intel i386 o Intel 80386 è una famiglia di microprocessori monolitici general purpose x86 dell' Intel Corporation prodotti tra il 1985 e il 2007. La famiglia di microprocessori Intel i386 è stata utilizzata come CPU per personal computer principalmente tra il 1986 e il 1994. I microprocessori della famiglia Intel i386 sono stati i primi microprocessori Intel dotati di architettura a 32 bit e modalità protetta con supporto hardware alla memoria virtuale paginata: http://it.wikipedia.org/wiki/Intel_80386.

15 computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala.” (L. Torvalds) Inizialmente, Linux per girare utilizzava, oltre al kernel di Torvalds, lo userspace20 di MINIX. Successivamente, Torvalds decise di rendere il sistema indipendente da MINIX, perché non ne gradiva la licenza che lo rendeva liberamente utilizzabile solo a fni didattici e decise di sostituire quella parte del sistema operativo col software del progetto GNU; e così la licenza cambiò in GPL. Linux, all'inizio, era un semplice emulatore di terminale 21 scritto nei linguaggi di programmazione C e assembly, e non aveva bisogno di appoggiarsi a un sistema operativo. L'emulatore di terminale avviava e gestiva due thread: uno per mandare segnali alla porta seriale, uno per riceverli; quando poi Torvalds ebbe bisogno di leggere e scrivere fle su disco, questo emulatore fu esteso in modo che potesse gestire un fle system. Lentamente questo programma si trasformò in un intero kernel in grado di gestire un sistema operativo e Torvalds iniziò a documentarsi sulle specifche POSIX. In informatica, POSIX (o Posix: Portable Operating System Interface for Unix) è il nome che indica la famiglia degli standard defniti dall’IEEE - Institute of Electrical and Electronic Engineers, un'associazione internazionale con l'obiettivo della promozione delle scienze tecnologiche. Gli standard POSIX derivano da un progetto, iniziato intorno al 1985, fnalizzato alla standardizzazione delle API22 per i software sviluppati per le diverse varianti dei sistemi operativi UNIX. Il compito dello standard POSIX è quello di defnire alcuni concetti base che vanno seguiti durante la realizzazione del sistema operativo. Essendosi impegnato per migliorare il codice, Torvalds decise di pubblicare su Internet i risultati del suo lavoro. La prima versione del kernel Linux, la 0.01, fu pubblicata su Internet il 17 settembre 1991. Torvalds preferiva chiamare Freax il kernel a cui stava lavorando, ma Ari Lemmke, assistente alla Helsinki University of Technology che gli aveva oferto lo spazio FTP per il progetto (ftp.funet.f), preferì assegnare alla subdirectory dedicata il nome alternativo di lavorazione Linux. Avvenne subito un fatto curioso: c'era chi scaricava le sue modifche, le testava, migliorava il codice correggendo qualche piccolo errore e difetto e, soprattutto, gli rimandava indietro il codice aggiornato. Egli era solito raccogliere i contributi che giungevano, integrarli e rilasciare una nuova versione aggiornata a disposizione per il download. Si venne così a creare una massa critica dedita a questo processo. Torvalds non era l'artefce del perfezionamento del software, ma agiva semplicemente da coordinatore principale di questa nuova comunità di appassionati,

20 Nei sistemi operativi, lo spazio utente è uno spazio per applicazioni eseguite in modalità utente esterno al kernel e protetto attraverso la separazione dei privilegi. 21 Un terminale virtuale (o emulatore di terminale) è un programma o un servizio del sistema operativo che emula il comportamento di un terminale testuale. In ambiente Unix un terminale è un dispositivo attraverso cui l'utente interattivo può dialogare con un interprete di comandi o altri programmi. Il termine viene usato indiferentemente per indicare il dispositivo fsico composto da tastiera e monitor o per indicare il fle speciale che viene usato dalle applicazioni per comunicare con la periferica. Oggi quando si parla di «terminale» ci si riferisce quasi sempre al concetto astratto di terminale o ad un programma che svolge le stesse funzioni, che è perciò detto terminale virtuale o emulatore di terminale. 22 In informatica con il termine API - Application Programming Interface (Interfaccia di Programmazione di un'Applicazione) si indica ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifci per l'espletamento di un determinato compito all'interno di un certo programma. Spesso con tale termine si intendono le librerie software disponibili in un certo linguaggio di programmazione. Le API permettono di evitare ai programmatori di riscrivere ogni volta tutte le funzioni necessarie al programma dal nulla, rientrando quindi nel più vasto concetto di riuso di codice.

16 mentre il progetto aveva acquisito una vita propria. Fino alla versione 0.10 era richiesto un computer con MINIX per confgurare, compilare e installare Linux perché quest'ultimo usava il fle system del sistema sul quale si appoggiava; dalla versione 0.11 poteva essere compilato da Linux stesso. Presto i sistemi Linux superarono MINIX in termini di funzionalità: Torvalds e altri sviluppatori della prima ora di Linux adattarono il loro kernel perché funzionasse con i componenti GNU ed i programmi in user-space per creare un sistema operativo completo, pienamente funzionante e libero. Il 12 marzo 1994 il 16º livello di patch del kernel 0.99 divenne Linux 1.0. Fu lo stesso Torvalds a presentare la prima versione stabile alla Helsinki University. La combinazione tra Linux e il sistema GNU diede la vita al primo sistema operativo totalmente libero. E' importante sottolineare che Linux e il progetto GNU non erano in contrapposizione tra loro. Infatti, Linux costituisce solo il kernel, ossia la parte essenziale di un sistema operativo, necessaria a far funzionare un computer. Il sistema GNU di Stallman comprendeva molte piccole applicazioni – le utility – rese libere tramite la licenza di copyleft. Esse vennero modifcate per girare sotto Linux, creando così un sistema completo di tutte le funzionalità. In questo senso Stallman ha sempre afermato che il sistema universalmente noto oggi come Linux dovrebbe più propriamente essere chiamato “GNU/Linux” per indicare l'ibridazione dei due sistemi. Linux può essere considerato come il primo vero progetto "open source" cioè come il primo progetto che faceva afdamento essenzialmente sulla collaborazione via Internet per progredire; fno ad allora, infatti, anche i progetti di software libero come Emacs erano stati sviluppati in maniera centralizzata seguendo un progetto prestabilito da un ristretto numero di persone, in base cioè ai principi standard di ingegneria del software. Si assumeva valida anche per i progetti open source la 'legge di Brooks'23, secondo cui "aggiungere sviluppatori a un progetto in corso di implementazione in realtà rallenta il suo sviluppo", legge che si è dimostrata non applicabile a un progetto di sviluppo open source. Infne, nel 1996 fu scelto come logo ufciale di Linux un pinguino disegnato da Larry Ewing, chiamato come abbreviazione di Torvalds Unix. Attualmente non esiste un'unica versione di Linux ma esistono diverse distribuzioni (chiamate anche distro), solitamente elaborate da comunità di sviluppatori o società, che scelgono, preparano e compilano i pacchetti da includere. Tutte le distribuzioni condividono il kernel Linux, sia pure in versioni diverse e spesso personalizzate, mentre si diferenziano tra loro per il cosiddetto "parco software", cioè i pacchetti preparati e selezionati dagli sviluppatori per la distribuzione stessa, per il sistema di gestione del software e per i servizi di assistenza e manutenzione oferti. Lo sviluppo di Linux è sostenuto dalla Linux Foundation24, un'associazione senza fni di lucro nata nel 2007 dalla fusione di Free Standards Group e OSDL - Open Source Development Labs. La è un'organizzazione formata dai maggiori produttori di software ed hardware il cui obiettivo è di migliorare l'interoperabilità tra le diverse distribuzioni. A questo scopo, essa ha proposto una standard aperto e gratuito, chiamato Linux Standard Base (ufcializzato con lo standard ISO/IEC 23360) che defnisce una comune ABI - Interfaccia Binaria per le Applicazioni, un unico sistema di pacchettizzazione ed una struttura per il fle system che preveda le stesse convenzioni sui nomi e le stesse directory basilari in ogni sistema Linux. Esso al momento

23 http://it.wikipedia.org/wiki/Legge_di_Brooks 24 http://www.linuxfoundation.org

17 costituisce lo standard con maggiore appeal, al quale tutte le maggiori distribuzioni si stanno adeguando.

–------per approfondire –------

Distribuzioni più difuse

In ordine alfabetico, la lista delle distribuzioni più difuse e conosciute: • Android - È una distribuzione per dispositivi mobili inizialmente sviluppata dalla Startup Android Inc. e poi nel 2005 acquistata dalla Google Inc. che la supporta tuttora. • - È leggera, veloce, estremamente scalabile e adattabile alle proprie esigenze. Ottimizzata per i686 e X86-64. • Backtrack - Ofre tools per fare test di penetrazione. Fino alla versione 3.0 derivava dalla distro WHAX, dalla versione 4.0 è invece basata su . • CentOS - È una distribuzione basata sui sorgenti di , quindi uguale ad essa in tutto e per tutto se non per i loghi e il nome che vengono cambiati in quanto marchi registrati. È usata per lo più in ambito server. • Debian - Ofre un ottimo sistema di gestione dei pacchetti software (in formato ), compilati per 11 architetture diferenti: Alpha, AMD64, ARM, HP PA-RISC, Intel x86, Intel IA-64, MIPS (big endian), MIPS (little endian), PowerPC, IBM S/390, SPARC. Viene defnita per questo "il sistema operativo universale". Ha un'installazione disponibile sia in modalità testuale che grafca. • Fedora - Distribuzione non commerciale sponsorizzata da Red Hat. Piuttosto curata nell'aspetto, viene aggiornata frequentemente con le ultime novità. Il sistema di pacchettizzazione è basato su RPM e l'installazione è disponibile sia in modalità testuale che grafca. • - Distribuzione non commerciale basata sui sorgenti che permette di ottimizzare e rendere estremamente fessibile il sistema. Implementa un sistema di porting derivato da *BSD. L'installazione avviene manualmente, seguendo l'apposito manuale. Ulteriori punti di forza della distribuzione sono l'ottima documentazione e la comunità molto disponibile. • - La distribuzione live CD più famosa. Nata per uso forense, deriva da Debian. Molto indicata per i principianti, permette di avere un sistema completo avviabile direttamente da CD-ROM o DVD che permette, tra i vari usi, l'utilizzo dimostrativo, come tool di diagnostica, come test di compatibilità hardware, ecc. Presenta alcune varianti come Eduknoppix. • - Era un distribuzione commerciale derivata da Debian che puntava alla facilità d'installazione e d'utilizzo anche da parte di principianti. • Mandriva - Conosciuta come Mandrake fno al 2005, anno in cui la Mandrakesoft ha acquisito Conectiva. È una tra le distribuzioni più difuse e maggiormente orientate all'utente desktop. È distribuita sia in forma gratuita che come prodotto commerciale (in questo caso include alcuni pacchetti proprietari), con nuove release a cadenza approssimativamente annuale. Ha un sistema di pacchettizzazione basato su RPM. • Mint - Derivata da Ubuntu, comprende alcuni software personalizzati per installazione e gestione, un menù principale che richiama quello di Windows Vista, e comprende codec multimediali preinstallati per DVD, MP3 ecc. • OpenSUSE - È una distribuzione non commerciale nata dall'apertura allo sviluppo comunitario di SuSE. • Puppy - Distribuzione molto leggera, è disponibile in versione Live CD. Occupa poche risorse e spazio su disco ed è adatta a PC poco potenti o datati. Se la quantità di RAM è sufciente (256 MB o più), può girare integralmente in memoria. • Enterprise - È la distribuzione commerciale più difusa. Leggera, non viene aggiornata alle ultime novità ma predilige versioni di kernel e componenti stabili e collaudate. Gli sviluppatori di Red Hat hanno realizzato il difuso sistema di pacchetti RPM. • Sabayon - Sabayon è una distro basata su Gentoo che si caratterizza per la compresenza di due

18 package manager (binario e sorgente). È disponibile in diverse versioni con KDE, GNOME, , LXDE, Enlightenment, . • - Creata nel 1993, viene spesso considerata la distribuzione più vicina a Unix e agli standard GNU/Linux. È molto stabile, versatile e mira alla semplicità: gli interventi sul codice sono minimi, nel rispetto delle intenzioni degli autori originali. Il sistema di gestione dei pacchetti afda all'utente la risoluzione delle dipendenze, mentre il software non incluso va compilato dai sorgenti. • - Deriva direttamente da Slackware e ne conserva le caratteristiche di velocità, stabilità, leggerezza e ampia confgurabilità in base alle varie esigenze del singolo utente. Adotta un approccio modulare avanzato. • SuSE - Celebre distribuzione europea, molto usata a livello aziendale ma rivolta anche all'utente Desktop. Anch'essa basata su RPM, è un prodotto commerciale. È basata sul lavoro del progetto OpenSUSE. • Ubuntu - Distribuzione derivata da Debian, è salita alla ribalta per la facilità d'installazione e d'utilizzo e per la disponibilità di frequenti aggiornamenti della versione stabile. Utilizza il gestore pacchetti APT, come Debian, e i desktop e GNOME. Ne esistono numerose varianti, tra cui , , ed .

Distribuzioni completamente libere La maggioranza delle distribuzioni Linux non contiene esclusivamente software libero ma anche, in misura ridotta, software proprietario (ad esempio driver, codec, tool e applicazioni), spesso per reale mancanza di software libero corrispondente. La Free Software Foundation (FSF), sulla base delle Guidelines for Free System Distributions, ha stilato una lista di distribuzioni Linux che contengono esclusivamente software libero: • gNewSense, distribuzione basata su Debian e Ubuntu e supportata dalla FSF • BLAG (le Brixton Linux Action Group), una distribuzione Linux basata su Fedora • Dragora, distribuzione indipendente basata sul concetto di semplicità • Dynebolic, distribuzione specializzata nell'editing di audio e video. • Kongoni, distribuzione africana • Musix, distribuzione basata su Knoppix, rivolta alla produzione audio. • Parabola GNU/Linux, distribuzione basata su Arch che cura particolarmente la semplicità della gestione dei pacchetti e del sistema. • , distribuzione orientata alle piccole imprese, agli usi domestici e ai centri educativi. • , distribuzione basata su Gentoo, è stato il primo sistema Linux completamente libero riconosciuto dal Progetto GNU • Venenux, distribuzione rivolta principalmente ad utenti latinoamericani.

19 4. Free Software Or Open Source Software? Un unico obiettivo tra ideologia e pragmatismo

“La creatività e l'innata facilità nell'utilizzo delle nuove tecnologie informatiche possono innescare meccanismi di trasformazione sociale a livello globale.” Rita Levi Montalcini

Agli inizi degli anni novanta, l'idea delle licenze liberali era rappresentata soprattutto da Stallman e dalla sua Free Software Foundation. Le licenze liberali per eccellenza erano la GNU GPL e la GNU LGPL, che venivano però ritenute eccessivamente "virali", in quanto a partire da un codice licenziato con la GPL qualsiasi ulteriore modifca deve avere la stessa licenza. Inoltre, la parola inglese “free” utilizzata da Stallman creava una certa confusione, poiché determinava una fastidiosa collisione di signifcati, riferendosi indiferentemente sia al concetto di libertà sia a quello di gratuità. Le idee stesse di Stallman venivano viste con sospetto dall'ambiente commerciale statunitense, spesso interpretate come “comuniste”, “anarchiche” e “d'istigazione alla pirateria”. Tutto ciò non facilitava la difusione del software libero. Per favorire l'idea delle licenze liberali nel mondo degli afari, un gruppo che comprendeva Jon "Maddog" Hall, Larry Augustin, Eric S. Raymond, Bruce Perens ed altri 25 cominciarono nel 1997 ad elaborare una ridefnizione ideologica del software libero evidenziandone i vantaggi pratici per le aziende e coniarono il termine "Open Source". L'iniziativa venne portata avanti soprattutto da parte di Raymond che, in occasione della liberalizzazione del codice sorgente di Netscape Communicator, voleva utilizzare un tipo di licenza meno restrittivo per le aziende di quanto fosse la GNU GPL. Nel Marzo del 1998 Netscape Communications Corporation26 rilasciò la maggior parte del codice sorgente della sua popolare applicazione Netscape sotto una licenza scritta da loro stessi, la Netscape Public License27. Questo pacchetto divenne in seguito Mozilla e produsse il noto browser web Mozilla Firefox28. La licenza della suite Mozilla fu cambiata in seguito in una tripla licenza, che includeva anche la GNU GPL. “Parlare di libertà ai nuovi utenti è diventato più difcile dal 1998, quando una parte della comunità decise di smettere di usare il termine 'free software' e usare al suo posto 'open source'. Alcune delle persone che suggerirono questo termine intendevano evitare che si confondesse 'free' con 'gratis', un valido obiettivo. D'altra parte, altre persone intendevano mettere da parte lo spirito del principio che aveva dato la spinta al movimento del software libero e al progetto GNU, puntando invece ad attrarre i dirigenti e gli utenti commerciali, molti dei quali aferiscono ad una ideologia che pone il proftto al di sopra della libertà, della comunità, dei principi. Perciò la retorica di "open source" si focalizza sulla possibilità di creare software di buona qualità e potente, ma evita deliberatamente le idee di libertà, comunità, principio. Le riviste che si chiamano "Linux..." sono un chiaro esempio di ciò: sono piene di pubblicità di software proprietario che gira sotto GNU/Linux; quando ci sarà il prossimo Motif o Qt, queste riviste avvertiranno i programmatori di starne lontano o accetteranno la sua pubblicità? L'appoggio delle aziende può contribuire alla comunità in molti modi; a parità di tutto il resto è una cosa utile. Ma ottenere questo appoggio parlando ancor meno di libertà e principi

25 http://it.wikipedia.org/wiki/Eric_S._Raymond 26 http://it.wikipedia.org/wiki/Netscape_Communications_Corporation 27 http://it.wikipedia.org/wiki/Netscape_Public_License 28 http://it.wikipedia.org/wiki/Mozilla_Firefox

20 può essere disastroso; rende ancora peggiore lo sbilanciamento descritto tra difusione ed educazione civica. 'Software libero' (free software) e 'sorgente aperto' (open source) descrivono più o meno la stessa categoria di software, ma dicono cose diferenti sul software e sui valori. Il progetto GNU continua ad usare il termine "software libero" per esprimere l'idea che la libertà sia importante, non solo la tecnologia.” (R. Stallman) Raymond è probabilmente la persona che più si identifca col movimento; era e rimane il suo teorico principale, ma non ambisce a guidarlo verso una qualsiasi direzione da lui scelta. Il movimento Open Source è guidato da un largo collegio di anziani che include anche i suoi co- fondatori e altre persone importanti come Linus Torvalds, Larry Wall e Guido van Rossum. La scelta a favore dell'Open Source da parte di alcune importanti imprese del settore come la Netscape, l'IBM, la Sun Microsystems e l'HP, facilitarono l'accettazione del movimento Open Source presso l'industria del software, facendo uscire l'idea della "condivisione del codice" dalla cerchia ristretta nella quale era rimasta relegata fno ad allora. Venne cioè accettata l'idea che l'Open Source fosse una metodologia di produzione software efcace. Essendo la disponibilità del codice sorgente uno dei requisiti fondamentali che accomuna il software libero ed il software Open Source, spesso si è indotti a considerare i due concetti equivalenti, ma in realtà non lo sono. Un software è Open Source se i termini secondo i quali viene distribuito rispondono alla Open Source Defnition29 dell'Open Source Initiative (OSI), l'organizzazione fondata nel febbraio 1998 da Perens e Raymond: in particolare, se una licenza rientra in tale defnizione, allora tale licenza può essere dichiarata licenza Open Source. La defnizione potrebbe cambiare nel tempo (nessuno garantisce che questo non possa accadere) e quindi è possibile che una licenza attualmente Open Source non lo sia nel futuro o viceversa. OSI è anche l'organizzazione che su richiesta certifca con il relativo marchio registrato il fatto che una licenza sia efettivamente aderente alla Open Source Defnition. Recentemente l'OSI ha posto un freno al proliferare delle licenze dichiarando che cercherà di limitare il numero di licenze che nel futuro saranno ritenute licenze open source. Questo potrebbe, in linea teorica, far sì che una licenza ritenuta libera non venga ritenuta open source. Una licenza invece è libera se, e solo se, rispetta le quattro libertà fondamentali. Pertanto se una versione di una licenza è libera, allora lo sarà per sempre. In ogni caso, gli insiemi di applicativi designati da software libero e open source coincidono a meno di poche eccezioni. La diferenza fondamentale è nel tipo di approccio: parlando di software libero si pone l'accento sugli aspetti sociologici ed etici, che sono volutamente rimossi nella visione Open Source. In pratica, le defnizioni operative del software libero e del software Open Source sono quasi equivalenti. Le liste di licenze accettate mantenute dalla FSF e dal OSI sono abbastanza simili, diferendo in particolare solo in casi limite come la prima versione dell'Apple Public Source License e dell'Artistic License. I membri dei movimenti per il software libero e per l' Open Source di solito non hanno problemi a cooperare in progetti software comuni. Alcuni autori, quando parlano assieme di questi movimenti, utilizzano altri termini diversi da software Open Source e software libero per cercare di descrivere l'unione dei due concetti. Questi altri termini includono Open Source Software/Free Software (OSS/FS), Free/Open Source Software (FOSS), e Free-Libre/ Open Source Software (FLOSS). Il cambiamento di termini può aver funzionato come previsto, aiutando le imprese a considerare il FOSS seriamente. O forse il FOSS aveva semplicemente raggiunto un livello di

29 http://opensource.org/osd

21 complessità che non poteva più essere liquidato come un’idea di nicchia e stava cominciando a rivaleggiare le sue controparti proprietarie. In ogni caso, durante la Dot-com mania del 1998- 2000, il FOSS divenne la base di innumerevoli start-up. Lo stesso periodo ha visto anche le prime imprese FOSS andare in pubblico, come Red Hat e VA Linux. Molte aziende consolidate, come IBM, Oracle e Sun Microsystems, iniziarono anche a partecipare al FOSS. Nell'Agosto del 1999, la Sun Microsystems rilasciò la suite StarOfce come software sotto la General Public License, suite in seguito rinominata OpenOfce.org. Successivamente nel 2007 rilasciò anche la sua nota piattaforma Java sotto la medesima licenza GPL. Il FOSS fu per un breve periodo screditato dal collasso delle Dot-com, ma continuò a guadagnare sia in popolarità che in imprese e personal computer durante il primo decennio del nuovo millennio. Una volta largamente sviluppato da volontari che lavorano nel tempo libero, oggi il FOSS è così ampiamente visto come una risorsa che oltre l'80% dei contributi al kernel Linux sono fatti da operatori pagati dalle multinazionali. Ormai il FOSS è diventata una seria e importante realtà economica.

22 5. Il calabrone continua a volare Lo sviluppo del kernel Linux. Quanto sta andando veloce, Chi lo sta facendo, Cosa stanno facendo e Chi lo sta sponsorizzando.

“Alcune persone mi hanno detto di non pensare che un pinguino grasso simboleggi realmente la grazia di Linx, e questo mi dice che non devono aver mai visto un pinguino arrabbiato che si fonda verso di loro a 160 km/h.” Linus Torvalds

Chi non conosce la legenda secondo la quale il calabrone a causa della propria conformazione non potrebbe in teoria volare eppure vola? Tale leggenda nacque all'inizio del secolo scorso, pochi anni dopo il primo volo del fratelli Wright. Sulla base delle leggi dell'aerodinamica di quell'epoca, il rapporto tra la superfcie alare dell'insetto e il suo peso corporeo non rendeva in teoria possibile il volo, eppure... il calabrone volava. Studi successivi hanno mostrato come l'aerodinamica degli insetti sia diferente rispetto a quella studiata dai tecnici aeronautici e hanno quindi potuto afermare che, si, il calabrone può volare. Il calabrone, per non saper ne leggere ne scrivere, non ha comunque mai smesso di volare, in barba a tutti. La storia del FOSS è analoga: si sono versati fumi di parole per defnirlo come un approccio che non può funzionare, destinato al fallimento. Eppure continua a funzionare e, cosa più importante, ad espandersi. E che funziona lo hanno ultimamente capito anche le major di produzione software. Ditte che in teoria avrebbero tutto da perdere hanno già deciso di abbracciare la flosofa FOSS o di contribuire allo sviluppo e al sostentamento del movimento. Basta vedere qualche numero, per convincersi di questo. Nel mese di settembre 2013 The Linux Foundation ha pubblicato l'ultimo report relativo allo sviluppo del kernel Linux: “Linux Kernel Development. How Fast It is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It”. (http://www.linuxfoundation.org/publications/linux- foundation). Si tratta del quinto aggiornamento di questo report, che viene pubblicato annualmente a partire dal 2008. Quest'ultimo aggiornamento analizza lo sviluppo del kernel prendendo in considerazione le versioni dalla 3.3 fno all'attuale 3.10. Il kernel che costituisce il nucleo del sistema Linux è il risultato di uno dei più grandi progetti di sviluppo software cooperativo mai avviato. Ogni 2-3 mesi viene rilasciata agli utenti Linux una nuova versione che fornisce nuovi aggiornamenti, ciascuno con nuove importanti caratteristiche, nuove compatibilità e in generale migliori prestazioni. Il tasso di cambiamento nel kernel è molto elevato e in continua crescita, con oltre 10.000 patch in ogni versione. Queste versioni contengono ciascuno il lavoro di oltre 1.100 sviluppatori che rappresentano oltre 225 aziende. Dal 2005 quasi 10.000 singoli sviluppatori provenienti da più di 1.000 diverse aziende hanno contribuito allo sviluppo del kernel. Entrando più nel dettaglio, dal report emerge che il tempo tra il rilascio di una versione del kernel e la successiva è mediamente compreso, per accordo tra gli sviluppatori, tra le 8 e le 12 settimane. Infatti un periodo più breve non darebbe ai tester abbastanza tempo per scovare e risolvere eventuali problemi dei nuovi aggiornamenti, mentre un periodo più lungo causerebbe

23 un eccessivo accumulo di lavoro. Il tempo efettivo tra le successive versioni del kernel tende a variare a seconda delle dimensioni del rilascio e le difcoltà incontrate nello sviluppo, tuttavia la distanza è sensibilmente diminuita nel corso degli ultimi ultimi anni. Nella versione precedente di questo rapporto (Aprile 2012) il ciclo medio di sviluppo era di circa 80 giorni, mentre ora la media è molto più vicino a 70 giorni. Questa tendenza è quasi certamente il risultato di una migliore disciplina sia prima che durante il ciclo di sviluppo, nonché del maggiore uso di strumenti di test automatici per individuare e risolvere più velocemente i problemi. Le patch di ogni versione sono progressivamente aumentate di numero, quasi del 50% tra la versione 3.0 (9.153 patch) e la 3.10 (13.367 patch). Inoltre, considerando il tempo richiesto per ogni versione, è stato possibile calcolare il numero di modifche al kernel accettate ogni ora. Qui il totale è addirittura quasi raddoppiato tra la versione 3.0 (5.96 modifche per ora) e la 3.10 (9.02 modifche per ora). Ne risulta che il numero di modifche inserite in ogni versione aumenta costantemente, mentre il tempo di sviluppo è sempre più breve. Il kernel Linux cresce progressivamente, man mano che aumenta l'hardware supportato e vengono aggiunte nuove funzioni: si è passati dalle circa 10.000 linee di codice della prima versione del 1997, alle 14.652.135 linee di codice (36.788 fles) della versione 3.0, fno alle 16.961.031 linee (43.029 fles) della versione 3.10. Il numero di sviluppatori che lavorano sul kernel Linux e delle società che sponsorizzano questo lavoro è progressivamente cresciuto, versione dopo versione. Alla versione 3.0 lavorarono 1.131 sviluppatori e 191 società, mentre alla versione 3.10 hanno lavorato 1.392 sviluppatori e 243 aziende. Il kernel Linux è una risorsa utilizzata da una grande varietà di imprese. Molte di queste non hanno mai contribuito allo sviluppo del kernel, ma si accontentano di utilizzarlo così com'è e non hanno sentono la necessità di contribuire al suo sviluppo in un qualche modo o in una qualche direzione. Al contrario, sono molte le imprese, tra l'altro in numero sempre crescente, che lavorano congiuntamente allo sviluppo del kernel, imprese che al contrario sono in diretta competizione nei propri settori. Gli sviluppatori indipendenti, cioè che non sono fnanziati nel loro lavoro da nessuna azienda, hanno realizzato il maggior numero di modifche, il 13,6% del totale. Le 10 società che hanno contribuito maggiormente sono state: Red Hat con il 10,2%, Intel con l'8,8%, Texas Instruments con il 4,1%, Linaro con il 4,1%, SUSE con il 3,5%, IBM con il 3,1%, Samsung con il 2,6%, Google con il 2,4%, Vision Engraving Systems con il 2,3% e Consultants con l'1,7%. Dalla classifca completa ne risulta che oltre l'80% dello sviluppo del kernel è realizzato da programmatori pagati per il loro lavoro. E' anche interessante notare che il contributo proveniente da sviluppatori indipendenti, quindi non espressamente pagati per le loro modifche, è invece in lento declino, segno del sempre maggiore interesse anche delle grandi società nello sviluppo e sostentamento del progetto. La maggior parte del lavoro è svolto da un ristretto numero di aziende, ma è necessario sottolineare che il numero reale di aziende che contribuiscono supera le 500 unità. In conclusione, è evidente che il kernel Linux è uno dei progetti open source più grandi e di maggior successo mai avviati. La velocità delle modifche e il numero degli sviluppatori mostra che è supportato da una comunità molto attiva. La velocità degli aggiornamenti è in continua crescita, così come il numero degli sviluppatori e delle imprese coinvolte nel progetto; ciò dimostra sempre di più che nel processo di sviluppo è possibile aumentare velocità di sviluppo e

24 numero di sviluppatori senza problema. Sono numerose le aziende che fnanziano la maggior parte del lavoro di sviluppo, anche se ce ne sono molte altre che potrebbero trarre benefcio da Linux ma che fnora hanno scelto di non contribuire al progetto. Con l'attuale espansione di Linux nei server, nei PC desktop e nel settore mobile è ragionevole aspettarsi nei prossimi anni un ulteriore aumento delle società e degli sviluppatori che contribuiscono al progetto. E nel frattempo il calabrone continua a volare sempre più in alto.

25