# Controversia sul nome GNU/Linux

La controversia sul nome GNU/Linux, in ambito informatico, indica il dibattito sull'utilizzo dell'espressione "GNU/Linux" per etichettare un sistema operativo basato su GNU (il sistema operativo unix-like ideato da Richard Stallman nel 1984) utilizzante Linux (il kernel per sistemi operativi unix-like ideato da Linus Torvalds nel 1991).
Il dibattito ha origine dopo la nascita del sistema operativo GNU, con la sua rapida diffusione grazie all'adozione del kernel Linux. Nello specifico, il movimento open source ha sempre storicamente preferito chiamare l'intero sistema operativo semplicemente "Linux" o comunque dando poca importanza a dibattiti sul nome, mentre il movimento del software libero lo ha sempre dichiarato inappropriato per riferirsi all'intero sistema, preferendo appunto GNU/Linux.

## Storia

Quando Richard Stallman decise di iniziare a scrivere GNU, l'intento era di portare il concetto di libertà di parola nell'ambito del software. Il progetto GNU e la stessa Free Software Foundation nacquero di conseguenza per favorire l'adozione e lo sviluppo di software libero e difendere la libertà degli utenti.
All'epoca, uno dei tasselli mancanti a GNU per essere completo, era un kernel. Il progetto GNU aveva previsto di iniziare a svilupparne uno, un microkernel, ma il progetto si rivelò molto complesso da realizzare e solo qualche decina d'anni più tardi lo si vide utilizzabile (vedesi GNU Hurd e Debian GNU/Hurd).
Parallelamente agli albori del kernel del progetto GNU, nel 1991 veniva pubblicata la prima versione funzionante del kernel monolitico ideato da Linus Torvalds il quale scelse di coprire Linux sotto la licenza libera GNU General Public License v2. In questo modo fu possibile includere Linux nel sistema operativo GNU, rendendolo finalmente un sistema operativo completo.
Nel 1992 la distribuzione Yggdrasil adottò il nome "Linux/GNU/X", mentre si iniziò ad adottare il termine "GNU/Linux" principalmente dopo il 1994 con la nascita di Debian GNU/Linux che aderì alle richieste della Free Software Foundation, dato che quest'ultima collaborò allo sviluppo di Debian.
Nel maggio del 1996, Stallman pubblicò Emacs 19.31, indicando come sistema operativo i seguenti sinonimi: "Lignux", "Linux", "Linux-based GNU system" (sistema GNU basato su Linux) e "GNU/Linux system". In seguito, Stallman usò esclusivamente "GNU/Linux". Fu nello stesso anno che Torvalds dichiarò di non avere nulla in contrario a sentire "Linux" soltanto per riferirsi al suo kernel, e non aveva nulla in contrario affinché si usasse "GNU/Linux" «o altri modi» per chiamare l'intero sistema operativo (evitando termini poco professionali come "Lignux"), ma aggiunse che per quanto lo riguardava avrebbe continuato a chiamare "Linux" l'intero sistema.
Ai giorni nostri ci si riferisce all'intero sistema operativo arbitrariamente fra "Linux" o "GNU/Linux", sebbene la prima forma sia molto più diffusa, soprattutto tra gli appassionati.

## Argomenti a favore di "GNU/Linux"

La Free Software Foundation ritiene che il termine "Linux" sia inappropriato per parlare di un sistema operativo, per diversi motivi. Per una questione di credito, il solo "Linux" non aiuterebbe gli utenti ad entrare in contatto con la filosofia originaria con cui è stato creato il sistema operativo GNU, ovvero alla filosofia del software libero. Non è raro che vi siano «utenti GNU che non hanno mai sentito parlare di GNU» pur utilizzandolo.
«Chiamare il sistema GNU/Linux riconosce il ruolo che il nostro idealismo ha avuto nella creazione della nostra comunità, e aiuta la gente a riconoscere l'importanza pratica di questi ideali.»
(Free Software Foundation)
In aggiunta dire «sistema Linux» sarebbe semanticamente scorretto dato che Linux è un kernel per sistemi operativi unix-like e non è un sistema operativo unix-like. Questa confusione è maggiore nel caso delle cosiddette varianti GNU, ovvero sistemi operativi basati sul sistema operativo GNU ma nei quali non è presente il kernel Linux, per esempio: Debian GNU/kFreeBSD, GNU/OpenBSD, GNU/Hurd e NexentaOS.
Altro argomento a favore di "GNU/Linux" è che il kernel di Torvalds è solo una piccola parte di un sistema operativo completo. Tuttavia, lo stesso Linus Torvalds ha sempre preferito chiamare soltanto "Linux" l'intero sistema operativo.
«Quindi, se tu dovessi scegliere un nome per il sistema, basandoti su chi ha scritto i programmi del sistema, la scelta più appropriata sarebbe GNU. Ma noi non crediamo che questa sia la maniera migliore di considerare la questione. Il Progetto GNU non era, e non lo è tuttora, un progetto per sviluppare tanti singoli pacchetti software. [...] Molte persone hanno dato grandi contributi al software libero presente nel sistema, e meritano tutti di essere apprezzati. Ma il motivo per cui esso costituisce un sistema integrato — e non solo un insieme di comodi programmi — è che il Progetto GNU è nato per essere uno. Noi stilammo una lista di programmi necessari per realizzare un sistema libero completo e scrivemmo, noi stessi o tramite i contributi di altre persone, tutto ciò che era contenuto nella lista.»
(Richard Stallman)
La normale definizione di "sistema operativo" include sia il kernel — lo specifico sottosistema che si interfaccia direttamente con l'hardware — che il software d'interfacciamento con l'utente e con le applicazioni software che controllano il computer. Inoltre, sia il nome "GNU" che il nome "Linux" sono intenzionalmente legati al nome "Unix", nel quale è stato sempre incluso concettualmente nella libreria del C, e i vari strumenti di utilità e lo stesso kernel.
Particolare importanza in un sistema di tipo Unix riveste la libreria C. Per i sistemi GNU/Linux tale libreria è glibc, la libreria C GNU, alternativamente chiamata libc6. Analizzando le dipendenze di tale libreria in una qualsiasi distribuzione di GNU/Linux si scopre che da essa dipendono quasi tutti i pacchetti del sistema operativo, le applicazioni e gli strumenti di sistema. Di norma i programmi su GNU/Linux vengono compilati e linkati ad una specifica versione di glibc. Questo include quindi glibc nei requisiti per la compatibilità binaria tra le diverse distribuzioni GNU/Linux mentre la versione del kernel piuttosto raramente è coinvolta in tali requisiti. Infine è principalmente attraverso la libreria glibc che i sistemi GNU/Linux possono rispondere alle specifiche POSIX.
Va considerato che i componenti di un tipico sistema GNU/Linux possono essere assemblati ad altri per costituire sistemi differenti. Esistono sistemi che adottano GNU ma non il kernel Linux, come il già citato Debian GNU/kfreebsd. Esistono anche sistemi che adottano il kernel Linux, ma non contengono i componenti GNU. Mentre però un sistema GNU/kfreebsd è sostanzialmente compatibile con un sistema GNU/Linux (tanto che, l'utente e il programmatore, possono anche ignorare le differenze trovandosi a lavorare con gli stessi programmi, le stesse librerie, e gli stessi strumenti di sviluppo) un sistema basato su Linux ma non su GNU è, in genere, molto differente da una tipica distribuzione GNU/Linux – e spesso con essa incompatibile. Android, il sistema operativo sviluppato da Google è l'esempio più chiaro di un sistema basato su Linux che ha differenze molto marcate rispetto a GNU/Linux.
Nel 1991, nelle note di distribuzione di Linux delle versioni da 0.01 a 0.11 (che venne distribuito sotto licenza GPL solo dalla versione 0.12 in poi) Torvalds scrisse:
    Purtroppo, un kernel da solo non ti fa andare da nessuna parte. Per avere un sistema funzionante hai bisogno di una shell, compilatori, una libreria, ecc. Questi sono componenti separati e possono avere delle restrizioni (grandi o piccole) legate ai diritti d'autore. La maggior parte degli strumenti usati in Linux fanno parte del software GNU e sono sotto licenza GNU. Questi strumenti non sono presenti nella distribuzione — chiedi a me (o a GNU) per maggiori informazioni.
L'uso della parola "Linux", spesso, si riferisce al kernel, al sistema operativo, e alle intere distribuzioni, creando spesso confusione sulla distinzione fra le tre componenti. Molti dei pacchetti GNU importanti sono tipicamente inclusi come parte delle distribuzioni GNU/Linux. I canali informativi, spesso, fanno delle affermazioni erronee, dichiarando, ad esempio, che l'intero sistema operativo Linux (piuttosto che il semplice kernel) fu scritto da Torvalds nel 1991; che Torvalds dirige lo sviluppo di altre componenti, come interfacce grafiche o strumenti GNU; oppure che le nuove versioni del kernel portano a dei miglioramenti visibili immediatamente all'utente, similmente a quanto accade con nuove versioni di sistemi operativi proprietari come Microsoft Windows, in cui oltre al kernel, spesso cambiano tante altre cose di contorno.
A causa di questa confusione, accuse legali e campagne condotte da PR dirette apparentemente verso il kernel, come quelle lanciate da SCO Group o da Alexis de Tocqueville Institution (AdTI), sono state male interpretate da molti commentatori, i quali assumevano che l'intero sistema operativo fosse stato preso di mira. Queste organizzazioni sono state anche accusate di aver deliberatamente coltivato questa confusione:
    In generale, le lamentele di Caldera contro IBM sono vaghe e confuse su quale sia l'oggetto dell'accusa: il kernel Linux, il sistema operativo GNU/Linux, le distribuzioni di Linux, applicazioni Linux o cos'altro. (Mike Angelo, MozillaQuest Magazine, 28 aprile 2003)
    SCO ha usato "Linux" per riferirsi a "tutto il software libero" oppure a "tutto il software libero che costituisce un sistema operativo UNIX-like". Questa confusione, che la Free Software Foundation aveva già avvertito potesse avvenire, è ora qui per mostrare le conseguenze sulle malinterpretazioni che la FSF aveva previsto. (Eben Moglen, dichiarazione dell'FSF sulla questione SCO contro IBM, 25 giugno 2003)
    In particolare, Stallman ha criticato il rapporto [Ken Brown/AdTI] per l'aver tratto profitto dalla diffusa confusione fra il kernel Linux, che Stallman dice "Scritto realmente da Linus" ed il sistema operativo completo GNU insieme ai software associati, che possono essere usati, come generalmente avviene, insieme al kernel Linux. (Lisa Stapleton, LinuxInsider, 27 maggio 2004).
Utilizzare il solo termine Linux per identificare l'intero sistema operativo (quando lo stesso termine è usato anche per identificare una parte di esso) causa delle confusioni, e obbliga i sostenitori del nome Linux (usato per identificare tutto il sistema operativo) a chiamare kernel Linux – quella parte che ha in realtà il nome Linux – e non kernel del sistema Linux come sarebbe più logico.

## Argomenti a favore di "Linux"

"Linux" è da tantissimo tempo un nome molto diffuso, e oramai gran parte delle persone usano questo termine per riferirsi all'intero sistema operativo; riferimenti a controversie sulla denominazione appaiono con scarsa frequenza sui principali canali informativi. Il termine "Linux" assume una maggiore importanza storica, in quanto rappresenta il nome che Torvalds usò per il sistema combinato sin dal 1991, mentre Stallman iniziò a chiedere agli utenti di chiamare il sistema "GNU/Linux" verso la metà degli anni novanta, quando il termine "Linux" era già divenuto popolare. "Linux" è più breve e facile da pronunciare di "GNU/Linux".
Eric S. Raymond ha scritto (in relazione a "Linux" nel Jargon File):
    Alcune persone obiettano che il nome "Linux" dovrebbe essere usato solo per riferirsi al kernel, non all'intero sistema operativo. Dietro quest'affermazione si nasconde una più profonda disputa territoriale; le persone che insistono sul termine GNU/Linux vorrebbero che la FSF prendesse i maggiori meriti per il Linux, poiché RMS [Stallman] ed i suoi amici scrissero molti dei suoi tool per l'utente. Né questa teoria, né il termine GNU/Linux hanno mai acquisito una grande accettazione.
Alcuni hanno l'impressione che l'insistenza di Stallman sull'uso del nome combinato sia un tentativo di prendersi gran parte dei meriti del Linux, sull'onda del suo successo. Un editoriale nel Linux Journal (#30, ottobre 1996) speculava:
    Forse RMS si sente frustrato poiché Linus si è preso gran parte della gloria per quello che voleva fare RMS.
Lo stesso articolo cita Linus Torvalds che disse:
    Mmmh, questa discussione è già durata abbastanza, vi ringrazio molto. Non è davvero importante cosa sia che la gente chiama Linux, finché vengono dati i giusti meriti (ad entrambe le parti) a chi ha fatto cosa. Personalmente, io continuerò a chiamarlo "Linux".
Con simili argomentazioni, il dibattito sul nome del sistema operativo viene talvolta caratterizzato come una banale distrazione; ad esempio, John C. Dvorak (PC Magazine, 5 marzo 2002) scrisse:
    Sfortunatamente, la comunità Linux spende troppe delle sue energie su cose come la nomenclatura (del tipo, GNU/Linux contro Linux).
Molti utenti e venditori, che preferiscono il nome "Linux", puntano all'inclusione di strumenti esterni al kernel non-GNU, come l'Apache HTTP Server, il sistema X Window o il K Desktop Environment nei sistemi operativi per l'utente finale, basati sul kernel Linux. Nessuno può avere una precisa conoscenza delle centinaia di sviluppatori e progetti che hanno contribuito alla realizzazione di una completa distribuzione — GNU è solo uno di questi, sebbene uno di grande importanza. Linux, quindi, può essere considerato come una conveniente sineddoche per una completa distribuzione del sistema operativo.
La Free Software Foundation è consapevole dei limiti nel discorso della denominazione in base ai meriti dei contributi, ma giunge a delle differenti conclusioni:
    Poiché un nome lungo come GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv sarebbe assurdo, ad un certo punto si è costretti a fissare un limite ed omettere i nomi di molti altri contributi secondari. Non esiste un modo preciso per impostare tale limite, perciò, dovunque lo si metta, noi non faremo obiezioni. [...] Tuttavia, non può essere giusto dare tutti i meriti ad un contributo secondario (Linux), omettendo il nome del contributo primario (GNU). (FSF, "GNU/Linux FAQ")
Nell'uso corrente, il nome "Linux" di per sé è spesso usato come esempio standard del concetto di software o altri contenuti che possono essere liberamente modificati e ridistribuiti, anche se tali usi, generalmente, non menzionano specificamente GNU o "software libero".

## Casi in cui "GNU/Linux" non è applicabile

In alcune circostanze, il kernel Linux è usato con pochi o nessun componente di GNU (ad es. Android o un'applicazione che viene eseguita direttamente su un kernel minimale, oppure con uClibc e BusyBox in luogo degli strumenti GNU). Tipicamente, questi sono dei piccoli sistemi dedicati, come dei prodotti firewall o altre applicazioni. Chiunque, inclusa la FSF, è d'accordo nel non considerare appropriato l'uso del nome "GNU/Linux" in tali circostanze. Quasi tutti i sistemi desktop e server basati su Linux usano componenti GNU, specialmente glibc, la libreria C di GNU.

## Casi in cui "Linux" non è applicabile

In alcune circostanze il nome Linux non è un pacchetto del sistema operativo e quindi non può essere utilizzato come termine per identificarlo. Esistono infatti casi di distribuzioni e sistemi operativi che nell'uso comune differiscono da un tipico sistema Linux o GNU/Linux sostanzialmente solo per l'utilizzo di un kernel diverso. Ad esempio: Debian GNU/kFreeBSD, GNU/OpenBSD, GNU/Hurd e NexentaOS. In tali sistemi operativi l'utente potrebbe benissimo non accorgersi della diversità di tale sistema da uno con kernel Linux, infatti tutti i programmi utente sono identici e funzionano in pratica allo stesso modo. Vi sono inoltre diversi sistemi di tipo Unix come FreeBSD, OpenBSD, Solaris che sono sostanzialmente differenti da un sistema GNU/Linux pur appartenendo alla medesima famiglia dei sistemi Unix-like. In questi sistemi non solo il kernel, ma anche le utility e le librerie fondamentali sono proprie e non mutuate da un sistema GNU.

## Come le distribuzioni definiscono se stesse

Ogni distribuzione basata sul kernel Linux e su software GNU identifica il proprio prodotto in modo diverso tenendo conto di aspetti commerciali, storici e ideologici. La maggior parte tra le più diffuse distribuzioni utilizza il nome Linux per identificare il proprio sistema operativo, oppure lo definisce "basato su Linux", con lievi differenze. Allo stesso modo, a parte i progetti direttamente collegati con GNU e con la Free Software Foundation, i principali sviluppatori di software open source e libero, utilizzano il nome Linux per definire genericamente il kernel, il sistema operativo, la piattaforma o le distribuzioni che adottano il kernel Linux.
Le prime dieci distribuzioni che utilizzano il kernel Linux secondo la classifica stilata dal sito DistroWatch definiscono sé stesse in questo modo:
* Ubuntu: «Linux-based operating system».
* openSUSE: «promotes the use of Linux».
* Fedora: «Linux-based operating system».
* Debian: «usiamo il nome GNU/Linux».
* Mandriva: «Mandriva is one of the few worldwide Linux providers» e «Mandriva developS and distributes Linux distributions». Ma anche: «We hope you appreciate the difference and will enjoy both of our GNU/Linux based editions of Mandriva Linux».
* PcLinuxOS: «Linux-based operating system».
* SimplyMEPIS: «Linux distribution that "just works"».
* Knoppix: «collection of GNU/Linux software». Ma poi «can be used as a productive Linux system».
* Slackware Linux: «advanced Linux operating system» e «"UNIX-like" Linux distribution». Ma poi: «It's currently based around the Linux kernel and the GNU C Library».
* Gentoo Linux: «a special flavor of Linux».
Altre distribuzioni tra le più note utilizzano il generico nome Linux per identificare il proprio sistema:
* Damn Small Linux: «mini desktop oriented Linux distribution».
* Arch Linux: «lightweight and flexible linux distribution».
* Sabayon: «Sabayon Linux is an operating system powered by the Linux kernel and GNU. There are many Linux flavors, but most geeks just call them distributions. We are a Linux distribution, though, and try to provide our users the best and most complete computing experience.»
* SUSE Linux Enterpise - Novell: «Linux solution» e in genere «Linux».
* Red Hat: «Red Hat is the world's most trusted provider of Linux and open source technology».

## Nei testi di informatica

Alcuni libri di informatica utilizzano il nome Linux per indicare il sistema nel suo complesso, mentre altri hanno adottato invece il nome GNU/Linux, come proposto da Richard Stallman.
Esempi di testi che utilizzano il nome Linux:
* (EN) Vicki Stanfield, Roderick W. Smith, Linux System Administration, Londra, Sybex Inc.,U.S., 2002, ISBN 978-0-7821-4138-2.
* Paolo Attivissimo, Roberto Odoardi, Da Windows a Linux, Milano, Apogeo, 2000, ISBN 978-88-7303-735-4.
* Steve Shah, Wale Soyinka, Fondamenti di Linux, Milano, McGraw-Hill, 2006, ISBN 978-88-386-4443-6.
* Roberto Butti, Lavorare con Linux e le reti, Assago, FAG, 2006, ISBN 978-88-8233-547-2.
* (EN) Evi Nemeth, Garth Snyder; Trent Hein, Linux Administration Handbook, New Jersey, Prentice Hall, 2002, ISBN 978-0-13-008466-8.
Esempi di testi che utilizzano il nome GNU/Linux:
* (EN) M.Tim Jones, GNU/Linux Application Programming, Hingham (Massachusetts), Charles River Media, 2005, ISBN 978-1-58450-371-2.
* Pietro Cornelio, Il mondo libero di GNU/Linux e Unix BSD, Milano, Duke Italia, 2005, ISBN 978-88-86460-10-1.
* (EN) Donald Parris, Penguin in the Pew: Bringing GNU/Linux to the Church (PDF), Hingham (Massachusetts), Lulu.com, 2005, ISBN 978-1-4116-3012-3. URL consultato il 4 aprile 2008 (archiviato dall'url originale il 28 agosto 2008).
* (ES) Manuel Sergio Jaime Rodriguez, Guia De Clase De: Sistemas Informaticos Monousuario Y Multiusuario. Volumen I: GNU/Linux, Lulu.com, 2007, ISBN 978-1-84753-761-4.
* (EN) Giovanni Orlando, Number theory cryptography and its applications to GNU/Linux software, Future Technologies, 2003.