L'affaire faker.js / colors.js

Publié le 09/01/2022.

Que nous le voulions ou non, l'argent est ce qui fait tourner l'immense majorités de nos sociétés contemporaines. Alors forcément, sa circulation fait l'objet d'enjeux sociétaux plus ou moins polémique. C'est ainsi que, voulant agir contre les entreprises qui utilisent le travail de bénévoles pour s'enrichir, un développeur de logiciels libres a pété un plomb.

Le droit d'auteur en deux mots

Sur Wikipedia, le code source est défini comme « un texte qui présente les instructions composant un programme sous une forme lisible, telles qu'elles ont été écrites dans un langage de programmation ». Ce code source étant considéré comme une œuvre de l'esprit, il est, sauf cas particuliers, soumis au droit d'auteur. Cette soumission au régime du droit d'auteur est automatique, il n'est pas possible d'y échapper. Ce régime définit un certains nombre de droits régissant ce qu'il est possible de faire des œuvres. Distinguons simplement, d'un côté, le droit moral et, de l'autre côté, les droits patrimoniaux.

Le droit moral est simplement le droit de l'auteur d'une œuvre d'être effectivement reconnu comme tel. C'est un droit extra-patrimonial perpétuel, inaliénable et imprescriptible. Personne ne peut donc revendiquer être l'auteur d'une œuvre créée par quelqu'un d'autre.

Les droits patrimoniaux, eux, sont l'ensemble des droits d'exploitation de l'œuvre. Ce sont donc eux qui régissent ce que chacun a le droit de faire ou non avec l'œuvre. Contrairement au droit moral, les droits patrimoniaux peuvent être cédés, intégralement ou partiellement, à un ou plusieurs tiers. Cette session de droits est encadrée par un document relevant du droit des contrats. Dans le cadre des logiciels, il s'agit fréquemment d'un contrat de licence, plus simplement appelée licence logicielle ou licence. Cette licence est ainsi un contrat passé entre l'auteur du logiciel et l'utilisateur du dit logiciel. Parfois, l'auteur d'un logiciel peut laisser le choix entre plusieurs licences différentes, voir parfois passer un contrat spécifique avec un utilisateur particulier.

On appelle logiciel libre un logiciel dont la licence garantit à l'ensemble des utilisateurs « la liberté d'exécuter, copier, distribuer, étudier, modifier et améliorer » le dit logiciel. Afin de pouvoir exercer ces droits, l'accès au code source du logiciel est nécessaire. Il existe un très grand nombre de licences libres permettant de juridiquement garantir ces droits, mais en parler plus en détail est un sujet à part entière.

Un logiciel est dit open-source du moment que son code source est ouvert, c'est à dire publié dans l'espace public. Contrairement au logiciel libre, un logiciel open-source n'offre aucune garantie ou liberté particulière aux utilisateurs, bien que l'Open Source Initiative souhaite conserver la majeure partie de ces garanties. Ainsi, tous logiciels libres sont nécessairement open-source, mais l'inverse n'est pas vrai car certains logiciels open-source sont soumis à des licences qui ne garantissent pas l'ensemble des libertés nécessaire pour qu'un logiciel soit dit « libre ».

Le logiciel libre et l'argent

Si l'on devait résumer l'état d'esprit de l'immense majorité des licences libres en quelques mots, on dirait alors ces dernières laissent les utilisateurs faire à peu près ce qu'ils veulent avec le logiciel, sans contrepartie financière, mais également sans aucune garantie de bon fonctionnement. Ce modèle libre a énormément d'avantages, notamment la liberté de fork.

S'il est vrai que le modèle libre induit généralement une gratuité, ce n'est pas absolu. Ainsi, il est possible de créer des activités commerciales se basant sur le logiciel libre (que l'on développe soi-même ou que d'autres développent), notamment en proposant, contre rémunération, des prestations de support technique ou différentes garanties de bon fonctionnement qui sont exclues du champ de la licence.

Ceci dit, énormément d'entreprises, parfois de grosses multinationales, voient bien souvent les logiciels libres uniquement comme un outil gratuit leur permettant de faire des économies. Ces entreprises se reposent ainsi en partie sur le travail de bénévoles pour se faire de l'argent. Certaines décident donc de contribuer au logiciel libre en effectuant des dons financiers ou bien en demandant à leurs salariés d'améliorer les logiciels, toujours sous une licence libre. Malheureusement, ces cas de contribution sont trop rares et concernent un nombre assez restreint de logiciels « star », laissant de côté les logiciels et composants logiciels qui ne sont pas sous les feux de la rampe.

Et lorsque, faute de développeurs correctement financés, un logiciel ou composant logiciel très largement utilisé présente un défaut de sécurité, les dents commencent à grincer. Cela a notamment été le cas en 2014 avec la CVE-2014-0160 dite « heartbleed » puis, en 2021 avec la CVE-2021-44228 dite « Log4Shell ». Dans les deux cas l'histoire a été identique : tous les regards se sont fixés sur les développeurs bénévoles qui maintiennent ces composants logiciel sur leur temps libre. Ces gens, qui n'ont pas ou peu reçu de financement, se sont retrouvés sous une pression provenant de toute la surface du globe.

Peut-on blâmer les entreprises qui utilisent des logiciels libres sans contribuer en retour, d'une manière ou d'une autre ? Un bon nombre de développeurs de logiciels libres se sentent ainsi floués, leur travail bénévole étant utilisé par d'autres pour se faire de l'argent.

Si l'on peut comprendre la déception de ces développeurs, il est cependant nécessaire de rappeler que ce sont eux qui ont choisi la licence sous laquelle leur code source est publié. Les entreprises visées n'ont, jusqu'à preuve du contraire, fait que respecter les termes du contrat à leur avantage. Du coup, qu'est-ce qui est le plus immoral ? Utiliser gratuitement et légalement un logiciel afin de s'enrichir sans partager, ou bien pousser des cris d'orfraie parce que l'on a pas obtenu quelque chose qui n'était pas stipulé dans le contrat ?

Le dérapage

C'est dans ce contexte de tensions qu'un développeur sous le pseudo de Marak a assez violemment dérapé. Auteur de nombreux composants logiciels dont les populaires faker.js et colors.js réalisant respectivement 2,4 et 22,4 millions de téléchargements hebdomadaires, il a décidé de prendre des mesures pour le moins radicales.

Pour faker.js, le projet semble avoir été tout simplement arrêté, le code dépublié. Sur cette action, Marak semble être dans son bon droit, c'est un choix personnel qui lui revient. Les personnes disposant d'une copie de faker.js avant la suppression peuvent, grâce à la licence libre, continuer à l'utiliser mais également la diffuser, l'améliorer et diffuser la version modifiée. C'est une des propriétés du logiciel libre : dès qu'un tel logiciel devient un peu populaire, il est presque impossible, même pour son auteur, de le tuer.

faker.js on npm

En revanche, pour colors.js, la réaction a été toute autre puisque le projet a été transformé en arme. En effet, plutôt que de supprimer le projet, l'auteur a décidé de publier une nouvelle version qui intègre une boucle infinie, ce qui casse donc l'ensemble des projets qui utilisaient ce composant logiciel et force les machines à « tourner dans le vide ».

colors.js endless loop

Le caractère manifestement hostile de cette modification n'aura pas échappé aux plateformes qui hébergent ce projet. Ainsi npm a purement et simplement supprimé cette nouvelle version tandis que GitHub a banni le compte de l'auteur. Cette réaction aura permis de limiter la propagation de la version vérolée, protégeant ainsi un grand nombre de projet l'utilisant.

GitHub ban

Précisons que, à l'heure où ces lignes sont écrites, contrairement à ce qui a été dit dans le tweet ci-dessus, npm a supprimé la version vérolée de colors.js mais n'a pas touché à la version « vide » de faker.js.

Je ne me pencherai ici que de la législation française qui est la seule que je connaisse.

Tout d'abord, l'auteur habitant visiblement aux États-Unis, la législation française est-elle applicable ? Cette question est tranchée par les articles 113-1 à 113-14 du code pénal, et plus particulièrement l'article 113-7 qui dispose que « la loi pénale française est applicable à tout crime, ainsi qu'à tout délit puni d'emprisonnement, commis par un Français ou par un étranger hors du territoire de la République lorsque la victime est de nationalité française au moment de l'infraction ». En conséquent, si une personne de nationalité française a subit un préjudice, elle est en mesure de saisir la justice française pour obtenir réparation.

Mais reste encore à caractériser un crime ou un délit passible d'emprisonnement. Encore une fois, la question est rapidement tranchée par le code pénal dont les articles 323-1 à 323-8 traitent des atteintes aux systèmes de traitement automatisé de données. En l'occurrence, c'est l'article 323-2 qui nous intéresse puisqu'il dispose que « le fait d'entraver ou de fausser le fonctionnement d'un système de traitement automatisé de données est puni de cinq ans d'emprisonnement et de 150 000 € d'amende ». Insérer une boucle infinie dans le code source permet une telle entrave des systèmes, le crime est donc caractérisé.

Mais qu'en est-il des bugs logiciels qui, involontairement, contiennent des boucles infinies ? Peut-on poursuivre les développeurs ? Et bien non, car l'article 121-3 du code pénal dispose notamment qu'« il n'y a point de crime ou de délit sans intention de le commettre ». Un bug logiciel étant involontaire, il n'y a pas de possibilité de poursuite pénale. En revanche, l'insertion volontaire de la boucle infinie par l'auteur de colors.js est bel et bien un crime passible d'emprisonnement.

Enfin, colors.js étant sous la licence MIT, on peut se demander si la clause d'exclusion de garanties est suffisante ou non pour écarter les poursuites pénales. Cela n'est clairement pas le cas, la responsabilité pénale étant à différencier de la responsabilité contractuelle. En fait, la ou les clauses élusives de responsabilité des licences libres sont surtout là pour éviter, dans une certaine mesure, les poursuites sur le fondement de la garantie des vices cachés (articles 1641 à 1649 du code civil) et de la responsabilité du fait des produits défectueux (articles 1245 à 1245-17 du code civil).

En conclusion

S'il y a bel et bien de graves problèmes dans l'économie du logiciel libre, ce n'est pas une raison pour commettre un crime pénalement répréhensible. Si vous ne souhaitez pas que certaines personnes ou entreprises utilisent vos logiciels, ne leur en donnez juste pas le droit. C'est par exemple ce qu'a fait MongoDB qui est passé d'une licence libre à une licence privative, la SSPL.

Pour ma part, je préfère rester fidèle aux principes du logiciel libre, même si ce ne sera sans doute jamais parfait.