Linux
ed il Progetto GNU
di Richard Stallman
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.