La Free Software Foundation sostiene che la maggior parte delle distribuzioni Linux sono in realtà sistemi GNU, che utilizzano un kernel Linux. Basano questa affermazione sul fatto che GNU era un progetto di lunga data per sviluppare un sistema operativo libero prima che arrivasse Linux, e che il kernel era solo l'ultimo pezzo mancante. Hanno ragione nel dire che praticamente tutte le distribuzioni desktop e server basate su Linux utilizzano almeno alcuni componenti GNU, forse soprattutto la GNU C Library (glibc), GNU Core Utilities (coreutils) e la shell Bash. Inoltre, lo sviluppo del kernel Linux è intrinsecamente legato a GCC, a causa dell'utilizzo delle estensioni GCC.
Alcuni sistemi embedded, forse in particolare Android di Google, non utilizzano alcun componente o libreria GNU. In Android, ad esempio, la GNU C Library è sostituita dalla Bionic C Library di Google, basata su BSD. La FSF concorda sul fatto che non è appropriato riferirsi a tali sistemi come "sistemi GNU" o "GNU/Linux", ma d'altra parte non vorrebbero nemmeno che questi fossero indicati semplicemente come sistemi "Linux". Almeno possiamo trarre la conclusione che sembra esserci consenso sul fatto che usare gli strumenti GNU per costruire il kernel, non rendere un sistema un "sistema GNU".
La storia della terminologia GNU/Linux risale ai primi anni '90.
Nel 1991 Linus Torvalds iniziò il progetto del kernel Linux dalla sua camera da letto a Helsinki. Non molto tempo dopo, il kernel Linux iniziò a guadagnare terreno, aiutato dall'ascesa di Internet.
Il progetto GNU di Richard Stallman all'epoca prevedeva ancora di utilizzare il microkernel HURD come kernel del sistema operativo GNU pianificato. Tuttavia, quando le distribuzioni Linux (sistemi operativi simili a Unix basati sul kernel Linux) iniziarono a formarsi attorno al nuovo progetto del kernel Linux, Stallman si interessò. Quando il progetto Debian iniziò nel 1993, sotto la guida di Ian Murdock, la FSF diede un certo sostegno finanziario al giovane progetto. Tuttavia, gli sviluppatori Debian si separarono rapidamente da Stallman e dalla FSF, in parte per questioni tecniche. Un problema, ad esempio, era che Stallman voleva mantenere i simboli di debug nel programma, mentre Debian voleva rimuoverli.
Dopo che Debian e la FSF si separarono, Stallman chiese a Debian di riferirsi a se stessa come GNU/Linux. La richiesta è stata fatta a Bruce Perens, poiché Murdock gli aveva ceduto la leadership. Dal momento che queste organizzazioni si erano separate in buoni rapporti e avevano condiviso (e condividono) obiettivi comuni, gli sviluppatori Debian fecero come aveva chiesto. Naturalmente è vero che Stallman ha promosso tali nomi in modo indipendente, ma la collaborazione di un vero sistema operativo basato su Linux nel riferirsi a se stessi come tali è stata significativa nel promuovere l'uso di tale nome.
La logica fornita da Stallman includeva che (a) il nucleo del sistema, a parte il kernel Linux, era in gran parte costituito da strumenti GNU, (b) il kernel Linux era in un certo senso il culmine/completamento del progetto GNU, che aveva cercato di ottenere un kernel funzionante per un po' di tempo, quindi dovrebbe usare questo nome come un modo per riconoscere e ricordare alla gente gli ideali del progetto GNU. La ragione (a) tende a essere menzionata più spesso, anche se non era esattamente vera allora, e lo è ancora meno adesso, sebbene parti chiaramente importanti di un sistema operativo basato su Linux dipendano dagli strumenti GNU, ad es. bash, gcc, binutils, gdb, libc ecc., in alcuni casi possono essere sostituiti da altri strumenti. Pertanto, tali argomenti sono quanto meno discutibili e, in effetti, sono stati molto dibattuti.
Per quanto ne so, solo Debian e (alcune delle) sue derivate (seguendo l'esempio del suo genitore) si riferiscono a se stesse come GNU/Linux. Tuttavia, le altre cosiddette distribuzioni Linux come Fedora, Gentoo, ecc. non sono sostanzialmente diverse da Debian - è principalmente lo stesso software. Quindi si ha una ragione altrettanto valida per chiamarli GNU/Linux.
Non ci sono molti sistemi in giro che usano il kernel Linux senza lo spazio utente GNU, poiché i due si sono sviluppati in larga misura insieme e sono intrecciati in vari modi. (Ad esempio, il kernel Linux è scritto nel C esteso (GNU) di gcc e non verrà compilato con un compilatore C standard.) Come ha detto Thomas, l'esempio ovvio è Android, ma dal momento che è stato così pesantemente biforcato da Google è discutibile se sia ancora corretto fare riferimento al kernel Android come Linux, sebbene si parli di un'unione/riconciliazione in futuro.
In una nota a margine, è un peccato notare che Stallman e la FSF apparentemente spingono la terminologia GNU/Linux piuttosto forte. Ad esempio, Jonathan Corbet ha scritto in un commento su LWN che la FSF si rifiuta di parlare con lui a meno che non utilizzi il termine GNU/Linux. Jon, oltre ad essere un fondatore di LWN, è anche uno sviluppatore del kernel senior e rispettato. Nella sua interezza, il commento dice:
Giusto per essere chiari su questo:abbiamo smesso di chiedere commenti alla FSF molti anni fa perché la FSF si rifiutava di parlare con noi senza previe promesse da parte nostra su cosa avremmo detto e quali termini avremmo usato. Non siamo disposti a fare tali promesse. Se la politica della FSF su tali cose è cambiata, saremmo lieti di saperlo.
Questo è chiaramente un riferimento all'insistenza sulla terminologia GNU/Linux tra le altre cose.
La storia di cui sopra è trattata in dettaglio nel capitolo 6 ("Boot Then Root") di "Rebel Code" di Glyn Moody.
Un sistema operativo è una combinazione di un kernel e di una userland. Fondamentalmente, il kernel gestisce l'hardware mentre la userland fornisce un'interfaccia completa agli utenti.
In una comune distribuzione GNU/Linux, Linux fornisce il kernel mentre il progetto GNU porta gli strumenti userland. GNU è stato avviato molto prima di Linux e fornisce una grande quantità di utilità per costruire un sistema operativo completo.
Tuttavia, mancava un kernel. Sebbene avessero il kernel Hurd, ci voleva troppo tempo per essere pronti. E poi è arrivato Linux con l'aiuto di un grande entusiasmo attorno ad esso, si è evoluto più velocemente di Hurd.
Ora hai una userland e un kernel da due diversi progetti. E poiché ognuno è essenziale per avere un sistema operativo, perché non nominare l'associazione GNU/Linux in modo che ogni progetto abbia la sua parte di merito?
Hai altre userland come le utility BSD o BusyBox. Tuttavia sono più o meno completi rispetto alle utilità GNU e alcuni software funzioneranno solo con un utente GNU. Ad esempio, la maggior parte dei sistemi operativi BSD utilizza GCC come compilatore mentre LLVM cambierà presto questa situazione.
E come sistema operativo universale, puoi eseguire Debian con un kernel FreeBSD e uno spazio utente GNU.