Open source e free software: definizioni e storia di una filosofia

La locuzione inglese open source (sorgente aperta) indica un software di cui gli autori – o. più precisamente, i detentori dei diritti – rendono pubblico il codice sorgente, favorendone il libero studio e permettendo a programmatori indipendenti di apportarvi modifiche ed estensioni. Questa possibilità è regolata per mezzo di apposite licenze d’uso. La diffusione di Internet ha dato grande impulso a questo fenomeno, perché permette a programmatori distanti di coordinarsi e lavorare allo stesso progetto.

Alla filosofia del movimento open source si ispira il movimento open content (contenuti aperti). In questo caso, a essere liberamente disponibile non è il codice sorgente di un software, ma contenuti editoriali quali testi, immagini, video e musica. Wikipedia (che è la fonte di questo post) è un chiaro esempio dei frutti di questo movimento. Attualmente, l’open source tende ad assumere rilievo filosofico, poiché consiste in una nuova concezione della vita, aperta e refrattaria a ogni oscurantismo, che si vuole superare mediante la condivisione della conoscenza.

Sebbene le locuzioni open source e software libero siano sovente utilizzate come sinonimi, hanno significati leggermente differenti:

  • l’Open Source Initiative utilizza il termine open source per descrivere soprattutto libertà sul codice sorgente di un’opera;
  • il concetto di software libero definisce più generalmente le libertà applicate a un’opera, ed è prerequisito che il suo codice sia consultabile e modificabile, rientrando quindi generalmente nella definizione di open source.

Storia

ferranti-mark-1
Il Ferranti Mark 1

Negli anni Quaranta del secolo scorso il problema della condivisione del codice si poneva in termini molto diversi da quelli attuali. Esistevano pochissimi computer, costruiti spesso in un unico esemplare e con specifiche hardware molto diverse e non compatibili. Basti pensare che fu solo nel 1951 che verrà messo a listino un modello di computer, il Ferranti Mark 1. Di conseguenza, anche il software che veniva sviluppato caso per caso non poteva essere trasportato su altre macchine e non esistevano standard di riferimento cui attenersi. Le conoscenze di programmazione venivano liberamente condivise in quanto erano considerate più simili alle conoscenze scientifiche che a quelle industriali.

Verso la fine degli anni Cinquanta, e soprattutto negli anni Sessanta del secolo scorso, è stato possibile riusare lo stesso codice e distribuirlo anche se in modo oggi ritenuto piuttosto artigianale, ovvero con nastri e schede perforate. Questo fenomeno divenne evidente soprattutto quando si affermò il vantaggio di usare una stessa porzione di codice, il che presupponeva macchine uguali e problemi simili da risolvere.

Fino a tutti gli anni Settanta, anche se in misura decrescente, la componente principale e più costosa di un computer era l’hardware, che comunque era del tutto inutile in assenza di software. Da questa situazione deriva la scelta di alcuni produttori di hardware di vendere il loro prodotto accompagnato da più software possibili. In questo modo, le macchine venivano rese più utili e quindi più concorrenziali. Il software, tra l’altro, non poteva avvantaggiare la concorrenza in quanto funzionava solamente su un preciso tipo di computer e non su altri, spesso neanche su altri modelli dello stesso produttore. Un altro fattore che contribuì alla sviluppo di software condiviso fu la diffusione dei linguaggi di programmazione. Ad esempio, in ambito scientifico, un programma scritto in Fortran poteva essere scambiato tra diversi ricercatori. La disponibilità del codice sorgente era indispensabile per apportare le piccole modifiche rese necessarie dai “dialetti” adottati dalle varie aziende produttrici per il linguaggio di programmazione.

Lo sviluppo dei sistemi operativi rese i programmi sempre più portabili, in quanto lo stesso sistema operativo, con gli stessi compilatori veniva offerto dal produttore sui suoi diversi modelli di hardware. La presenza di sistemi operativi funzionanti per macchine di differenti produttori di hardware ampliava ulteriormente le possibilità di usare lo stesso codice in modo relativamente indipendente dall’hardware usato. Uno di questi sistemi operativi era Unix, iniziato nel 1969 come progetto all’interno di un’impresa delle telecomunicazioni, l’AT&T. Una famosa causa antitrust vietò all’AT&T di entrare nel mercato dell’informatica e ciò fece sì che Unix venisse distribuito a un prezzo simbolico a gran parte delle istituzioni universitarie, che così si ritrovarono ad avere una piattaforma comune, ma senza alcun supporto da parte del produttore. In conseguenza di ciò, si creò spontaneamente una rete di collaboratori, coordinata dall’Università di Berkeley, attorno al codice di questo sistema operativo. Da Berkeley sarebbe poi uscita la versione BSD di Unix, che diventa da un lato un centro di sviluppo e innovazione e, dall’altro, la base di partenza per numerosi fork.

La nascita del software proprietario

Considerato che la condivisione del codice è nata insieme all’informatica, piuttosto che di origini dell’openn source si dovrebbe parlare di origine del software proprietario ed esaminare il contesto storico nel quale si è verificato questo fenomeno.

L’utilità principale delle licenze restrittive consiste nella possibilità di rivendere lo stesso programma più volte, se necessario con alcune modifiche purché non rilevanti. Questo presuppone che esistano clienti diversi con caratteristiche simili, oltre all’esistenza di più computer sui quali poter far eseguire il programma. Queste condizioni iniziano a determinarsi negli anni Sessanta, grazie al fatto che esisteva un maggior numero di utilizzatori con esigenze standardizzabili come lo erano quelle delle organizzazioni economiche nel’area della contabilità, della logistica o delle statistiche.

L’introduzione dei sistemi operativi rese possibile, inoltre, l’utilizzo dello stesso programma anche su hardware differente aumentando così le possibilità di riutilizzo dello stesso codice e quindi l’utilità di impedire la duplicazione non autorizzata dei programmi.

La suddivisione di AT&T in 26 società (dette cosiddette Baby Bell), permise al colosso americano delle comunicazioni di usare logiche prettamente commerciali nella distribuzione del suo sistema operativo Unix, innalzando notevolmente i costi delle licenze e impedendo la pratica delle patch. Il 1982 fu anche l’anno della divisione delle diverse versioni commerciali di Unix, portate avanti da singoli produttori di hardware. Questi ultimi, effettuando piccole modifiche alla propria versione del sistema operativo, impedirono ai propri utenti l’utilizzo di altri sistemi, facendo sì che i programmi scritti per la propria versione di Unix non funzionassero sui sistemi concorrenti.

Gli anni Ottanta: Stallman, la Free Software Foundation e l’innovazione dei PC

richard-stallman
Richard Stallman

Al MIT di Boston, la sostituzione dei computer fece sì che i programmatori non potessero accedere al sorgente del nuovo driver di una stampante Xerox per implementarvi una funzionalità precedentemente gradita: la segnalazione automatica che vi erano problemi con la carta inceppata. Allo stesso tempo, società private iniziarono ad assumere programmatori del MIT e si diffuse la pratica di non rendere disponibili i sorgenti dei programmi firmando accordi di non divulgazione (in inglese NDA, ovvero Non-Disclosure Agreement).

Molti programmatori – fra cui Richard Stallman che sarebbe diventato il portabandiera del software libero – si rifiutarono di lavorare per una società privata. Nel 1985, Stallman fondò la Free Software Foundation (FSF), organizzazione senza fini di lucro per lo sviluppo e la distribuzione di software libero. In particolare lo sviluppo di un sistema operativo completo, compatibile con Unix ma distribuito con una licenza permissiva, con tutti gli strumenti necessari altrettanto liberi. Si tratta del progetto nato l’anno precedente, ovvero GNU, acronimo ricorsivo per collegarsi e contemporaneamente distinguersi da Unix, ovvero “GNU’s not Unix“.

L’obiettivo principale di GNU era essere software libero. Anche se GNU non avesse avuto alcun vantaggio tecnico su Unix, avrebbe avuto sia un vantaggio sociale, permettendo agli utenti di cooperare, sia un vantaggio etico, rispettando la loro libertà.

Tale progetto, finanziato dalla FSF, venne portato avanti da programmatori appositamente stipendiati. I principali contributi vennero da Stallman stesso: il compilatore gcc e l’editor di testo Emacs. Furono sviluppate anche altre componenti del sistema UNIX, alle quali si sono aggiunte varie applicazioni e veri e propri giochi. Questi programmi vennero distribuiti a un prezzo di circa 150$ che, oltre a coprire i costi di riproduzione garantivano un servizio di supporto al cliente. L’unica condizione era che tutte le modifiche eventualmente effettuate su tali programmi venissero comunicate agli sviluppatori.

Nacque così la GNU General Public License (GPL). Il preambolo del suo manifesto così inizia:

Le licenze per la maggioranza dei programmi hanno lo scopo di togliere all’utente la libertà di condividerlo e di modificarlo. Al contrario la GPL è intesa a garantire la libertà di condividere e modificare il free software, al fine di assicurare che i programmi siano “liberi” per tutti i loro utenti.

Gli anni Ottanta sono caratterizzati da alcuni eventi importanti, tra i quali l’introduzione sul mercato di quello che verrà chiamato Personal Computer (PC), ovvero un elaboratore con un proprio processore concepito per essere utilizzato da un solo utente alla volta. Il prodotto di maggior successo, il PC della IBM, si differenziava dagli altri progetti precedenti perché non utilizzava componenti IBM, ma sia per il software che per l’hardware si affidava alla produzione da parte di terzi. Da un lato, ciò rese possibile ad altre imprese di clonare il PC IBM, abbattendone notevolmente i costi e dall’altro, permise a parecchie società di produrre dei software applicativi standard, in concorrenza gli uni con gli altri, basandosi su un unico sistema operativo, anche se inizialmente i principali produttori di software erano identificabili con prodotti per specifiche applicazioni.

Il notevole ampliamento del mercato rese possibili economie di scala e si instaurò una sorta di sinergia tra quelli che sarebbero diventati i principali attori del settore: il produttore dei processori Intel e il produttore del sistema operativo e di applicativi per ufficio Microsoft. La maggio potenza dei processori rese possibile lo sviluppo di programmi più complessi, mentre la maggior complessità degli applicativi e del sistema operativo richiesero processori più potenti instaurando in un certo modo un circolo vizioso di aggiornamenti continui.

Sia il sistema operativo che gli applicativi furono subito caratterizzati dall’essere destinati ad utenti con conoscenze informatiche relativamente scarse e dall’avere licenze d’uso strettamente commerciali, vietando da un lato agli utenti di farne copie, dall’altro agli sviluppatori di vedere o modificare il codice.

Sempre negli anni Ottanta vennero introdotte le workstation, ovvero sistemi basati su terminali (i client) e computer centrali (i server). Si tratta di sistemi derivati concettualmente dai mainframe e basati essenzialmente su sistemi operativi Unix proprietari. L’hardware stesso varia sul lato server dai mainframe ai PC, mentre sul lato client vengono utilizzati soprattutto PC. Ciò favorì lo sviluppo di software sia per i client, utilizzati spesso da persone con scarse conoscenze informatiche, che per i server, il cui funzionamento viene solitamente garantito da personale informatico particolarmente qualificato.

Gli anni Novanta: Internet, Linux e la Open Source Definition

Benché Internet avesse visto la luce già negli anni Settanta, è soltanto agli inizi degli anni Novanta, con la diffusione del protocollo HTTP e la nascita dei primi browser, che cominciò ad essere diffuso prima in ambito accademico e poi in modo sempre più capillare fra semplici privati.

All’inizio degli anni Novanta, il progetto GNU non aveva ancora raggiunto il suo obiettivo principale, mancando di completare il kernel del suo sistema operativo (GNU Hurd). Per sopperire a tale mancanza, William e Lynne Jolitz riuscirono ad effettuare il porting di Unix BSD su piattaforma Intel 386 nel 1991. Purtroppo, negli anni successivi, tale porting si trovò ad affrontare problemi di natura legale che ne ritardarono temporaneamente lo sviluppo.

linus-torvalds-1
Linus Torvalds

Nello stesso anno, Linus Torvalds, studente al secondo anno di informatica presso l’Università di Helsinki, decise di sviluppare un proprio sistema operativo imitando le funzionalità Unix su un PC con processore Intel 386. Tale processore venne scelto per il suo minor costo e la sua maggiore diffusione rispetto alle piattaforme hardware per le quali erano disponibili i sistemi operativi Unix. Torvalds era spinto dall’insoddisfazione riguardante alcuni applicativi di Minix (un sistema Unix-like su piattaforma PC), dal desiderio di approfondire le proprie conoscenze del processore Intel 386 e dall’entusiasmo per le caratteristiche tecniche di Unix.

Torvalds distribuì il proprio lavoro tramite Internet e ricevette immediatamente un ampio riscontro positivo da parte di altri programmatori, i quali apportarono nuove funzionalità e contribuirono a correggere gli errori riscontrati. Nacque così il kernel Linux, che fu subito distribuito con una licenza libera.

Internet, dal canto suo, rende possibile la comunicazione tra persone molto distanti in tempi rapidi e a basso costo. Inoltre, rende possibile la distribuzione di software direttamente dalla rete, riducendo ulteriormente i costi di duplicazione e le difficoltà a reperire il software stesso. La diffusione dei CD-ROM come supporto privilegiato di raccolte di software rese possibile il fenomeno delle cosiddette distribuzioni.

linuxLinux può essere considerato come il primo vero progetto open source, cioè come il primo progetto che faceva affidamento essenzialmente sulla collaborazione via Internet per progredire. Fino 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”, secondo la quale “aggiungere sviluppatori a un progetto in corso di implementazione in realtà rallenta il suo sviluppo”, legge che ovviamente non è applicabile a un progetto di sviluppo open source.

Agli inizi degli anni Novanta, l’idea delle licenze liberali era rappresentata soprattutto dal già citato Richard Stallman e dalla sua FSF, ovvero le licenze liberali per eccellenza erano la GPL e la LGPL, che però venivano ritenute “contagiose” in quanto, a partire da un codice licenziato con la GPL, qualsiasi ulteriore modifica deve essere distribuita con la stessa licenza. Le idee stesse di Stallman venivano viste con sospetto dall’ambiente commerciale statunitense, il che non facilitava la diffusione del software libero. Per favorirne la diffusione nel mondo degli affari, Bruce Perens, Eric S. Raymond, Ockman e altri iniziarono nel 1997 a pensare di creare una sorta di lobby a favore di una ridefinizione ideologica del software libero, evidenziandone cioè i vantaggi pratici per le aziende e coniarono il termine “Open Source“. Ciò anche al fine di evitare l’equivoco dovuto al doppio significato del termine “free” in inglese, visto che spesso veniva interpretato come “gratuito” invece che come “libero”. L’iniziativa venne portata avanti soprattutto da parte di Raymond che, in occasione della liberalizzazione del codice sorgente di Netscape, voleva utilizzare un tipo di licenza meno restrittivo per le aziende di quanto fosse la GPL.

raymond
Eric Steven Raymond

La scelta a favore dell’open source da parte di alcune importanti imprese del settore come Netscape, IBM, Sun Microsystem e HP, facilitò l’accettazione del movimento open source presso l’industria del software, facendo uscire dalla cerchia ristretta nella quale era rimasta fino ad allora relegata l’idea della “condivisione del codice”. Venne accettata la convinzione che l’open source fosse una metodologia efficace per la produzione di software, nonostante nel suo famoso saggio La cattedrale e il bazaar, Eric S. Raymond avesse esplicitamente criticato i tradizionali metodi di ingegneria del software, metodi che fino a quel momento avevano dato buoni frutti; bisogna tenere presente, infatti, che i primi programmi “liberi”, come GCC, seguivano ancora il modello a cattedrale. Solo successivamente progetti come EGCS adottarono il modello a bazaar,

Software open source maggiormente diffuso

I software applicativi open source oggi maggiormente diffusi sono Firefox, VLC, Gimp, 7-Zip, OpenOffice, LibreOffice, oltre a un gran numero di progetti rivolti non all’utente finale ma ad altri programmatori. Sono degne di nota anche le famiglie di sistemi operativi BSD, GNU, Android e il kernel Linux i cui autori e fautori hanno contribuito in modo fondamentale alla nascita e alla crescita del movimento. La comunità open source è molto attiva e comprende decine di migliaia di progetti, numero tendenzialmente in crescita.

Per quanto riguarda Internet, l’80% dei siti web utilizza linguaggi di programmazione server-sideclient-side open source come PHP o JavaScript. I server web più diffusi sono open source.

Fra i siti più visitati al mondo, Wikipedia utilizza Mediawiki, software libero che rientra nella definizione open source.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *