Linux e il progetto GNU

di Richard Stallman

Nota: i link esterni che appaiono in questo documento puntano a it.gnu.org, il mirror italiano di www.gnu.org, poiché tali documenti non sono stati ancora tradotti, che io sappia, con la sola eccezione del manifesto GNU.

Molti utenti di calcolatore fanno girare ogni giorno una versione modificata del sistema GNU (18k characters), senza rendersene conto. Per uno strano succedersi di eventi, la versione più diffusa al giorno d'oggi del sistema GNU è più stesso nota con il nome di ``Linux'', e molti utenti non si rendono conto di quanto questo sia collegato al Progetto GNU.

Esiste un vero Linux, si tratta del nucleo del sistema che queste persone stanno usando. Ma non si può usare il nucleo (kernel) da solo, un kernel è solo utile in quanto parte di un sistema operativo completo. Il sistema operativo al cui interno di solito si trova Linux è una versione modificata del sistema GNU; in altre parole si tratta di un "sistema GNU basato su Linux".

Molti utenti non si rendono completamente conto della differenza che c'è tra il kernel (che sarebbe Linux) e il sistema completo, che viene chiamato Linux anch'esso. L'uso ambiguo del nome, però, non facilitare la comprensione della questione.

I programmatori di solito sanno che Linux è il kernel, ma siccome anche loro hanno spesso sentito parlare del sistema completo con il nome di Linux, spesso credono che la storia rispecchi il nome. Per esempio, molti credono che una volta che Linus Torvalds ha finito di scrivere il kernel, i suoi amici si siano guardati intorno cercando altro free software, e quasi per caso tutto quello che serviva per fare un sistema simile a Unix era già disponibile.

Quello che hanno trovato non era lì per caso, si trattava del sistema GNU. Il software libero disponibile costituiva nel suo complesso un sistema completo perché il progetto GNU stava lavorando dal 1984 per creare tale sistema completo. Il manifesto GNU Manifesto (31k characters) [traduzione italiana disponibile qui] aveva portato avanti lo scopo di creare un sistema operativo libero simile a Unix, che si chiamasse GNU. Nel momento in cui venne scritto Linux il sistema GNU era quasi completo.

La maggior parte dei progetti di programmi liberi hanno lo scopo di sviluppare un programma che svolga un particolare lavoro. Per esempio, Linus Torvalds si propose di scrivere un kernel simile a Unix (cioè Linux); Donald Knuth si propose di scrivere un impaginatore di testi (TeX); Bob Scheifler si propose di sviluppare in sistema a finestre (X Windows). È naturale misurare il contributo di questo tipo di progetti in base ai programmi specifici che questi hanno prodotto.

Se cerchiamo di misurare il contributo del progetto GNU in questo modo, cosa concluderemmo? Un distributore di CD-ROM ha misurato che nella sua ``Distribuzione Linux'', il software GNU costituiva il contributo maggiore, circa il 28% del totale del codice sorgente, includendo alcuni dei componenti più essenziali senza dei quali non ci sarebbe stato un sistema. Linux propriamente detto costituiva solo il 3%. Quindi se si dovesse scegliere un nome per il sistema operativo in base a chi ha scritto i programmi che ne fanno parte, la proposta più appropriata sarebbe ``GNU''.

Ma noi non crediamo che questo sia il giusto modo di considerare la questione. Il progetto GNU non era, e non è, il progetto di sviluppare specifici pacchetti software. Non era il progetto di sviluppare un compilatore C, anche se lo abbiamo fatto. Non era il progetto di sviluppare un editor di testi, anche se lo abbiamo fatto. Lo scopo del progetto GNU era di sviluppare un sistema completo e libero simile a Unix.

Molte persone hanno dato importanti contributi per software libero all'interno del sistema, e tutti devono essere ringraziati. Ma il motivo per cui si tratta di un sistema, non solo una collezione di programmi utili, è perché il progetto GNU si è dato da fare perché fosse un sistema, Abbiamo fatto una lista dei programmi che servivano per fare un sistema libero e completo, e abbiamo sistematicamente trovato i programmi, o li abbiamo scritti, o abbiamo trovato persone che scrivessero tutto quello che costituiva la nostra lista. Abbiamo scritto parti essenziali ma non divertenti, come l'assemblatore e il linker, perché non ci può essere un sistema senza questi strumenti. Un sistema ha bisogno di altro oltre agli strumenti di programmazione; l'interprete di comandi ``bash'', l'interprete Postscript Ghostscript, e la libreria C GNU erano altrettanto importanti.

All'inizio degli anni '90 avevamo messo insiemi il sistema completo, con l'eccezione del kernel (ma stavamo lavorando su un kernel, GNU Hurd, che si appoggia su Mach). Lo sviluppo di questo kernel è stato molto più difficile di quello che ci aspettavamo, e stiamo ancora lavorando per finirlo.

Per fortuna non occorre aspettare che sia terminato, perché Linux è già funzionante adesso. Quando Linus Torvalds ha scritto Linux, ha colmato l'ultima grossa lacuna. La gente ha quindi potuto mettere insieme Linux e il sistema GNU per ottenere un sistema libero completo: un sistema GNU basato su Linux (o sistema GNU/Linux, per brevità).

Mettere insieme i due sembra semplice, ma non è stato un lavoro banale. La libreria C GNU (chiamata glibc per brevità) ha dovuto essere modificata considerevolmente. L'integrazione di un sistema completo come una distribuzione che funzionasse ``così com'è'' è stato un lavoro altrettanto impegnativo. Ha richiesto di confrontarsi con i problemi dell'installazione e dell'avvio del sistema, un problema che non avevamo ancora affrontato perché non eravamo ancora arrivati a quel punto. Le persone che hanno sviluppato le varie distribuzioni del sistema hanno dato un contributo sostanziale.

In aggiunta al progetto GNU, un altro progetto ha prodotto indipendentemente un sistema operativo libero simile a Unix. Questo sistema si chiama BSD ed è stato sviluppato all'università della California di Berkeley. Gli sviluppatori di BSD si sono ispirati all'esempio fornito dal progetto GNU e talvolta sono stati aiutati dagli attiviti di GNU; il loro reale lavoro, comunque, si sovrappone poco con GNU. I sistemi BSD di oggi usano del software GNU, proprio come il sistema GNU e le sue varianti usano del software BSD; ma se presi nel loro complesso i due sono sistemi differenti che si sono evoluti separatamente. Oggi un sistema operativo libero sarà quasi sicuramente o una variante del sistema GNU o un tipo di BSD.

Il progetto GNU supporta i sistemi GNU/Linux come il sistema GNU, anche con finanziamenti. Abbiamo finanziato la riscrittura delle estensioni alla libreria C che sono tipiche di Linux, così che adesso questo sono ben integrate e i sistemi GNU/Linux più recenti usano la versione attuale della libreria senza alcuna modifica. Abbiamo anche finanziato i primi stadi di sviluppo di Debian GNU/Linux.

Per la maggior parte del nostro lavoro oggi usiamo sistemi GNU basati su Linux, e speriamo che li usiate anche voi. Ma per favore non confondete il pubblico usando il termine Linux in modo ambiguo. Linux è il kernel, una delle componenti più importanti del sistema. Ma il sistema nel suo complesso è più o meno il sistema GNU.

Copyright 1997, 1998 Richard Stallman
Questa è una traduzione non ufficiale del documento in inglese. La copia letterale e la ridistribuzione sono permesse senza pagamento di diritti, purchè questa nota sia mantenuta.


Ultimo aggiornamento: 18 Marzo 1998, Richard Stallman
Traduzione: 28 Luglio 1998, Alessandro Rubini