La Free Software Foundation argumenta que la mayoría de las distribuciones de Linux son, de hecho, sistemas GNU, que utilizan un kernel de Linux. Basan esta afirmación en el hecho de que GNU fue un proyecto de larga data para desarrollar un sistema operativo libre antes de que apareciera Linux, y que el kernel era solo la última pieza que faltaba. Tienen razón en que prácticamente todas las distribuciones de escritorio y servidor basadas en Linux usan al menos algunos componentes GNU, quizás lo más importante es la biblioteca GNU C (glibc), GNU Core Utilities (coreutils) y el shell Bash. Además, el desarrollo del kernel de Linux está inherentemente ligado a GCC, debido a la utilización de las extensiones de GCC.
Algunos sistemas integrados, quizás el más notable Android de Google, no utilizan ningún componente o biblioteca de GNU. En Android, por ejemplo, la biblioteca GNU C se reemplaza por la biblioteca Bionic C basada en BSD de Google. La FSF está de acuerdo en que no es apropiado referirse a dicho sistema como "sistemas GNU" o "GNU/Linux", pero por otro lado tampoco querrían que se los denomine simplemente como sistemas "Linux". Al menos podemos sacar la conclusión de que parece haber consenso sobre el hecho de que el uso de herramientas GNU para construir el núcleo no convertir un sistema en un "sistema GNU".
La historia de la terminología GNU/Linux se remonta a principios de la década de 1990.
En 1991, Linus Torvalds inició el proyecto del kernel de Linux desde su habitación en Helsinki. No mucho tiempo después, el kernel de Linux comenzó a ganar terreno, ayudado por el auge de Internet.
En ese momento, el proyecto GNU de Richard Stallman todavía planeaba usar el micronúcleo HURD como el núcleo del sistema operativo GNU planeado. Sin embargo, cuando las distribuciones de Linux (sistemas operativos gratuitos similares a Unix basados en el kernel de Linux) comenzaron a formarse en torno al nuevo proyecto del kernel de Linux, Stallman se interesó. Cuando el proyecto Debian comenzó en 1993, bajo el liderazgo de Ian Murdock, la FSF brindó algún apoyo financiero al joven proyecto. Sin embargo, los desarrolladores de Debian se separaron rápidamente de Stallman y la FSF, en parte por problemas técnicos. Un problema, por ejemplo, era que Stallman quería conservar los símbolos de depuración en el programa, mientras que Debian quería eliminarlos.
Una vez que Debian y la FSF se separaron, Stallman solicitó que Debian se refiriera a sí mismo como GNU/Linux. La solicitud se hizo a Bruce Perens, ya que Murdock le había entregado el liderazgo. Dado que estas organizaciones se separaron en buenos términos y compartieron (y comparten) objetivos comunes, los desarrolladores de Debian hicieron lo que les pidió. Por supuesto, es cierto que Stallman ha promovido dichos nombres de forma independiente, pero la cooperación de un sistema operativo basado en Linux real al referirse a sí mismo como tal ha sido importante para promover el uso de dicho nombre.
La justificación dada por Stallman incluía que (a) el núcleo del sistema aparte del kernel de Linux eran en gran parte herramientas GNU, (b) el kernel de Linux era en cierto sentido la culminación/finalización del proyecto GNU, que había estado tratando de obtenga un kernel que funcione durante algún tiempo, por lo que debería usar este nombre como una forma de reconocer y recordar a las personas los ideales del proyecto GNU. La razón (a) tiende a mencionarse con bastante más frecuencia, aunque no era exactamente cierto entonces, y es aún menos cierto ahora. Aunque partes claramente importantes de un sistema operativo basado en Linux dependen de las herramientas GNU, p. bash, gcc, binutils, gdb, libc, etc., en algunos casos pueden ser reemplazadas por otras herramientas. Entonces, tales argumentos son al menos discutibles y, de hecho, han sido muy debatidos.
Hasta donde yo sé, solo Debian y (algunos de) sus derivados (siguiendo el ejemplo de su padre) se refieren a sí mismos como GNU/Linux. Sin embargo, las otras denominadas distribuciones de Linux, como Fedora, Gentoo, etc., en esencia no son diferentes de Debian:en su mayoría es el mismo software. Así que uno tiene igualmente buenas razones para referirse a ellos como GNU/Linux.
No hay muchos sistemas que usen el kernel de Linux sin el espacio de usuario de GNU, ya que los dos se desarrollaron juntos en gran medida y están entrelazados de varias maneras. (Por ejemplo, el kernel de Linux está escrito en el C extendido (GNU) de gcc, y no se compilará con un compilador de C estándar). Como dijo Thomas, el ejemplo obvio es Android, pero dado que Google lo ha bifurcado tanto es cuestionable si es correcto referirse al kernel de Android como Linux, aunque se habla de una fusión/reconciliación en el futuro.
En una nota al margen, es desafortunado notar que Stallman y la FSF aparentemente presionan bastante la terminología GNU/Linux. Por ejemplo, Jonathan Corbet escribió en un comentario de LWN que la FSF se niega a hablar con él a menos que use el término GNU/Linux. Jon, además de ser uno de los fundadores de LWN, también es un desarrollador principal y respetado del kernel. En su totalidad, el comentario dice:
Solo para ser claros en esto:dejamos de pedir comentarios a la FSF hace muchos años porque la FSF se negó a hablar con nosotros sin promesas previas de nuestra parte sobre lo que diríamos y qué términos usaríamos. No estamos dispuestos a hacer tales promesas. Si la política de la FSF sobre tales cosas ha cambiado, nos complacerá saberlo.
Esto es claramente una referencia a la insistencia en la terminología GNU/Linux, entre otras cosas.
La historia anterior se trata con cierto detalle en el Capítulo 6 ("Boot Then Root") de "Rebel Code" de Glyn Moody.
Un sistema operativo es una combinación de un núcleo y un espacio de usuario. Básicamente, el núcleo administra el hardware mientras que el espacio de usuario proporciona una interfaz completa para los usuarios.
En una distribución común de GNU/Linux, Linux proporciona el kernel mientras que el proyecto GNU trae las herramientas de la zona de usuario. GNU se inició mucho antes que Linux y proporciona una gran cantidad de utilidades para crear un sistema operativo completo.
Sin embargo, les faltaba un kernel. Aunque tenían el núcleo de Hurd, estaba tardando demasiado en estar listo. Y luego vino Linux con la ayuda de un gran entusiasmo a su alrededor, ha evolucionado más rápido que Hurd.
Ahora tiene un espacio de usuario y un kernel de dos proyectos diferentes. Y como cada uno es fundamental para tener un sistema operativo, ¿por qué no nombrar la asociación GNU/Linux para que cada proyecto tenga su parte del crédito?
Tiene otras áreas de usuario como las utilidades BSD o BusyBox. Sin embargo, son más o menos completos en comparación con las utilidades de GNU y algunos programas solo funcionarán con un usuario de GNU. Por ejemplo, la mayoría de los sistemas operativos BSD utilizan GCC como compilador, mientras que LLVM pronto cambiará esta situación.
Y como sistema operativo universal, puede ejecutar Debian con un núcleo FreeBSD y un espacio de usuario GNU.