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.
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.
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 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).