[Traduit de l'anglais]

Linux et le système GNU

Beaucoup d'utilisateurs de l'informatique utilisent une version modifiée du système GNU tous les jours sans même s'en rendre compte. À la suite d'une tournure particulière des événements, la version de GNU qui est largement utilisée aujourd'hui est souvent appelée « Linux » et beaucoup de ses utilisateurs ne savent pas qu'il s'agit essentiellement du système GNU, développé par le projet GNU.

Il existe bien un Linux et ces personnes l'utilisent, mais c'est juste une partie du système qu'ils utilisent. Linux est le noyau, c'est-à-dire le programme du système qui alloue les ressources de la machine aux autres programmes qu'on exécute. Le noyau est une partie essentielle du système d'exploitation, mais seul il est inutile ; il ne peut fonctionner que dans le contexte d'un système d'exploitation complet. Linux est normalement utilisé en combinaison avec le système d'exploitation GNU : le système complet est essentiellement GNU auquel on a ajouté Linux, ou GNU/Linux. Toutes les distributions appelées « Linux » sont en réalité des distributions de GNU/Linux.

Un grand nombre d'utilisateurs ne font pas la distinction entre le noyau, Linux et le système entier, qu'ils appellent aussi « Linux ». L'usage ambigu de ce nom ne facilite pas la compréhension. Ces utilisateurs pensent que Linus Torvalds a développé tout le système d'exploitation en 1991, avec un peu d'aide.

Les programmeurs savent en général que Linux est un noyau. Mais puisque généralement ils ont entendu parler du système entier sous le même nom, « Linux », souvent ils conçoivent une histoire qui justifierait cette appellation. Par exemple, beaucoup croient qu'une fois l'écriture du noyau Linux achevée par Linus Torvalds, ses utilisateurs ont recherché d'autres logiciels libres pour le compléter et ont constaté que (sans raison particulière) presque tout ce qui était nécessaire à un système de type Unix était déjà disponible.

Ce qu'ils ont trouvé n'était pas un accident ; c'était le système GNU pas tout à fait complet. Les logiciels libres disponibles complétèrent le système parce que le projet GNU travaillait à en concevoir un depuis 1984. Le manifeste GNU présente l'objectif de développer un système de type Unix, appelé GNU. L'annonce initiale du projet GNU décrit aussi quelques-uns des plans originaux pour le système GNU. Au moment où Linux a été lancé, GNU était presque terminé.

La plupart des projets de logiciel libre ont pour but de développer un programme particulier pour accomplir une tâche particulière. Par exemple, Linus Torvalds s'est attelé à écrire un noyau de type Unix (Linux) ; Donald Knuth s'est attelé à écrire un programme de formatage de texte (TeX) ; Bob Scheifler s'est attelé à développer un système de fenêtrage (X Window System). Il est naturel de mesurer la contribution de ce type de projet par les programmes spécifiques qui proviennent du dit projet.

Si nous essayions de mesurer la contribution du projet GNU de cette manière, à quelle conclusion arriverions-nous ? Un distributeur de CD-ROM a constaté dans sa « distribution de Linux » que les logiciels GNU représentaient le plus gros contingent, environ 28 % du code source total, et que cela incluait quelques-uns des composants majeurs essentiels sans lesquels il n'y aurait pas de système. Linux lui-même n'en représentait que 3 % (les proportions sont similaires en 2008 : dans le répertoire main de gNewSense, Linux a une part de 1,5 % et les paquets GNU de 15 %). Alors s'il fallait trouver un nom pour le système en se basant sur qui avait écrit les programmes qui le composent, le choix le plus approprié pour un nom unique serait « GNU ».

Mais ces considérations laissent de côté le fond du problème. Le projet GNU n'était pas, et n'est toujours pas, un projet destiné à développer des paquets logiciels spécifiques. Ce n'était pas un projet destiné à développer un compilateur C, bien que nous l'ayons fait. Ce n'était pas non plus un projet destiné à développer un éditeur de texte, bien que nous en ayons développé un. Dès le départ, le projet GNU a eu pour but de développer un système de type Unix, complet et libre : GNU.

Beaucoup de gens ont apporté des contributions majeures aux logiciels libres qu'on trouve dans le système et ils méritent tous de la reconnaissance. Mais la raison pour laquelle c'est un système – et pas seulement une collection de programmes utiles – est que le projet GNU s'est donné pour objectif d'en concevoir un. Nous avons dressé une liste des programmes nécessaires pour faire un système libre complet et nous avons systématiquement écrit ou trouvé des gens pour écrire toutes les choses mentionnées sur la liste. Nous avons écrit des composants majeurs et essentiels mais pas vraiment passionnants [1] parce qu'on ne peut pas avoir de système sans eux. Certains de nos composants systèmes, les outils de programmation, sont devenus populaires parmi les programmeurs, mais nous avons aussi écrit beaucoup de composants qui ne sont pas des outils [2]. Nous avons même développé un jeu d'échec, GNU Chess, car un système complet a aussi besoin de jeux.

Au début des années 90 nous avions rassemblé le système complet, à part le noyau. Nous avions aussi commencé à travailler sur un noyau, le GNU Hurd, qui s'exécute au-dessus de Mach. Le développement de ce noyau fut bien plus difficile que prévu ; le GNU Hurd a commencé à fonctionner de manière fiable en 2001, mais est encore loin d'être prêt pour un usage grand public.

Heureusement, nous n'avons pas eu à attendre le Hurd, grâce à Linux. Quand Linus Torvalds a libéré Linux en 1992, il a bouché le dernier trou du système GNU. Les gens purent alors adjoindre Linux au système GNU pour obtenir un système libre complet : une version du système GNU qui contenait aussi Linux, autrement dit le système GNU/Linux.

Les faire fonctionner ensemble n'a pas été pas un travail trivial. Certains composants GNU [3] demandaient des changements substantiels pour fonctionner avec Linux. L'intégration d'un système complet en une distribution qui pourrait fonctionner « au déballage » fut un travail tout aussi important. Il fallait résoudre la question de l'installation et du démarrage du système – un problème auquel nous ne nous étions pas attaqué, car nous n'en étions pas encore là. Les personnes qui ont développé les diverses distributions du système ont donc effectué un travail essentiel. Mais c'était du travail qui, de toute façon, allait certainement être réalisé par quelqu'un.

Le projet GNU soutient les systèmes GNU/Linux ainsi que le système GNU. La FSF a financé la réécriture des extensions propres à Linux de la bibliothèque C de GNU de sorte qu'elles sont maintenant bien intégrées, et les systèmes GNU/Linux les plus récents emploient la bibliothèque actuelle sans aucune modification. La FSF a aussi financé le développement de Debian GNU/Linux à ses débuts.

Il existe aujourd'hui de nombreuses variantes du système GNU/Linux souvent appelées « distributions ». La plupart d'entre elles incluent des logiciels non libres car leurs développeurs suivent la philosophie « open source » associée à Linux plutôt que la philosophie du logiciel libre qui est celle de GNU. Mais il y a aussi des distributions de GNU/Linux entièrement libres. La FSF fournit un support informatique à quelques-unes d'entre elles.

Pour faire une distribution libre de GNU/Linux, il ne suffit pas d'éliminer divers programmes non libres. De nos jours, la version habituelle de Linux contient également des programmes non libres. Ces programmes sont destinés à être chargés dans des périphériques d'entrée/sortie quand le système démarre, et ils sont inclus, sous forme de longues séries de nombres, dans le « code source » de Linux. De ce fait, la maintenance de distributions libres de GNU/Linux comporte maintenant celle d'une version libre de Linux.

Que vous utilisiez GNU/Linux ou non, veuillez ne pas semer la confusion en utilisant le nom « Linux » de manière ambiguë. Linux est le noyau, un des composants majeurs essentiels du système. Le système dans son ensemble est fondamentalement le système GNU auquel on a ajouté Linux. Quand vous parlez de cette combinaison, veuillez l'appeler « GNU/Linux ».

Si vous voulez indiquer une référence vers « GNU/Linux », cette page et https://www.gnu.org/gnu/thegnuproject.html sont de bons choix. Si vous voulez indiquer une référence à Linux, le noyau, https://foldoc.org/linux est une bonne URL.

Addendum

Outre GNU, un autre projet a produit de manière indépendante un système d'exploitation libre de type Unix. Ce système est connu sous le nom de BSD et a été développé à l'université de Californie à Berkeley. Il n'était pas libre dans les années 80, mais le devint au début des années 90. Tout système d'exploitation libre existant aujourd'hui [4] est fort probablement soit une variante de GNU, soit un système de type BSD.

Quelquefois les gens demandent si BSD est aussi une version de GNU, comme GNU/Linux. Les développeurs de BSD ont été conduits à rendre leur travail libre par l'exemple du projet GNU et des appels explicites des activistes de GNU les y ont encouragés, mais leur code ne recouvrait que très partiellement celui de GNU. Les systèmes BSD utilisent aujourd'hui quelques logiciels GNU, de même que le système GNU et ses variantes font usage de quelques logiciels BSD ; mais dans l'ensemble ce sont deux systèmes différents qui ont évolué séparément. Les développeurs de BSD n'ont pas écrit un noyau qu'ils auraient ajouté au système GNU, et un nom tel que GNU/BSD ne refléterait pas la situation [5].

Notes

  1. Ces composants non passionnants mais essentiels comprennent l'assembleur GNU (GAS) et le linker (GLD) qui font actuellement partie du paquet GNU Binutils, GNU tar, etc.
  2. Par exemple, le Bourne Again SHell (BASH), l'interpréteur PostScript Ghostscript et la bibliothèque C de GNU ne sont pas des outils de programmation ; GNUCash, GNOME et GNU Chess non plus.
  3. Par exemple, la bibliothèque C de GNU.
  4. Depuis que ceci a été écrit, un système presque entièrement libre de style Windows a été développé, mais techniquement il n'est pas du tout comme GNU ou Unix, donc cela n'affecte pas vraiment ce problème. La majeure partie du noyau de Solaris a été libérée, mais si vous voulez en faire un système libre, outre remplacer les parties manquantes du noyau, vous aurez aussi besoin de l'intégrer à GNU ou BSD.
  5. Toutefois, dans les années qui ont suivi l'écriture de cet article, la bibliothèque C de GNU a été portée sur plusieurs versions du noyau BSD, ce qui permit de combiner le système GNU avec ce noyau. Tout comme GNU/Linux, il s'agit de variantes de GNU et elles sont par conséquent appelées GNU/kFreeBSD et GNU/kNetBSD, en fonction du noyau du système. Les utilisateurs ordinaires des bureaux classiques peuvent difficilement faire la différence entre GNU/Linux et GNU/*BSD.