Questa è la traduzione di una pagina scritta originariamente in lingua
inglese.
Linux e il sistema GNU
di Richard Stallman
Molti usano ogni giorno nei propri computer una versione modificata del sistema GNU senza
rendersi conto. A causa di una serie di eventi particolari, la versione del
sistema GNU attualmente più diffusa è spesso nota come
"Linux", e sono tanti gli utenti che non sanno che si tratta
fondamentalmente del sistema GNU, sviluppato dal Progetto GNU.
Esiste davvero un Linux, e queste persone lo usano, ma è solo una
parte del sistema. Linux è il kernel, il programma del sistema che si
occupa di assegnare le risorse della macchina agli altri programmi che
vengono eseguiti. Il kernel è una parte essenziale del sistema
operativo, ma non si può utilizzare 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 con l'aggiunta di Linux, vale a dire
GNU/Linux. Tutte le distribuzioni cosiddette "Linux" sono in realtà
distribuzioni GNU/Linux.
Molti utenti non capiscono la differenza tra il kernel, che è Linux,
e il sistema completo, che loro chiamano sempre "Linux". L'uso ambiguo di
questo nome non facilita la comprensione. Questi utenti spesso credono che
Linus Torvalds, con un po' di aiuto, abbia sviluppato tutto il sistema
operativo nel 1991.
I programmatori di solito sanno che Linux è un kernel; ma dato che
anche loro sovente hanno sentito parlare di "Linux" riferito al sistema
completo, il più delle volte immaginano una storia che possa
giustificare il fatto di dare a tutto il sistema il nome del kernel. Per
esempio, molti credono che quando Linus Torvalds ebbe finito di scrivere il
kernel, gli utenti si guardarono intorno alla ricerca di altro software
libero e trovarono che, come per caso, praticamente tutto il necessario per
costruire un sistema simile a Unix era già disponibile.
Quello che trovarono non fu casuale: si trattava del sistema GNU già
quasi completo. Il software libero
disponibile si unì per formare un sistema completo perché il
Progetto GNU stava già lavorando dal 1984 per creare un tale
sistema. Nel Manifesto GNU avevamo
stabilito l'obiettivo di sviluppare un sistema libero simile a Unix chiamato
GNU. L'Annuncio iniziale del
Progetto GNU delinea inoltre alcuni dei piani originali per il sistema
GNU. Quando si cominciò a scrivere Linux, GNU era già quasi
finito.
La maggior parte dei progetti di software libero ha lo scopo di sviluppare
un programma che svolga un particolare compito. 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 di
sviluppare un sistema a finestre (X Windows). E' normale misurare il
contributo di questo tipo di progetti in base ai programmi specifici che
hanno prodotto.
Se provassimo a quantificare il contributo del Progetto GNU in base a questo
criterio, a quale conclusione arriveremmo? Un distributore di CD-ROM
rilevò che nella sua "distribuzione Linux", il software GNU
costituiva la componente maggiore, circa il 28% del totale del codice
sorgente, inclusi alcuni dei principali componenti essenziali senza i quali
non potrebbe esserci alcun sistema. Linux propriamente detto costituiva
circa il 3%. (Nel 2008 le proporzioni sono state simili: nel repository
principale di gNewSense, Linux rappresenta l'1.5% e i pacchetti GNU il
15%). 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 è questo questo il modo più appropriato di considerare
la questione. Il Progetto GNU non era, e non è, un progetto per lo
sviluppo di pacchetti software specifici. L'obbiettivo non era lo sviluppo
di un compilatore C, anche se lo abbiamo
fatto. Non era un progetto per scrivere un editor di testo, anche se ne
abbiamo sviluppato uno. Lo scopo del progetto GNU era sviluppare un sistema
libero completo simile a Unix: GNU.
Molte persone hanno dato contributi importanti al software libero presente
nel sistema, e tutti meritano riconoscimento per il lavoro svolto. Ma il
motivo per cui si tratta di un sistema integrato e non soltanto di
una collezione di programmi utili, è che il Progetto GNU si era
costituito allo scopo di costruire un sistema unitario. Abbiamo fatto un
elenco dei programmi necessari per ottenere un sistema libero
completo, e sistematicamente abbiamo trovato, scritto o ottenuto
che altri scrivessero tutti i programmi presenti nel nostro
elenco. Abbiamo scritto parti importanti, essenziali ma a volte anche
tediose (1) perché senza questi strumenti non
si può avere un sistema. Alcuni dei nostri componenti, gli strumenti
per la programmazione, furono molto apprezzati dai programmatori, ma abbiamo
anche scritto molti altri componenti che non sono strumenti (2). Abbiamo persino scritto un programma per
giocare a scacchi, perché un sistema completo ha bisogno anche di
giochi.
All'inizio degli anni '90 avevamo messo insieme l'intero sistema ad
eccezione del kernel. Avevamo anche iniziato a lavorare su un kernel, GNU Hurd, che si appoggia su Mach. Lo
sviluppo di questo kernel è stato molto
più difficile di quanto ci aspettassimo. Il kernel GNU Hurd fu
pronto e funzionante in modo affidabile nel 2001, ma manca ancora molto per
renderlo usabile da parte del pubblico.
Per fortuna, non è stato necessario aspettare che Hurd fosse finito. Quando
Torvalds rilasciò Linux come software libero nel 1992, il suo kernel colmò
l'ultimo vuoto principale del sistema GNU. Fu quindi possibile mettere
insieme Linux e il sistema GNU per ottenere un sistema libero completo:
una versione del sistema GNU che conteneva anche Linux; in altre parole, il
sistema GNU/Linux.
Far funzionare bene i due insieme non fu compito semplice. Alcuni componenti
GNU (3) furono modificati considerevolmente
per farli funzionare con Linux. L'integrazione di un sistema completo per
ottenere una distribuzione "pronta all'uso" fu un lavoro altrettanto
impegnativo. Abbiamo dovuto affrontare i problemi dell'installazione e
dell'avvio del sistema, questioni che non erano ancora state affrontate. Le
persone che svilupparono le varie distribuzioni del sistema diedero un
contributo sostanziale. Ma si trattò di un compito che, per natura di
cose, era comunque destinato ad essere portato a termine da qualcuno.
Il Progetto GNU supporta sia i sistemi GNU/Linux sia il sistema
GNU. La Free Software Foundation (FSF) ha
finanziato la riscrittura delle estensioni relative a Linux della libreria
GNU C, in modo che ora sono ben integrate, e i sistemi GNU/Linux più
recenti usano la versione attuale della libreria senza modifiche. La FSF ha
anche finanziato una prima fase di sviluppo di Debian GNU/Linux.
Oggi esistono numerose varianti del sistema GNU/Linux, di solito vengono
chiamate “distribuzioni” o, più brevemente,
“distro”. La maggior parte include software non libero, in
quanto gli sviluppatori di tali versioni seguono la filosofia associata a
Linux piuttosto che la filosofia GNU. Ma esistono anche
distribuzioni GNU/Linux completamente libere. La FSF dà sostegno a gNewSense.
Per ottenere una distribuzione libera non basta eliminare i vari programmi
non liberi. Al giorno d'oggi, anche la versione più diffusa del
kernel Linux contiene programmi non liberi. Tali programmi vengono caricati
nei dispositivi I/O all'accensione del sistema; si tratta di una serie di
numeri inclusi nel “codice sorgente” di Linux. Di conseguenza,
gestire una distribuzione libera di GNU/Linux oggi comporta anche la
manutenzione di una
versione libera di Linux.
Sia che usiate GNU/Linux o meno, vi preghiamo di non confondere il pubblico
utilizzando la forma “Linux” in modo ambiguo. Linux è il
kernel, uno dei componenti esenziali del sistema. Il sistema nella sua
totalità è sostanzialmente il sistema GNU con l'aggiunta di
Linux. Quindi se vi riferite a questa combinazione, vi preghiamo di usare la
dicitura “GNU/Linux”.
Chi desiderasse dei collegamenti di riferimento per il termine
“GNU/Linux”, può utilizzare questa pagina oppure http://www.gnu.org/gnu/the-gnu-project.html.
Per il kernel Linux invece si può usare questo indirizzo di
riferimento: http://foldoc.org/linux.
Nota: Oltre a GNU, esiste un altro progetto che ha prodotto
indipendentemente un sistema operativo libero simile a Unix. Questo sistema
è conosciuto con il nome di BSD, ed è stato sviluppato
all'Università di Berkeley. Negli anni '80 il sistema non era libero,
ma fu liberato agli inizi degli anni '90. Qualsiasi sistema operativo libero
oggi esistente (4) è quasi certamente una
variante di un sistema GNU o un tipo di BSD.
A volte le persone si chiedono se BSD sia una versione di GNU, come
GNU/Linux. Gli sviluppatori di BSD si ispirarono all'esempio fornito dal
progetto GNU per liberare il loro codice, e furono incoraggiati dagli
espliciti appelli da parte degli attivisti di GNU, ma in realtà il
loro codice aveva poco in comune con GNU. Gli attuali sistemi BSD usano dei
programmi GNU, così come il sistema GNU e le sue varianti usano
alcuni programmi BSD; ma considerati complessivamente, sono due sistemi
differenti che si sono evoluti separatamente. I programmatori di BSD non
svilupparono un kernel che sia poi stato aggiunto al sistema GNU, pertanto
una dicitura del tipo GNU/BSD sarebbe inappropriata. (5)
Note:
-
Questi componenti tediosi ma essenziali sono
l'assemblatore GNU (GAS) e il linker (GLD), che ora fanno parte del
pacchetto GNU Binutils , GNU tar, e molto altro.
-
Per esempio la Bourne Again SHell (BASH),
l'interprete PostScript Ghostscript e la libreria GNU C non sono strumenti di
programmazione. Così come non lo sono GNUCash, GNOME e GNU Chess.
-
Per esempio la libreria GNU C.
-
E' stato poi sviluppato un sistema quasi libero
simile a Windows, ma tecnicamente non è assolutamente come GNU o
Unix, quindi non riguarda la questione. La maggior parte del kernel di
Solaris è stato rilasciato come software libero, ma se uno volesse
farne un sistema libero non solo ci sarebbe da sostituire le parti mancanti
del kernel, ma bisognerebbe anche inserirlo nel sistema GNU o BSD.
-
D'altra parte, col passare del tempo da quando è
stato scritto questo articolo, la libreria GNU C è stata adattata
alle diverse versioni del kernel BSD, il che ha semplificato la combinazione
del sistema GNU con questo kernel. Così come succede con GNU/Linux,
si tratta infatti di varianti del sistema GNU, di conseguenza vengono
chiamate con nomi tali come GNU/kFreeBSD e GNU/kNetBSD, a seconda del kernel
utilizzato. Per gli utenti comuni è spesso difficile distinguere tra
GNU/Linux e GNU/*BSD.