Linux et le Projet GNU
par Richard Stallman
Pour plus de détails, consultez aussi la FAQ GNU/Linux et Pourquoi GNU/Linux ?.
Beaucoup d'utilisateurs d'ordinateurs utilisent une version modifiée du Système GNU tous les jours sans même le réaliser. Après une tournure particulière des événements, la version de GNU qui est largement utilisée est souvent appelée « Linux » et beaucoup de ses utilisateurs ne savent pas qu'il s'agit basiquement du système GNU, dévelopé par le Projet GNU.
Il existe vraiment un Linux, et ces personnes l'utilisent, mais c'est juste une partie du système qu'ils utilisent. Linux est le noyau : le programme du système qui alloue les ressources de la machine aux autres programmes que vous exécutez. Le noyau est une partie essentielle du système d'exploitation, mais il est inutile seul ; 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 basiquement GNU avec Linux ajouté, ou GNU/Linux. toutes les distributions appelées « Linux » sont en réalité des distributions GNU/Linux.
Beaucoup d'utilisateurs ne sont pas au courant de la distinction entre le noyau, Linux, et le système en entier qu'ils appellent aussi « Linux ». L'usage ambigü du nom ne facilite pas la compréhension. Ces utilisateurs pensent que Linus Torvalds a dévelopé 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 puisqu'ils ont entendu le système entier être appelé « Linux » aussi, souvent ils conçoivent une histoire tournant autour de ce nom. Par exemple, plusieurs d'entre eux croient que dès que Linus Torvalds a achevé l'écriture du noyau, ses amis ont recherché d'autres logiciels libres et que, pour aucune raison en particulier, la plupart de ce qui était nécessaire à un système semblable à Unix était déja disponible.
Ce qu'ils ont trouvé n'était pas un accident : c'était le système GNU. Les logiciels libres disponibles complétèrent le système parce que le Projet GNU travaillait à en concevoir un depuis 1984. Le manifeste GNU a mis en avant le dessein de développer un système semblable à Unix et appelé GNU. L'Annonce Initiale du Projet GNU souligne aussi quelques-uns des plans originaux pour le système GNU. Au moment où Linux était lancé, le système était presque fini.
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 semblable à 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 dudit projet.
Si nous essayions de mesurer la contribution du Projet GNU de cette manière, à quelle conclusion arriverions-nous ? Un producteur de CD-ROM a constaté dans sa « Distribution de Linux » que les Logiciels GNU y représentaient la plus grande entité, 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'y prenait une part que de 3%. (Les proportions en 2008 sont similaires : dans le répertoire « principal » de gNewSense, Linux a une part de 1,5% et les paquetages GNU de 15%). Alors s'il fallait trouver un nom pour le systèmeen se basant sur qui avait écrit les programmes qui le composent, le seul choix le plus approprié serait « GNU ».
Mais nous ne pensons pas que c'est la meilleure manière de considérer la question. Le Projet GNU n'était pas, et n'est pas, un projet pour développer des paquetages logiciels spécifiques. Ce n'était pas un projet pour développer un compilateur C, bien que nous l'ayions fait. Ce n'était pas non plus un projet pour développer un éditeur de texte, bien que nous en ayions développé un. L'objectif final du Projet GNU est de développer un système semblable à Unix, complet et libre : GNU.
Plusieurs personnes ont apporté des contributions majeures aux logiciels libres qu'on trouve dans le système et elles méritent toutes 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 requis à la conception d'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 non-passionnants 1 parce qu'on ne peut pas avoir de système sans eux. Certains de nos composants système, 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 besoin de jeux aussi.
Au début des années 90 nous avions rassemblé le système complet en dehors du noyau. Nous avons commencé aussi un noyau : le GNU Hurd, qui tourne en superposition à Mach. Le développement de ce noyau fut bien plus difficile que nous nous y attendions : le GNU Hurd a commencé à fonctionner de manière fiable en 2001, mais est encore loin d'être prêt à l'usage public.
Heureusement, vous n'êtes pas obligé d'attendre Hurd, grâce à Linux. Quand Linus Torvalds a écrit Linux, il a bouché le dernier trou dans le système GNU. Les gens purent alors adjoindre Linux au système GNU pour obtenir un système libre complet : un système GNU basé sur Linux ; le système GNU/Linux, en plus court.
Les faire fonctionner ensemble n'était pas un travail trivial. Certains composants GNU 3 requéraient 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 gros. 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 éffectué un travail éssentiel. 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, et les fonds de la FSF sont impliqués. La FSF a financé la réécriture des extensions propres à Linux de la bibliothèque C de GNU afin qu'ils soient maintenant bien intégrés 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 à un de ses stades initiaux.
Aujourd'hui il éxiste de nombreuses variantes du système GNU/Linux souvent appelés « distributions ». La plupart d'entre elles incluent des logiciels non-libres : leur développeurs suivent la philosophie associée à Linux plutôt que celle de GNU. Mais il y a aussi des distributions de GNU/Linux complètement libres. La FSF pourvoit le matériel informatique pour deux de ces distributions, Ututo et gNewSense.
Faire une distribution libre de GNU/Linux n'est pas uniquement une question d'élimination des programmes divers non-libres. Aujourd'hui, les versions usuelles de Linux contiennent également des programmes non-libres. Ces programmes sont destinés à être chargés dans des appareils 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, maintenir une distribution libre de GNU/Linux inclut maintenant également la maintenance d'une version libre de Linux.
Que vous utilisiez GNU/Linux ou pas, veuillez ne pas semez 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 plus ou moins le système GNU additionné de 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 http://www.gnu.org/gnu/the-gnu-project.fr.html sont de bons choix. Si vous voulez indiquer une référence à Linux, le noyau, http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?Linux est une bonne URL à utiliser.
Addendum : À côté de GNU, un autre projet a produit de manière indépendante un système d'exploitation libre semblable à Unix. Ce système est connu sous le nom de BSD et a été développé à l'University College de 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 type de système BSD.
Quelquefois les gens demandent si BSD est aussi une version de GNU, comme GNU/Linux. Les développeurs de BSD ont été inspirés à rendre leur travail libre par l'exemple du Projet GNU et ils ont été encouragés à l'occasion par des activistes de GNU mais leur travail était de moindre relation avec GNU. Les systèmes BSD emploient quelques logiciels GNU aujourd'hui, de même que le système GNU et ses variantes font usage de quelques logiciels BSD; mais pris à part, 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érait pas la situation 5.
Notes :
- Ces composants non passionnants mais essentiels comprenne l'assembleur GNU, GAS et le linker, GLD, qui font actuellement partie du paquetage GNU Binutils, GNU tar, ….
- Par exemple, le Bourne Again SHell (BASH), l'interpréteur PostScript Ghostscript, et la bibliothèque C GNU ne sont pas des outils de programmation. Tout comme GNUCash, GNOME et GNU Chess.
- Par exemple, la bibliothèque C GNU.
- 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 plupart du noyau de Solaris a été rendu libre, mais si vous voulez faire un système libre de cela, à part remplacer les parties manquantes du noyau, vous aurez aussi besoin d'y ajouter GNU ou BSD.
- D'un autre côté, dans les années qui ont suivi l'écriture de cet article, la bibliothèque GNU C a été portée dans le noyau de FreeBSD, ce qui a rendu possible de combiner le système GNU avec ce noyau. Tout comme avec GNU/Linux, ce sont des variantes de GNU, et 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.