URL: https://linuxfr.org/users/nono/journaux/comment-11-lignes-de-code-ont-provoque-un-npmgate Title: Comment 11 lignes de code ont provoqué un #npmgate Authors: Bruno Michel Date: 2016年03月23日T10:24:33+01:00 License: CC By-SA Tags: js, npm et js-fatigue Score: 48 Il était une fois 11 lignes de code qui vivait dans un module npm appelé left-pad : ```js module.exports = leftpad; function leftpad (str, len, ch) { str = String(str); var i = -1; if (!ch && ch !== 0) ch = ' '; len = len - str.length; while (++i < len) { str = ch + str; } return str; } ``` Ce module a été écrit par Azer Koçulu et est utilisé indirectement par des projets connus comme ember, babel et react-native. Il se trouve que l'auteur a également écrit d'autres modules pour npm dont l'un, kik, lui a valu des ennuis avec une société du même nom. Kik.com a d'abord demandé à ce que le module soit renommé et, suite au refus de l'auteur, s'est tourné vers npm.com pour faire retirer le module de npm (violation de copyright). Npm a donné raison à kik.com et Azer Koçulu s'est fâché tout rouge. Pour lui, npm est un terrain privé sur lequel les entreprises ont plus de pouvoir que les humains et ça va à l'encontre de sa vision de l'open-source (_Power To The People_). Du coup, il a décidé de dépublier tous les paquets npm à son nom. Et ce fût le drame. La dépublication du module left-pad a entraîné l'échec du build de nombreux projets open-source. Un mainteneur a repris le module et a publié une nouvelle version sur npm. Mais cela n'a pas suffit à corriger le build de beaucoup de projets qui dépendaient d'une version spécifique de left-pad. Du coup, le nouveau mainteneur a demandé à npm de republié la version dépublié, ce qui a été fait même si les avis au sein de l'organisation npm sont partagés. Le CTO de npm le dit lui-même : cette action est dans une zone grise d'un point de vue légal. Rien dans les TOS de npm ne parlent de ce cas de figure (la republication d'un module npm). On peut lire ici les explications d'Azer Koçulu : [I’ve Just Liberated My Modules](https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c), et là les tweets du CTO de npm : https://twitter.com/seldo/status/712414400808755200. Plus largement, on peut se poser la question de la fiabilité des projets JavaScript qui dépendent de centaines de modules npm. Vu le nombre de modules, il faut s'attendre à des problèmes et donc prévoir des solutions. Comment gérer un module dépublié ? Et si un module venait à avoir une faille de sécurité ? Certains proposent de [redécouvrir le linkage statique](https://medium.com/@Rich_Harris/how-to-not-break-the-internet-with-this-one-weird-trick-e3e2d57fee28), d'autres mettent en avant [leur outil de packaging](https://twitter.com/rtfeldman/status/712472475116965889), pourtant beaucoup plus jeune mais déjà mieux pensé. Et pour conclure, voici [le tweet de Brad Fitzpatrick](https://twitter.com/bradfitz/status/712554409641816064) :> lol npm

AltStyle によって変換されたページ (->オリジナル) /