GNU
è un software di pubblico dominio in grado di sostituire
i sistemi operativi più diffusi quali Unix e Windows: ognuno
è libero di copiarlo e di distribuirlo, così come
di apportarvi dei cambiamenti grandi o piccoli che siano. Attualmente
sono molto diffuse le varianti del sistema GNU che si basano su
Linux, fondate sullo sviluppo del Kernel creato da Linus Torvald.
Esse sono conosciute come sistemi Linux, o più propriamente
sistemi GNU/Linux.
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.
Se vuoi
saperne di più leggi la storia
del progetto Gnu di Richard
Stallman
|