[Traduit de l'anglais]

Mettre en application les critères du logiciel libre

Les quatre libertés essentielles constituent les critères permettant de dire si une séquence donnée de code est libre (c'est-à-dire si elle respecte la liberté de ses utilisateurs), ou non. De quelle manière doit-on les appliquer pour déterminer s'il est opportun de recommander un paquet logiciel, un système d'exploitation, un ordinateur ou une page web ?

Qu'un programme soit libre ou non influe tout d'abord sur les décisions que nous prenons dans la sphère privée : pour garder notre liberté, il nous faut rejeter les programmes qui nous l'enlèveraient. Cependant, cela influe également sur ce que nous devons dire aux autres et faire avec les autres.

Un programme non libre est une injustice. Distribuer un programme non libre, conseiller un programme non libre à d'autres personnes ou, plus généralement, les conduire à utiliser des logiciels non libres, veut dire les orienter vers l'abandon de leur liberté. Bien sûr, inciter les gens à utiliser du logiciel non libre n'est pas la même chose que d'en installer sur leurs ordinateurs, mais il ne faut pas les guider dans la mauvaise direction.

D'un point de vue plus fondamental, nous ne devons pas présenter un programme non libre comme une solution car cela lui conférerait de la légitimité. Le logiciel non libre est un problème ; le présenter comme une solution, c'est nier l'existence de ce problème.

Cet article explique comment nous appliquons les critères de base du logiciel libre à l'évaluation de divers objets, afin de décider de les recommander, ou non.

Paquets logiciels

Pour qu'un paquet logiciel soit libre, tout son code doit être libre. Mais pas seulement son code. Puisque les fichiers de documentation (manuels, fichiers LISEZ-MOI, journal des modifications [changelog], etc.) sont des parties techniques essentielles de ces paquets, ils doivent également être libres.

Un paquet logiciel est généralement utilisé avec de nombreux autres et interagit avec quelques-uns d'entre eux. Lesquelles de ces interactions avec des programmes non libres sont-elles acceptables sur le plan éthique ?

Nous avons développé GNU pour qu'il existe un système d'exploitation libre ; parce qu'en 1983, il n'y en avait aucun. Alors que nous développions les premiers composants de GNU dans les années 80, il était inévitable que chacun de ces composants dépende de logiciels non libres. Par exemple, aucun programme C ne pouvait s'exécuter sans un compilateur C non libre avant que GCC ne fonctionne ; et aucun ne pouvait s'exécuter sans la bibliothèque libc d'Unix avant que la glibc ne fonctionne. Chaque composant ne pouvait s'exécuter que sur des systèmes non libres, puisque tous les systèmes étaient non libres.

Une fois que nous avions publié un composant pouvant fonctionner sur certains systèmes non libres, les utilisateurs le portaient sur d'autres systèmes non libres ; ces portages n'étaient pas pires, sur le plan éthique, que le code spécifique à certaines plateformes dont nous avions besoin pour développer ces composants ; aussi avons-nous incorporé leurs modifications.

La libération du noyau Linux, en 1992, a apporté la dernière pierre à l'édifice du système GNU (initialement, en 1991, Linux avait été distribué sous une licence non libre). La combinaison de GNU avec Linux a résulté en un système d'exploitation complètement libre, GNU/Linux.

À partir de là, nous aurions pu supprimer le support des plateformes non libres, mais nous avons décidé de ne pas le faire. Un système non libre est une injustice, mais ce n'est pas notre faute si un utilisateur en fait tourner un. Adapter un programme libre à ce système n'augmente pas l'injustice. Et c'est utile, non seulement pour les utilisateurs de ces systèmes, mais aussi pour amener davantage de gens à contribuer au développement du programme libre.

Cependant, un programme non libre qui s'exécute au-dessus d'un programme libre pose un problème totalement différent, parce qu'il conduit les utilisateurs à renoncer à une part de leur liberté. Dans certains cas, nous interdisons cette pratique : par exemple, GCC interdit les greffons [plugins]non libres. Lorsqu'un programme les autorise, il doit au minimum ne pas conduire les gens à les utiliser. Par exemple, nous avons choisi LibreOffice plutôt qu'OpenOffice, car ce dernier suggère l'utilisation de greffons non libres alors que LibreOffice les ignore. Nous avons initialement développé IceCat pour éviter de proposer les greffons non libres suggérés par Firefox.

En pratique, si la documentation du paquet IceCat explique comment exécuter IceCat sur MacOS, cela ne conduira pas les gens à utiliser MacOS. Mais si elle parle d'un greffon non libre, cela incitera les utilisateurs d'IceCat à installer ce greffon. Par conséquent, le paquet IceCat, y compris ses manuels et son site web, doit s'abstenir d'en parler.

Parfois un programme libre et un programme non libre interagissent, mais aucun d'eux n'est basé sur l'autre. Dans de tels cas, nous avons pour règle, si le programme non libre est très connu, de dire aux gens comment utiliser notre programme libre avec lui, mais si le programme privateur est inconnu, de ne pas indiquer qu'il existe. Parfois, nous faisons en sorte qu'il interopère avec le programme non libre si ce dernier est installé, mais nous évitons de dire aux utilisateurs que cette possibilité existe.

Nous refusons les « améliorations » qui ne fonctionneraient que sur un système non libre. Cela inciterait les gens à utiliser un système non libre à la place de GNU et ce serait marquer contre notre camp.

Distros GNU/Linux

Après la libération de Linux en 1992, les gens commencèrent à développer des distributions GNU/Linux (aussi appelées « distros »). Seules quelques distros sont entièrement constituées de logiciel libre.

Les règles valables pour un paquet logiciel s'appliquent également aux distros : une distro éthique doit contenir uniquement des logiciels libres et ne conduire les utilisateurs que vers des logiciels libres. Mais que cela signifie-t-il pour une distro de « contenir » un paquet logiciel particulier ?

Certaines distros installent des programmes à partir de paquets binaires qui en font partie intégrante ; d'autres construisent chaque programme à partir des sources de l'amont et ne contiennent, au sens littéral, que les recettes pour les télécharger et le construire. Lorsqu'il s'agit de liberté, la façon dont une distro installe un paquet donné n'est pas significative ; si elle propose ce paquet en option ou que son site web le fait, nous disons qu'elle « contient » ce paquet.

Les utilisateurs d'un système libre le contrôlent, ils peuvent donc installer ce qu'ils souhaitent. Les distros libres fournissent aux utilisateurs des méthodes générales pour installer leurs propres programmes et leurs versions modifiées de programmes libres ; ils peuvent donc également installer des programmes non libres. Fournir ces méthodes générales n'est pas un défaut du point de vue éthique, parce que les développeurs de la distro ne sont pas responsables de ce que les utilisateurs se procurent et installent de leur propre initiative.

Les développeurs deviennent responsables de l'installation de logiciel non libre lorsqu'ils conduisent les utilisateurs vers un programme non libre – par exemple en l'incluant dans la liste des paquets de la distro ou en le distribuant sur leurs propres serveurs, ou encore en le présentant comme une solution à un problème. C'est le point sur lequel la plupart des distros GNU/Linux présentent une faille éthique.

Les gens qui installent des paquets logiciels de leur propre initiative ont un certain niveau de sophistication. Si nous leur disons « Baby contient du code non libre, mais Gbaby est libre », nous pouvons attendre d'eux qu'ils prennent soin de s'en souvenir. Mais les distros sont conseillées à des utilisateurs ordinaires qui oublieront probablement un détail de ce genre. Ils se diront par exemple « Comment s'appelle celui qu'ils m'ont conseillé d'utiliser ? Je crois que c'était Baby. »

Par conséquent, pour recommander une distro au grand public nous exigeons que son nom ne soit pas semblable à celui d'une distro que nous rejetons, afin que notre message recommandant uniquement les distros libres puisse être transmis de manière fiable.

Il y a une autre différence entre une distro et un paquet logiciel : la probabilité qu'on lui ajoute du code non libre. Les développeurs d'un programme vérifient soigneusement le code qu'ils ajoutent. S'ils ont décidé de rendre le programme libre, il est peu probable qu'ils y ajouteront du code non libre. Il existe des exceptions, entre autres le cas très malencontreux des blobs de microcode binaire qui ont été ajoutés à Linux, mais cela ne concerne qu'une proportion minime des programmes libres existants.

En revanche, une distro GNU/Linux contient typiquement des milliers de paquets et ses développeurs peuvent lui en ajouter des centaines par an. Faute d'une attention constante pour éviter ceux qui contiennent du logiciel non libre, certains s'y glisseraient sûrement. Puisque les distros libres sont peu nombreuses, nous demandons aux développeurs de chacune d'elles de s'engager à la conserver libre en supprimant tout code non libre ou tout logiciel malveillant, condition nécessaire pour que nous mettions cette distro sur notre liste. Voir les Conditions pour qu'une distribution système soit reconnue comme libre par GNU.

Nous ne demandons pas de telles promesses pour les logiciels libres, car ce n'est pas faisable et heureusement pas nécessaire. Obtenir des développeurs de 30 000 programmes libres la promesse de les conserver ainsi pourrait éviter quelques problèmes, mais au prix d'un gros travail de la part du personnel de la FSF ; de plus, la plupart de ces développeurs n'ont aucune relation avec le projet GNU et peut-être aucune envie de nous faire des promesses. C'est pourquoi nous nous occupons des rares cas de programmes qui, de libres, sont devenus non libres, après les avoir découverts.

Périphériques

Un périphérique nécessite la présence de logiciels particuliers dans l'ordinateur sur lequel il est branché – peut-être un pilote, peut-être un micrologiciel [firmware] que le système doit charger dans le périphérique pour le faire fonctionner. Il est donc acceptable d'utiliser et de recommander un périphérique s'il peut être utilisé sur un ordinateur dans lequel aucun logiciel non libre n'est installé ; autrement dit, si le pilote du périphérique est libre, ainsi que tout micrologiciel nécessitant d'être chargé par le système.

C'est facile à vérifier : connectez le périphérique à un ordinateur utilisant une distribution GNU/Linux complètement libre et regardez s'il fonctionne. Mais la plupart des utilisateurs aimeraient le savoir avant d'acheter le périphérique ; c'est pourquoi nous rassemblons les informations concernant de nombreux périphériques sur le site h-node.org, une base de données de matériel adapté aux systèmes d'exploitation entièrement libres.

Ordinateurs

Un ordinateur contient des logiciels à plusieurs niveaux. Sur quel critère pouvons-nous certifier qu'un ordinateur « respecte votre liberté » ?

Le système d'exploitation et tout logiciel de niveau supérieur doit évidemment être libre. Dans les années 90, le programme de démarrage (à l'époque, le BIOS) est devenu remplaçable, et comme il s'exécute dans l'unité centrale il pose le même problème que le système d'exploitation. Par conséquent, les programmes de type micrologiciel ou pilote, qui s'installent dans le système ou avec lui, ou encore avec le programme de démarrage, doivent être libres.

Si un ordinateur dispose de composants matériels qui nécessitent l'installation de pilotes ou de micrologiciels non libres avec le système, peut-être que nous sommes tout de même en mesure de le certifier. Si l'ordinateur reste utilisable sans ces composants, et si par ailleurs nous pensons que la majorité des gens ne seront pas conduits à installer des programmes non libres afin de les faire fonctionner, alors nous pouvons donner la certification. Autrement, nous ne le pouvons pas. La décision se prendra au cas par cas.

Un ordinateur peut avoir des micrologiciels et du microcode de bas niveau préinstallés et modifiables. Il peut également avoir du code dans une mémoire morte figée. Pour le moment, nous avons décidé d'ignorer ces programmes dans nos critères de certification, parce qu'autrement aucun ordinateur ne pourrait être conforme, et parce qu'un micrologiciel non modifiable en conditions normales est, sur le plan éthique, l'équivalent d'un circuit intégré. Aussi nos critères de certification couvrent-ils seulement le code qui est exécuté dans le processeur principal d'un ordinateur et ne réside pas dans une mémoire morte figée. À mesure que l'usage de logiciel libre deviendra possible à d'autres niveaux du processeur, nous exigerons du logiciel libre à ces niveaux-là également.

Puisque la certification d'un produit est une promotion active de ce produit, nous insistons pour qu'en retour le vendeur nous soutienne, en parlant de logiciel libre plutôt que d'open source et en appelant la combinaison de GNU avec Linux « GNU/Linux ». Nous n'avons aucune obligation de promouvoir activement des projets qui ne reconnaissent pas notre travail et ne soutiennent pas notre mouvement.

Voir nos critères de certification.

Pages web

De nos jours, de nombreuses pages web contiennent des programmes complexes en JavaScript et ne fonctionnent pas sans eux. Il s'agit d'une pratique nuisible puisqu'elle empêche les utilisateurs de contrôler leur informatique. De plus, la plupart de ces programmes ne sont pas libres – une injustice. Souvent, le code JavaScript espionne l'utilisateur. Le JavaScript s'est métamorphosé en une attaque contre la liberté des utilisateurs.

En réponse à ce problème, nous avons développé LibreJS, une extension pour Firefox qui bloque le code JavaScript non libre et non trivial (il n'y a aucune nécessité de bloquer le simple script qui implémente des modifications mineures de l'interface utilisateur). Nous demandons aux sites de bien vouloir libérer leurs programmes en JavaScript et indiquer leurs licences d'une manière reconnaissable par LibreJS.

En attendant, est-ce éthiquement correct de créer un lien vers une page web contenant un programme en JavaScript non libre ? Si nous étions complètement intransigeants, nous ne mettrions en lien que des pages contenant uniquement du code JavaScript libre. Cependant, de nombreuses pages fonctionnent même si le code JavaScript qu'elles contiennent ne s'exécute pas. De plus, ce n'est pas en suivant nos liens que vous rencontrerez le plus souvent du code JavaScript non libre ; pour éviter cela, vous devez utiliser LibreJS ou désactiver JavaScript. Nous avons donc décidé de mettre en lien des pages pouvant fonctionner sans le JavaScript non libre qu'elles contiennent, tout en insistant auprès des utilisateurs pour qu'ils se protègent du JavaScript non libre d'une manière générale.

Cependant, si une page ne peut pas faire son travail sans exécuter de code JavaScript non libre, créer un lien vers elle demande indéniablement aux gens d'exécuter ce code non libre. Par principe, nous ne mettons pas ces pages en lien.

Conclusion

Appliquer l'idée de base que le logiciel doit être libre à diverses situations conduit à différentes règles pratiques. À mesure que de nouvelles situations émergeront, le projet GNU et la Free Software Foundation adapteront leurs critères de liberté de manière à conduire les utilisateurs de l'informatique vers elle, en pratique aussi bien qu'en principe. En ne conseillant que des programmes, des distributions et des matériels respectueux des libertés, vous pouvez apporter au mouvement du logiciel libre un soutien dont il a bien besoin.