D'UNIX à Linux : l'histoire qui explique tout
Quitter

Leçon 3 sur 7 · Histoire

GNU et le logiciel libre

30 min Debian 12

Objectif

Comprendre d'où viennent la plupart des outils que vous utiliserez sur Linux, ce que signifie « logiciel libre », et savoir lire les grandes licences (GPL, BSD, MIT) que vous rencontrerez dans votre métier.

L'essentiel

  • En 1983, Richard Stallman annonce le projet GNU : un système complet de type UNIX, entièrement libre.
  • En 1985, il crée la Free Software Foundation (FSF). La licence GPL suit en 1989.
  • Un logiciel libre garantit quatre libertés : utiliser, étudier, redistribuer, modifier et partager ses modifications.
  • La GPL est copyleft : qui redistribue un logiciel GPL modifié doit le redistribuer sous GPL. Les licences BSD et MIT sont permissives : on peut en faire presque ce que l'on veut.
  • En 1998, le terme open source apparaît : même réalité technique, discours plus tourné vers les entreprises.

1. Le problème : le code se ferme (fin des années 1970)

Dans les premières années de l'informatique, les programmeurs échangent leur code naturellement, comme des chercheurs échangent leurs résultats. UNIX lui-même circulait avec son code source dans les universités (leçon 0.1).

Au tournant des années 1980, tout change : les éditeurs comprennent que le logiciel peut se vendre séparément de la machine. Le code source devient un secret commercial. Les utilisateurs reçoivent des programmes déjà compilés, qu'ils n'ont ni le droit d'étudier, ni le droit de corriger, ni le droit de partager.

Richard Stallman, programmeur au laboratoire d'intelligence artificielle du MIT, vit ce changement comme une injustice. Une anecdote célèbre l'illustre : l'imprimante de son laboratoire se bloquait souvent. Sur l'ancienne imprimante, il avait modifié le programme pour prévenir les utilisateurs d'un bourrage. Pour la nouvelle, le fabricant refusait de donner le code source. Impossible de corriger un problème pourtant simple.

2. 1983 : l'annonce du projet GNU

Le 27 septembre 1983, Stallman annonce sur Usenet (l'ancêtre des forums) un projet fou : écrire un système d'exploitation complet, compatible avec UNIX, et entièrement libre. Il l'appelle GNU, un acronyme récursif qui signifie « GNU's Not Unix » (« GNU n'est pas UNIX »).

Pourquoi compatible UNIX ? Parce que UNIX est bien conçu (leçon 0.1), qu'il est découpé en petits programmes que l'on peut réécrire un par un, et que les utilisateurs pourront passer de l'un à l'autre sans tout réapprendre.

Le travail commence en janvier 1984, quand Stallman quitte son poste au MIT pour que l'université ne puisse pas revendiquer son code. En 1985, il publie le Manifeste GNU, qui explique sa démarche, et fonde la Free Software Foundation (FSF) pour financer le projet.

3. Les briques GNU que vous utiliserez tous les jours

Pièce par pièce, le projet GNU réécrit les outils d'UNIX. À la fin des années 1980, il ne manque presque rien :

Outil GNU Date Rôle Commande
GNU Emacs 1984-1985 Éditeur de texte emacs
GCC (GNU C Compiler, aujourd'hui GNU Compiler Collection) 1987 Compilateur : il a servi à compiler Linux gcc
Bash (Bourne Again Shell, Brian Fox) 1989 Le shell, compatible avec le shell sh de Bourne bash
coreutils (fusion de fileutils, textutils, shellutils) années 1990-2000 Les commandes de base ls, cp, mv, cat, chmod
grep, sed, gawk, tar, gzip, find années 1980-1990 Chercher, transformer, archiver grep, sed, awk, tar
glibc à partir de 1987 La bibliothèque C, utilisée par presque tous les programmes (invisible, mais partout)

Vérifiez vous-même :

ls --version | head -n 1      # ls (GNU coreutils) …
bash --version | head -n 1    # GNU bash, version …
grep --version | head -n 1    # grep (GNU grep) …

Il manque pourtant une pièce essentielle : le noyau, le programme qui parle directement au matériel. Le noyau prévu par GNU, le Hurd (commencé en 1990), est très ambitieux et avance lentement. Il n'est toujours pas utilisé en production aujourd'hui. Cette pièce manquante, c'est Linux qui va la fournir en 1991 (leçon 0.4).

4. Les quatre libertés

Pour Stallman, « libre » (free) parle de liberté, pas de prix. Sa formule : free comme dans « liberté d'expression », pas comme dans « bière gratuite ». En français, nous avons la chance d'avoir deux mots : libre et gratuit.

Un logiciel est libre si son utilisateur dispose des quatre libertés (numérotées à partir de zéro, en bon informaticien) :

Liberté Ce que vous pouvez faire Exemple concret
0 Utiliser le programme, pour n'importe quel usage Installer Linux sur les 200 caisses d'une chaîne de magasins, sans compter les licences
1 Étudier son fonctionnement et l'adapter (il faut donc le code source) Lire le code d'un serveur web pour comprendre une erreur
2 Redistribuer des copies Donner une clé USB d'installation à un collègue
3 Améliorer le programme et partager vos améliorations Corriger un bug et envoyer le correctif au projet

Un logiciel libre peut être vendu : Red Hat vend des abonnements à RHEL, qui est composé de logiciels libres. Et un logiciel gratuit n'est pas forcément libre : beaucoup d'applications gratuites cachent leur code.

5. La GPL et le copyleft (1989)

Pour garantir ces libertés, Stallman utilise… le droit d'auteur lui-même. La GNU General Public License (GPL) dit en substance :

Vous pouvez utiliser, étudier, modifier et redistribuer ce programme. Mais si vous redistribuez une version modifiée, vous devez la diffuser sous la même licence, avec son code source.

C'est le principe du copyleft (jeu de mots sur copyright) : la liberté se transmet, personne ne peut la confisquer en route.

Version Année À retenir
GPL v1 1989 Première version
GPL v2 1991 La licence du noyau Linux (en « version 2 seulement »)
GPL v3 2007 Protège contre les brevets et contre les appareils qui empêchent d'installer une version modifiée
LGPL 1991 Version « allégée » pour les bibliothèques : un programme non libre peut les utiliser
AGPL 2007 (v3) Étend l'obligation aux logiciels utilisés à distance, par le réseau (applications web)

Point important pour un administrateur : la GPL ne vous impose rien tant que vous ne redistribuez pas. Vous pouvez modifier un logiciel GPL pour les serveurs de votre entreprise sans rien publier. (L'AGPL est l'exception : si vous offrez le service au public par le réseau, vous devez donner le code à ses utilisateurs.)

6. 1998 : le mouvement « open source »

En janvier 1998, l'éditeur du navigateur Netscape annonce qu'il va publier son code source (qui deviendra Mozilla, puis Firefox). C'est un choc : une grande entreprise ouvre son produit phare.

Quelques semaines plus tard, en février 1998, un groupe de développeurs, dont Eric S. Raymond et Bruce Perens, propose un nouveau terme : open source (« code source ouvert »), forgé par Christine Peterson. Ils fondent l'Open Source Initiative (OSI). Leur idée : parler aux entreprises de qualité, de fiabilité et de coûts, plutôt que de morale et de liberté.

Logiciel libre (FSF) Open source (OSI)
Argument principal Une question d'éthique : l'utilisateur doit être libre Une question d'efficacité : le développement ouvert produit de meilleurs logiciels
Figure emblématique Richard Stallman Eric S. Raymond, Bruce Perens
Texte de référence Les quatre libertés L'Open Source Definition, dérivée des principes de Debian (DFSG)
En pratique Les licences reconnues sont presque les mêmes

Le texte de Raymond, La Cathédrale et le Bazar (1997), compare deux façons de développer : en petit groupe fermé (la cathédrale) ou au grand jour, avec des milliers de contributeurs (le bazar, le modèle de Linux). On lui doit une formule souvent citée : avec assez d'yeux, tous les bugs sont faciles à trouver.

On rencontre souvent le sigle FLOSS ou FOSS (Free/Libre and Open Source Software), qui réunit les deux camps.

7. Les licences que vous rencontrerez

Sur un serveur, chaque logiciel a sa licence. Voici les familles principales :

Licence Type Ce qu'elle exige Exemples
GPL (v2, v3) Copyleft fort Redistribuer les modifications sous GPL, avec le code source Noyau Linux (v2), bash, GCC, coreutils
LGPL Copyleft faible Copyleft sur la bibliothèque, pas sur le programme qui l'utilise glibc
AGPL Copyleft réseau Fournir le code aussi aux utilisateurs du service en ligne Certains logiciels web (Nextcloud, par exemple)
BSD (2 ou 3 clauses) Permissive Garder la mention du copyright FreeBSD, OpenSSH (pour l'essentiel)
MIT Permissive Garder la mention du copyright, rien d'autre X Window (X11), Node.js, jQuery
Apache 2.0 Permissive Mention du copyright + clause sur les brevets Serveur Apache httpd, Kubernetes, Android (en grande partie)

L'exemple qui fait comprendre la différence : Apple a pu reprendre du code BSD dans macOS sans publier ses modifications, car la licence BSD le permet. Un fabricant de box Internet qui modifie le noyau Linux, lui, doit fournir le code source de ses modifications à ses clients, car le noyau est en GPL.

Sur Debian, les textes des licences courantes sont rangés dans un seul dossier, et chaque paquet décrit sa licence :

ls /usr/share/common-licenses/          # GPL-2, GPL-3, LGPL, BSD, Apache-2.0…
head -n 3 /usr/share/common-licenses/GPL-3
# Sur un Debian complet, chaque paquet a sa fiche de licence :
# /usr/share/doc/<paquet>/copyright

8. GNU/Linux ou Linux ?

Stallman demande que l'on dise GNU/Linux, car le système complet doit beaucoup aux outils GNU, et pas seulement au noyau. Debian suit cet usage (« Debian GNU/Linux »). La plupart des gens, et la plupart des entreprises, disent simplement Linux.

Dans ce cours, nous disons « Linux » par commodité, mais retenez la vérité technique : Linux est le noyau ; une grande partie des outils autour vient de GNU. Et certains systèmes « Linux » n'utilisent presque pas GNU : Android, par exemple, ou la distribution Alpine (avec BusyBox et la bibliothèque musl).

9. La frise de la leçon

1983  27 septembre : Stallman annonce le projet GNU
1984  Début du travail ; Stallman quitte le MIT
1985  Manifeste GNU ; création de la Free Software Foundation
1987  GCC
1989  GPL v1 ; Bash
1990  Début du Hurd, le noyau prévu par GNU
1991  GPL v2 ; LGPL
1992  Le noyau Linux passe sous GPL : le système libre est complet
1997  « La Cathédrale et le Bazar » (Eric S. Raymond)
1998  Netscape ouvre son code ; naissance du terme « open source » et de l'OSI
2007  GPL v3 et AGPL v3

Idées reçues

  • « Libre veut dire gratuit. » Non. Libre parle de droits ; un logiciel libre peut être vendu (abonnements RHEL, support SUSE…).
  • « Open source veut dire que n'importe qui peut modifier le logiciel officiel. » Non. Vous pouvez modifier votre copie. Pour que votre correctif entre dans le projet officiel, il doit être accepté par ses mainteneurs.
  • « La GPL oblige à publier le code de tout ce qu'on développe sur Linux. » Non. Un programme qui tourne sur Linux n'est pas concerné. Seules les modifications redistribuées d'un logiciel GPL le sont.
  • « Le logiciel libre, c'est pour les amateurs. » Les plus grands sites du monde, les banques et les opérateurs télécoms tournent sur des logiciels libres.

Lab

Sur votre machine Debian 12, vous allez retrouver la signature de GNU et les licences installées :

ls --version | head -n 1
bash --version | head -n 1
ls /usr/share/common-licenses/
grep -m1 Version /usr/share/common-licenses/GPL-3

Les tâches : relever la mention GNU de ls et de bash, lister les licences fournies par Debian, et retrouver la date de la GPL 3. Puis cliquez sur Vérifier.


Quiz

  1. Que signifie le nom « GNU », et en quelle année le projet a-t-il été annoncé ?
  2. Citez les quatre libertés du logiciel libre.
  3. Qu'est-ce que le copyleft ? Quelle licence en est l'exemple le plus connu ?
  4. Une entreprise modifie le code d'un logiciel sous licence MIT et le vend sans publier ses modifications. A-t-elle le droit ? Et si le logiciel était sous GPL ?
  5. Quelle pièce manquait au projet GNU au début des années 1990 ?
Réponses
  1. GNU's Not Unix (« GNU n'est pas UNIX »), un acronyme récursif ; annoncé le 27 septembre 1983 par Richard Stallman.
  2. 0 utiliser pour tout usage ; 1 étudier et adapter (accès au code source) ; 2 redistribuer des copies ; 3 améliorer et partager les améliorations.
  3. Le principe selon lequel les versions modifiées et redistribuées doivent rester sous la même licence libre. L'exemple type est la GPL.
  4. Avec MIT : oui, il suffit de conserver la mention du copyright. Avec la GPL : non, si elle redistribue une version modifiée, elle doit fournir le code source sous GPL.
  5. Le noyau (le Hurd n'était pas prêt) : c'est Linux qui l'a fourni.

Sources de référence : textes du projet GNU (gnu.org), Open Source Definition (opensource.org), Debian Policy. Texte original MasterLinux.

Exercices pratiques

À réaliser sur Debian 12

Le terminal en ligne ouvre bientôt. En attendant, réalisez ces tâches sur votre machine Linux, une machine virtuelle ou WSL.

  1. Les commandes de base viennent du projet GNU. Enregistrez la première ligne de ls --version dans /root/ls.txt
    Afficher un indiceUn tube vers head garde la première ligne : ls --version | head -n 1 > /root/ls.txt
    Voir la solution
    ls --version | head -n 1 > /root/ls.txt

    Vérification : grep -q 'GNU coreutils' /root/ls.txt

  2. Faites de même pour le shell : enregistrez la première ligne de bash --version dans /root/bash.txt
    Afficher un indicebash --version | head -n 1 > /root/bash.txt
    Voir la solution
    bash --version | head -n 1 > /root/bash.txt

    Vérification : grep -q 'GNU bash' /root/bash.txt

  3. Debian range le texte des licences courantes dans /usr/share/common-licenses. Enregistrez la liste de ce dossier dans /root/licences.txt
    Afficher un indicels /usr/share/common-licenses > /root/licences.txt
    Voir la solution
    ls /usr/share/common-licenses > /root/licences.txt

    Vérification : grep -q '^GPL' /root/licences.txt && grep -q '^BSD' /root/licences.txt

  4. Retrouvez la ligne qui donne la version et la date de la GPL 3 (premier mot « Version » dans /usr/share/common-licenses/GPL-3) et enregistrez-la dans /root/gpl.txt
    Afficher un indicegrep -m1 s'arrête au premier résultat : grep -m1 Version /usr/share/common-licenses/GPL-3 > /root/gpl.txt
    Voir la solution
    grep -m1 Version /usr/share/common-licenses/GPL-3 > /root/gpl.txt

    Vérification : grep -q 'Version 3' /root/gpl.txt

Références officielles consultées : GNU Project — « What is Free Software? », « The GNU Manifesto » (gnu.org) ; Open Source Initiative — The Open Source Definition (opensource.org) ; Debian Policy — /usr/share/common-licenses ; Debian Free Software Guidelines. Texte original MasterLinux.