Un nome ingannevole
Le origini del sistema operativo Unix sono in un progetto risalente alla metà degli anni ’60: la realizzazione del sistema operativo MULTICS (Multiplexed Information and Computing Service). Alla scrittura di Multics partecipano At&t, Honeywell, General Electric e il Massachusetts Institute of Technology, con la sponsorizzazione dell’Arpa, l’agenzia governativa del Dipartimento della Difesa americano che in quegli anni stava esplorando le possibilità offerte dall’informatica e dalle telecomunicazioni, finanziando numerosi esperimenti, tra cui la realizzazione dei primi due nodi Internet.
La principale caratteristica di Multics doveva essere la modularità: l’obiettivo del progetto era la realizzazione di un sistema operativo che fosse in grado di lavorare anche spegnendo o disattivando alcune parti del computer senza compromettere il funzionamento degli altri componenti, né il lavoro degli utenti che utilizzavano le parti ancora attive del calcolatore. La modularità avrebbe consentito a questo sistema operativo di essere migliorato o espanso semplicemente aggiungendo nuovi moduli, senza dover ricostruire tutto a partire da zero.
Nel 1969 la realizzazione di Multics è ancora in alto mare, e la At&t decide di abbandonare l’impresa. È proprio in questo periodo che Dennis Ritchie e Ken Thompson, nei laboratori Bell della At&t, sviluppano il sistema operativo UNIX, battezzandolo con un nome che ricordava ironicamente il suo “antenato” Multics.
La portabilità di Unix
Dennis Ritchie dà il suo contributo alla realizzazione di Unix creando il linguaggio di programmazione “C”, un linguaggio nato per essere intuitivo, aperto e flessibile, che è ancora oggi uno dei linguaggi più utilizzati dagli sviluppatori informatici. Thompson e Ritchie sono i primi a realizzare che la tecnologia informatica era ormai matura a tal punto da permettere la scrittura di un intero sistema operativo in un “linguaggio di alto livello” come il C, senza essere costretti a parlare il “linguaggio macchina” dei calcolatori fatto di “zeri” e di “uno”. L’utilizzo di un linguaggio di alto livello, facilmente comprensibile da altri programmatori, è stato la chiave di volta che ha permesso di far funzionare il sistema operativo Unix “trasportandolo” sui computer più svariati, con un’operazione che nel gergo informatico è definita “porting”.
Grazie alla sua altissima “portabilità”, Unix diventa nel giro di poco tempo uno standard all’interno dei centri di calcolo universitari e scientifici, che lo adottano come ambiente comune per lo sviluppo di programmi e soluzioni informatiche. Nel novembre del 1973 Thompson e Ritchie presentano la prima pubblicazione su Unix ad un simposio sui sistemi operativi organizzato dalla Purdue University.
Entra in scena Berkeley
Nel corso del simposio i due creatori di Unix incontrano il professor Bob Fabry, dell’Università californiana di Berkeley, che richiede una copia di Unix da utilizzare per esperimenti all’interno dell’Università. È l’inizio di un lungo rapporto di collaborazione tra Thompson e il Dipartimento di scienze dell’informazione di Berkeley. Inizialmente Thompson aiuta a distanza il dipartimento di “computer science” risolvendo alcuni problemi legati all’utilizzo di Unix sui PDP-11, i computer utilizzati a Berkeley.
I continui riscontri e i severissimi test di utilizzo effettuati dagli studenti e dai docenti di Berkeley consentono a Thompson di migliorare continuamente le funzioni di Unix, in un clima di massima collaborazione e aiuto reciproco. Thompson trascorre a Berkeley l’anno accademico 1975-76 come docente esterno, sviluppando la “Version 6” di Unix assieme a Bob Kridle e Jeff Schriebman. È solo l’inizio di una lunga serie di versioni Unix sviluppate a Berkeley.
Per molti anni la At&t non prende nemmeno in considerazione la commercializzazione di Unix, e lo cede gratuitamente alle Università pur continuando a detenerne i diritti. Quando Unix inizia a imporsi come standard per le workstation, i grandi computer universitari utilizzati per operazioni di calcolo intensivo, diverse aziende del settore informatico decidono di sfruttare commercialmente questo sistema operativo con un sistema fallimentare di alleanze, nel quale ogni azienda cerca di spingere il proprio “dialetto” Unix, sperando che si affermi sulle varianti proposte dai concorrenti.
Inizia la distribuzione di Unix
Sarà l’Università di Berkeley, tuttavia, ad avere l’ultima parola, sviluppando nel corso degli anni versioni di Unix non commerciali e liberamente utilizzabili, che diventano le più diffuse e apprezzate dagli utenti di questo leggendario sistema operativo. Nel 1977, dopo la partenza di Thompson, due allievi di Berkeley, Bill Joy e Chuck Haley, iniziano a interessarsi allo sviluppo del “kernel” di Unix, il “nocciolo” del sistema operativo.
Il loro lavoro dà vita alla “Berkeley Software Distribution”, una versione da distribuire del sistema operativo Unix già pronta da installare, che poteva essere ottenuta semplicemente contattando Bill Joy a Berkeley e richiedendo la spedizione di un nastro contenente i programmi necessari all’installazione di Unix. Joy non è mosso da interessi commerciali, ma la motivazione che lo spinge a spedire una copia di Unix a chiunque ne faccia richiesta è la possibilità di migliorare ulteriormente le prestazioni del sistema operativo grazie ad una “base di utenti” più estesa, che avrebbe fornito preziosi suggerimenti per nuove funzioni e individuato un maggior numero di errori.
Il concetto di “distribuzione” può inizialmente sconcertare chi è abituato ai sistemi operativi commerciali, prodotti e sviluppati da un unico distributore. Unix, che non nasce come un prodotto commerciale ma come un progetto di ricerca, nel corso degli anni viene migliorato e perfezionato da più gruppi che producono differenti versioni di Unix, chiamate appunto “distribuzioni”, lasciando agli utenti il compito di individuare la distribuzione più adatta alle proprie esigenze.
Unix diventa sinonimo di rete
Nel corso degli anni, il “pacchetto Unix” messo a disposizione dall’Università di Berkeley viene continuamente migliorato e ampliato. La “Second Berkeley Software Distribution” (abbreviata in 2BSD) è pronta nel 1978, e la versione finale di questa distribuzione, la 2.11BSD, è utilizzata ancora oggi da diversi PDP-11 sparsi in vari angoli del mondo. La terza distribuzione di Berkeley, la 3BSD del dicembre 1979, viene talmente apprezzata all’interno degli ambiti scientifici e universitari che Bob Fabry riesce a strappare un ingente finanziamento al DARPA, (Defense Advanced Research Project Agency), l’organizzazione governativa militare figlia dell’Arpa. Lo scopo del finanziamento è la realizzazione di una versione avanzata della distribuzione 3BSD, arricchita con nuovi miglioramenti richiesti dal Darpa, tra cui lo sviluppo delle funzionalità di rete del sistema operativo.
Anche grazie ai finanziamenti del Darpa, le distribuzioni di Unix sviluppate a Berkeley continuano a susseguirsi con un ritmo incalzante. La 4BSD e la 4.1BSD vengono rilasciate rispettivamente nell’ottobre 1980 e nel giugno 1981. Il 1982 è l’anno dell’apertura di Unix al mondo delle reti Tcp/Ip: in aprile nasce la distribuzione 4.1aBSD, che ristruttura completamente Unix con l’aggiunta di nuovi protocolli e di nuovi servizi per l’utilizzo di risorse remote condivise in rete. Un esempio di queste nuove funzioni aggiunte a Unix è il servizio “rlogin”, che utilizzando un collegamento basato sul protocollo di comunicazione Tcp/Ip consente di utilizzare un computer remoto, situato anche a migliaia di chilometri di distanza, così come si farebbe se il computer fosse a pochi metri da noi.
Nel 1982 Bill Joy lascia l’Università per fondare la Sun Microsystems, dedita alla produzione di workstation per le grandi aziende e i centri universitari. Le prime macchine Sun hanno come sistema operativo proprio il nuovo Berkeley Unix corredato dal Tcp/Ip. Joy sceglie di includere gratuitamente nei suoi computer la distribuzione Unix di Berkeley, senza nessun costo aggiuntivo rispetto a quello della sola macchina, e l’effetto di questa scelta è una vera e propria esplosione del networking nei centri di calcolo industriali e universitari. Nel frattempo il lavoro a Berkeley continua, e nell’agosto 1983 viene rilasciata la nuova distribuzione 4.2BSD, seguita nel giugno 1986 dalla versione 4.3.
1989: reso disponibile il codice sorgente
Le “generazioni” di Unix si susseguono con regolarità fino al giugno 1989, data di nascita della “Networking Release 1”, una versione di Unix caratterizzata dalla totale libertà di utilizzo del codice sorgente. Un sistema operativo è un po’ come il “motore” di un computer, e se il motore della macchina permette di far girare le ruote del veicolo, il sistema operativo è lo strumento che consente di utilizzare la tastiera, lo schermo, i lettori Cd e tutte le altre risorse di un computer.
Il “codice sorgente” (source code) di un sistema operativo o di un programma informatico è l’insieme delle istruzioni che regolano il funzionamento del sistema operativo o del programma in questione. Per migliorare o aggiungere nuove funzioni a Unix o a qualunque altro “motore informatico”, è necessario per poter conoscere e modificare il suo codice sorgente. I sistemi operativi commerciali (ad esempio quelli prodotti da Microsoft) sono programmi già belli e pronti, distribuiti in forma “eseguibile” o “binaria”, cioè senza la possibilità di accedere al codice sorgente.
È come avere il motore di una macchina chiuso in una scatola nera, senza la possibilità di ripararlo o migliorarlo in caso di difetti o malfunzionamenti. Fino alla “Networking Release 1”, per ottenere le varie versioni della Berkeley Software Distribution bisognava versare una somma alla At&t, che aveva sviluppato il primo embrione di Unix, per ottenere una “licenza di accesso al codice sorgente” (source license), necessaria per poter aprire la “scatola nera” di Unix e aggiungere nuove funzioni o migliorare quelle già esistenti.
Inizialmente il costo della licenza At&t non è proibitivo, ma quando la cifra da pagare inizia a lievitare, i programmatori di Berkeley decidono di fornire separatamente i programmi necessari per le funzionalità di rete e l’accesso remoto (il “networking” di Unix), mettendo a disposizione anche irispettivi codici sorgente.
Le condizioni di utilizzo della “Networking Release 1” sviluppata a Berkeley sono molto liberali. La licenza di utilizzo consente a chiunque di ridistribuire quei programm nella loro interezza o integrati con eventuali modifiche, senza l’obbligo di aggiungere i codici sorgente alle versioni modificate.
Il distacco da AT&T
Tuttavia per gli sviluppatori Unix di Berkeley non è sufficiente fornire solamente i programmi relativi alle funzionalità di rete; cercano perciò di rincrementare il più possibile il numero dei “pezzi di Unix” liberamente distribuibili. Attraverso la rete, Keith Bostic chiama a raccolta un piccolo esercito di programmatori, a cui viene affidato il compito di riscrivere da zero i programmi di sistema e le cosiddette “utilities”, funzioni aggiuntive del sistema operativo, per rimpiazzare quelli prodotti dalla At&t e vincolati dalla licenza di accesso al codice sorgente.
Basandosi unicamente sulle descrizioni dei programmi da rimpiazzare, decine di programmi e utilities vengono riscritte dal nulla nel giro di 18 mesi, e nei mesi successivi anche il kernel, il cuore del sistema operativo, viene analizzato per rimuovere e rimpiazzare tutte le funzioni riconducibili alla At&t. Keith Bostic, Mike Karels e Kirk McKusick, dopo aver ripulito la maggior parte del kernel, si accorgono che nonostante la riscrittura di decine e decine di file, ce ne sono ancora sei che non possono essere rimpiazzati facilmente, sei pezzetti di sistema operativo che non possono essere sottratti facilmente al controllo della At&t.
Ciò nonostante la passione per l’informatica riesce ad avere il sopravvento sui cavilli legali. Nel giugno 1991 l’amministrazione dell’Università di Berkeley dà il suo assenso alla diffusione della “Networking Release 2”, una nuova distribuzione del sistema operativo, purtroppo ancora “contaminata” dai sei file riconducibili alla At&t, ma rilasciata con la stessa licenza di libero utilizzo impiegata per la “Networking Release 1”.
Ancora una volta, centinaia di persone e organizzazioni interessate alla sperimentazione, allo sviluppo o al semplice utilizzo di questo rivoluzionario sistema operativo richiedono a Berkeley una copia di Bsd. Nel giro di sei mesi Bill Jolitz riesce a rimpiazzare anche i sei file mancanti, producendo finalmente la prima distribuzione Unix di Berkeley completamente libera da qualunque vincolo con la At&t, una “materia prima” informatica utilizzata come ambiente comune di lavoro da centinaia di sviluppatori, programmatori, docenti universitari e studenti sparsi per il mondo.
Unix per personal computer
Lo sviluppo della Berkeley System Distribution e la battaglia tecnico/legale per l’emancipazione dal software proprietario della At&t è solo un piccolo frammento della grande storia di Unix: a partire dal rilascio della Networking Release 2 iniziano a fiorire diversi gruppi di sviluppatori, che producono, migliorano e sperimentano diverse varianti di questo sistema operativo, con un’evoluzione che continua tuttora.
Nel 1992 Bill Jolitz annuncia la nascita di 386/BSD, una versione della “Berkeley Software Distribution” scritta su misura per i microprocessori Intel 80386 dei personal computer domestici. A pochi mesi di distanza dalla diffusione in rete di questa nuova versione di Unix, un gruppo di utenti interessati allo sviluppo di 386/BSD dà vita al NetBSD group, una task force di programmatori che nel corso degli anni produrrà varie versioni della “NetBSD Distribution”, una distribuzione Unix nata a partire dalla 386/BSD, migliorata e sviluppata in rete attraverso il lavoro del NetBSD group.
Un altro team attorno al quale si è sviluppata una distribuzione derivata dalla “Networking Release 2” è il FreeBSD group, che nasce con l’intento di venire incontro agli utenti meno esperti, cercando di facilitare il processo di installazione del sistema operativo.
Sempre nel 1992 la At&t cede alla Novell, azienda specializzata in reti informatiche locali, la sua società specializzata in Unix: Unix System Laboratories. Il prezzo pagato è di 150 milioni di dollari. A sua volta la Novell cederà le sue attività relative a Unix alla SCO, Santa Cruz Operation, nel settembre 1995.
Questo sistema operativo, figlio ribelle di cui nessun genitore vuol prendersi cura, ha grandi difficoltà a diventare un prodotto redditizio: nessuno riesce ad appropriarsene e a chiuderlo nella gabbia del copyright quando si è ancora in tempo. Nonostante il suo fallimento commerciale, la storia di Unix è caratterizzata da un grande successo tra gli appassionati di informatica e nel mondo universitario, dove questo strumento libero è stato migliorato, anno dopo anno, dal lavoro coordinato di miriadi di sviluppatori sparsi per il pianeta e uniti grazie all’“intelligenza collettiva” delle reti telematiche.