Tout développeur sait que le moindre changement dans une ligne de code peut mettre à mal l’ensemble d’un programme. Alors quand un développeur a retiré d’un seul coup 250 modules du gestionnaire de paquet NPM — incontournable chez les développeurs JavaScript, des centaines de projets ont été impactés.
Le développeur Azer Koçulu, fervent défenseur de l’open source, s’est retrouvé dans une position délicate après avoir publié un module nommé Kik. Ce nom vous rappelle peut-être quelque chose qui n’a absolument rien à voir avec les quelques lignes de codes créées par Azer. Car Kik, c’est aussi le nom d’une messagerie instantanée disponible sur de nombreuses plateformes.
Or, l’éditeur de l’application de messagerie n’a pas apprécié de voir qu’un inconnu utilisait leur marque, et les avocats de Kik ont exigé d’Azer Koçulu qu’il change le nom de son module.
Les entreprises ont plus de pouvoir que les gens, et je fais de l’open source parce que je crois que le pouvoir revient au peuple
Mais comme il l’explique dans un billet publié sur Medium, Azer n’a pas souhaité obéir, et les juristes de Kik se sont donc tournés directement vers NPM pour obtenir le retrait du module, en vertu des lois sur la protection des droits de propriété intellectuelle. En conséquence, le CEO de NPM Isaac Schlueter a retiré la propriété du module au développeur.
Furieux, Azer a alors supprimé sans sommation l’ensemble de ses 250 modules du gestionnaire de paquets, par principe. « Cette situation m’a fait réaliser que NPM est une chasse gardée, où les entreprises ont plus de pouvoir que les gens, et je fais de l’open source parce que je crois que le pouvoir revient au peuple », écrit-il.
Mais voilà. Parmi les 250 projets qu’il gérait, résidait un petit module de seulement 11 lignes de code, Left-pad. Or ce tout petit bout de code est requis par de nombreux paquets très populaires, dont React, Babel et Node. Rien que sur le mois de février 2016, left-pad a été téléchargé plus de 2,4 millions de fois !
A titre d’exemple, Babel est un des paquets les plus populaires de NPM. Il a été développé par Sebastian McKenzie pour permettre au code écrit en ES6 (la dernière version de JavaScript) d’être converti en ES5, pour être compatible avec les navigateurs actuels. Babel est donc extrêmement populaire, et est utilisé par exemple par Facebook, Netflix, ou encore Spotify. Rien que le mois dernier, Babel a été installé plus de 749 195 fois. Comme Babel utilise left-pad en tant que dépendance, l’installation « dépend » du paquet de Koçulu. Si celui-ci n’est pas disponible, Babel ne peut pas être installé.
En conséquence, d’après Laurie Voss, le directeur technique de NPM, des centaines d’installations de paquets d’applications diverses échouaient chaque seconde.
Dans son billet, Azer encourageait les développeurs à utiliser la dépendance via son dépôt GitHub et allait jusqu’à proposer de transférer la propriété du module. C’est d’ailleurs ce qu’il s’est passé puisque Voss a pris la décision exceptionnelle de « dé-dé-publier » left-pad (de le remettre en ligne, ndlr), à la demande de Cameron Westland, son nouveau propriétaire. Si votre code ne marche toujours pas, Voss vous conseille d’effectuer un « npm cache clear » pour que tout rentre dans l’ordre.
Des pratiques à revoir chez les développeurs
Ce précédent amène de nombreuses interrogations. De l’aveu même du CTO de NPM, restaurer le module tient de la « zone grise » en matière de droit, même si cela est fait dans l’intérêt de la communauté et suite à un accord entre Azer et Cameron. On imagine toutefois que la décision a dû être prise rapidement pour restaurer la paix sur l’Internet.
L’autre problème soulevé par la suppression de left-pad concerne les habitudes de développeurs, qui s’appuient sur des dépendances de quelques lignes (des « one liners » dans le jargon) au lieu de les écrire eux-mêmes. Il existe ainsi des dépendances d’une seule ligne de code qui ne demandent en soi qu’à reproduire ce même scénario.
Enfin, cette affaire nous fait réfléchir aux proportions et les relations de causes à effet que peuvent prendre de simples affaires de droit d’auteur. Si par la suite, le CEO de Kik a indiqué qu’un meilleur choix de mot aurait pu être fait par l’avocat, pas sûr qu’une « demande polie » aurait suffi à faire changer d’avis le développeur. Azer a dit qu’il ignorait l’existence de l’application. Il utilisait « Kik » comme abréviation pour « kick-start » que l’on pourrait tenter de traduire par l’idée de « démarrer quelque chose avec énergie ».
+ rapide, + pratique, + exclusif
Zéro publicité, fonctions avancées de lecture, articles résumés par l'I.A, contenus exclusifs et plus encore.
Découvrez les nombreux avantages de Numerama+.
Vous avez lu 0 articles sur Numerama ce mois-ci
Tout le monde n'a pas les moyens de payer pour l'information.
C'est pourquoi nous maintenons notre journalisme ouvert à tous.
Mais si vous le pouvez,
voici trois bonnes raisons de soutenir notre travail :
- 1 Numerama+ contribue à offrir une expérience gratuite à tous les lecteurs de Numerama.
- 2 Vous profiterez d'une lecture sans publicité, de nombreuses fonctions avancées de lecture et des contenus exclusifs.
- 3 Aider Numerama dans sa mission : comprendre le présent pour anticiper l'avenir.
Si vous croyez en un web gratuit et à une information de qualité accessible au plus grand nombre, rejoignez Numerama+.
Vous voulez tout savoir sur la mobilité de demain, des voitures électriques aux VAE ? Abonnez-vous dès maintenant à notre newsletter Watt Else !