Linux ed il Progetto GNU

di Richard Stallman

 [immagine di un Baby GNU] [ Catalano | Coreano | Francese | Giapponese | Inglese | Italiano | Portoghese | Russo | Serbo-Croato | Sloveno ]

Molti utenti di computer fanno girare ogni giorno una versione modificata del sistema GNU (18k caratteri), ma non se ne rendono conto. Per una singolare combinazione di eventi, la versione di GNU attualmente più diffusa è più spesso nota come "Linux'' e molti utenti non sono consapevoli di quanto sia collegata al Progetto GNU.

Esiste davvero un Linux; si tratta di un kernel, che queste persone stanno utilizzando. Ma non si può utilizzare un kernel da solo; un kernel è utile soltanto in quanto parte di un sistema operativo completo. Linux è normalmente utilizzato in combinazione con il sistema operativo GNU: il sistema è fondamentalmente GNU e ha Linux come kernel.

Molti utenti non si rendono completamente conto della differenza che c'è tra il kernel, che è Linux, e il sistema completo, che viene anche chiamato "Linux". L'uso ambiguo del nome non ne facilita però la comprensione.

I programmatori di solito sanno che Linux è un kernel. Ma siccome hanno di solito sentito chiamare "Linux" anche il sistema completo, spesso immaginano una storia che corrisponda a quel nome. Per esempio, molti credono che quando Linus Torvalds ebbe finito di scrivere il kernel, i suoi amici si guardarono intorno alla ricerca di altro software libero e, come per caso, era già disponibile la maggior parte di quanto necessario per costruire un sistema compatibile con Unix.

Quello che trovarono non era casuale: si trattava del sistema GNU. Il software libero disponibile si aggiunse a un sistema completo perché il Progetto GNU stava lavorando dal 1984 per creare un tale sistema completo. Il Manifesto GNU (31k caratteri) si era prefisso l'obiettivo di sviluppare un sistema libero compatibile con Unix chiamato GNU. L'Annuncio iniziale del Progetto GNU delinea inoltre alcuni dei piani originali per il sistema GNU. Al momento in cui fu scritto Linux, il sistema era quasi finito.

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

Se cercassimo di quantificare il contributo del Progetto GNU in questo modo, che cosa concluderemmo? Un distributore di CDROM trovò che nella sua "distribuzione Linux", il software GNU costituiva il contributo maggiore, circa il 28% del totale del codice sorgente, inclusi alcuni dei principali componenti essenziali senza i quali non potrebbe esserci nessun sistema. Linux propriamente detto costituiva circa il 3%. Quindi se si dovesse scegliere un nome per il sistema in base a chi scrisse i programmi che ne fanno parte, la scelta più appropriata sarebbe "GNU".

Ma non crediamo che questo sia il giusto modo di considerare la questione. Il Progetto GNU non era, e non è, un progetto per lo sviluppo di pacchetti software specifici. Non era un progetto per lo sviluppo di un compilatore C, anche se lo abbiamo fatto. Non era un progetto per lo sviluppo di un editor di testi, anche se ne abbiamo sviluppato uno. Lo scopo del progetto GNU era sviluppare un sistema libero completo compatibile con Unix.

Molte persone hanno dato importanti contributi al software libero presente nel sistema e tutti meritano riconoscimento. Ma il motivo per cui si tratta di un sistema, e non soltanto di una collezione di programmi utili, è che il Progetto GNU si è dato da fare perché questi programmi costituissero un sistema unitario. Abbiamo fatto un elenco dei programmi necessari per fare un sistema libero completo e sistematicamente abbiamo trovato, scritto o trovato chi scrivesse tutti i programmi presenti nel nostro elenco. Abbiamo scritto parti importanti, essenziali ma non divertenti, come l'assemblatore e il linker, perché senza questi strumenti non si può avere un sistema. Un sistema completo ha bisogno di ben altro oltre agli strumenti per la programmazione: la Bourne Again SHell (bash), l'interprete PostScript Ghostscript e la libreria C GNU sono altrettanto importanti.

All'inizio degli anni '90 avevamo messo insieme l'intero sistema ad eccezione del kernel (ma stavamo anche lavorando su un kernel, GNU Hurd, che si appoggia su Mach). Lo sviluppo di questo kernel è stato molto più difficile di quanto ci aspettassimo e stiamo ancora lavorando per finirlo.

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

Mettere insieme i due sembra semplice, ma non è stato un lavoro facile. La libreria C GNU (abbreviata in glibc) 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 il confronto con i problemi dell'installazione e dell'avvio del sistema, problemi che non avevamo ancora affrontato perché non eravamo ancora arrivati a quel punto. Le persone che avevano sviluppato le varie distribuzioni del sistema diedero un contributo sostanziale.

Oltre a GNU, un altro progetto ha prodotto indipendentemente un sistema operativo libero compatibile con Unix. Questo sistema è conosciuto con il nome di BSD ed è stato sviluppato all'Università di Berkeley. Gli sviluppatori di BSD sono stati ispirati nel rendere il loro lavoro software libero dall'esempio fornito dal Progetto GNU e talvolta sono stati incoraggiati da attivisti di GNU, ma il loro lavoro in realtà si sovrappone poco con GNU. Gli attuali sistemi BSD usano del software GNU, proprio come il sistema GNU e le sue varianti usano del software BSD; ma presi nel loro complesso, sono due sistemi differenti che si sono evoluti separatamente. Un sistema operativo libero di oggi è quasi certamente o una variante di un sistema GNU o un tipo di BSD.

Il Progetto GNU supporta sia i sistemi GNU/Linux sia il sistema GNU, anche con finanziamenti. Abbiamo finanziato la riscrittura delle estensioni relative a Linux alla libreria C GNU, che ora sono ben integrate e i sistemi GNU/Linux più recenti usano la versione attuale della libreria senza modifiche. Abbiamo anche finanziato una prima fase di sviluppo di Debian GNU/Linux.

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

Esiste un certo numero di aziende che vendono computer con preinstallati sistemi GNU/Linux completamente liberi.


Ritorna alla pagina principale di GNU.

Per informazioni e domande sulla FSF e GNU rivolgersi, possibilmente in inglese, a gnu@gnu.org. Altri modi per contattare la FSF.

Commenti relativi a queste pagine web a webmasters@www.gnu.org, altre domande a gnu@gnu.org.

Copyright 1997, 1998 Richard Stallman

La copia letterale e la distribuzione di questo articolo nella sua integrità sono permesse con qualsiasi mezzo, a condizione che questa nota sia riprodotta.

Aggiornato: 22 ottobre 2000 bfteam