L'original de cette page est en anglais.
Linux et le système GNU
par Richard Stallman
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 vraiment 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 GNU/Linux.
Beaucoup 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'y prenait une part
que de 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 passionnants1 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 outils2. 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 GNU3 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 associée à Linux
plutôt que celle de GNU. Mais il y a aussi des distributions de GNU/Linux entièrement libres. La FSF
fournit un support informatique à gNewSense.
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 http://www.gnu.org/gnu/the-gnu-project.html
sont de bons choix. Si vous voulez indiquer une référence à Linux, le noyau,
http://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'hui4 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 :
-
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.
-
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.
-
Par exemple, la bibliothèque C de 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 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.
-
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.