Leçon 3 sur 7 · Histoire
GNU et le logiciel libre
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
- Que signifie le nom « GNU », et en quelle année le projet a-t-il été annoncé ?
- Citez les quatre libertés du logiciel libre.
- Qu'est-ce que le copyleft ? Quelle licence en est l'exemple le plus connu ?
- 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 ?
- Quelle pièce manquait au projet GNU au début des années 1990 ?
Réponses
- GNU's Not Unix (« GNU n'est pas UNIX »), un acronyme récursif ; annoncé le 27 septembre 1983 par Richard Stallman.
- 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.
- 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.
- 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.
- 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.