Questa è la traduzione di una pagina scritta originariamente in lingua inglese.
Il gruppo dei traduttori italiani cerca nuovi volontari: visitate la pagina del gruppo per ulteriori informazioni.

Linux e il sistema GNU

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). È 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 programmi non liberi, in quanto gli sviluppatori di tali versioni seguono la filosofia del “codice aperto” piuttosto che la filosofia del “software libero”. Ma esistono anche distribuzioni GNU/Linux completamente libere. La FSF fornisce le strutture informatiche per alcune di queste.

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 https://www.gnu.org/gnu/thegnuproject.html. Per il kernel Linux invece si può usare questo indirizzo di riferimento: https://foldoc.org/linux.

Post scriptum

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

  1. 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.
  2. 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.
  3. Per esempio la libreria GNU C.
  4. È 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.
  5. 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.