Payload Logo

Comment un programmeur a cassé Internet en supprimant un petit morceau de code

Un homme dans le développement web dans le monde en supprimant 11 lignes de code

Cet article date de 2016.

Dernières nouvelles: Une panne technologique mondiale massive immobilise les vols, perturbe les banques et bien plus encore. Voici ce qu’il faut savoir

Un homme d’Oakland, en Californie, a perturbé le développement du Web dans le monde entier la semaine dernière en supprimant 11 lignes de code.


L’histoire de la manière dont Azer Koçulu, 28 ans, a brièvement brisé Internet montre comment l’écriture de logiciels pour le Web est devenue dépendante d’un patchwork de code qui lui-même repose sur la bienveillance de collègues programmeurs. Lorsque ce système tombe en panne, comme ce fut le cas la semaine dernière, les conséquences peut être vaste et imprévisible.

«Je pense que j’ai le droit de supprimer toutes mes données», a écrit Koçulu le 20 mars dans un e-mail rendu public par la suite.

Et puis il l’a fait.

Le credo de l’open source

Koçulu avait publié le code à qui avait écrit npm, un service populaire largement utilisé pour rechercher et installer des logiciels open source écrits en JavaScript. Il est devenu un outil essentiel du Web. développement, invoqué des milliards de fois par mois, grâce à la facilité d’utilisation de npm et à son énorme bibliothèque de packages de code gratuits fournie par le communauté open source.

La philosophie de l’open source est ce qui a publié Koçulu à contribuer à npm en premier lieu, et pour quoi il a finalement abandonné le service. Comme beaucoup de personnes dans la vaste communauté des personnes qui écrivent du code que tout le monde peut utiliser, il est influencé par « l’éthique du hacker » des premiers programmeurs du Massachusetts Institute of Technology et un ensemble de valeurs plus concrètes qui ont ensuite été mises en avant par le programmeur Richard Stallman.

“L’acte fondamental d’amitié entre les programmeurs est le partage de programmes”, a écrit Stallman dans son manifeste de 1985. Il a dénoncé « la commercialisation des logiciels système », et a présenté des moyens de rendre le code plus communautaire et largement utile. Beaucoup d’entre eux Les idées de Stallman, ainsi que l’héritage de l’éthique des hackers, continuent d’influencer les programmeurs comme Koçulu.

«Je suis un diplômé du secondaire autodidacte qui apprend tout grâce à la communauté open source», Koçulu, qui a été né en Turquie, a écrit dans un e-mail à Quartz. «Je dois tout que je ai aux gens qui n ont jamais abandonné la philosophie open source.”

Tout a commencé par un e-mail

L’un des paquets JavaScript open source que Koçulu avait écrit était kik, qui aidait les programmeurs à établir des modèles pour leurs projets. Il n’était pas trèsconnu, mais il partageait un nom avec Kik, l’application de messagerie basée en Ontario, Canada. Le 11 mars , Koçulu a reçu un e-mail de BobStratton, un agent de brevets et de marques qui effectue des travail s à traiter pour Kik.

Stratton a déclaré que Kik se préparait à publier son propre paquet et a demandé à Koçulu s’il pouvait le renommer. votre kik paquet ? Stratton a écrit.

“Désolé, je suis en train de construire un projet open source portant ce nom”, a répondu Koçulu.

La conversation s’est rapidement intensifiée, avec Stratton menaçant de poursuites judiciaires : “Nous ne voulons pas être des connards à ce sujet, mais c’est un marque dans la plupart des pays du monde et si vous lancez un projet open source appelé kik, nos avocats en marques de marques vont frapper à votre porte et fermer vos comptes et des choses de ce genre - et nous aurions pas d’autre choix que de faire tout cela parce que vous devez faire respecter les marques ou vous les perdez.

“Hahah, en fait, tu es un connard”, a répondu Koçulu. “Alors, va te faire foutre. Ne me réponds pas d’e-mail.”

Stratton a proposé de payer pour le nom, et Koçulu a suggéré de 30 000 $ « pour les ennuis d’abandonner mon projet animal pour un tas de des connards d’entreprise. » Il était clair que les deux hommes n’allaient pas parvenir à un accord.

npm aux côtés de Kik

La société appelée npm est basé, comme Koçulu, à Oakland. Bien qu’il s’agisse d’une entreprise à but lucratif, npm gère son registre éponyme de logiciels open source gratuitement et a pour mission de favoriser le développement JavaScript open source. La société génère des revenus à partir de services privés pour du code qui n’est pas open source, un modèle économique similaire à celui de GitHub.

Stratton a soumis la demande de nom de Kik à npm, citant à nouveau la marque déposée de l’entreprise et la confusion potentielle. Isaac Schlueter, le directeur général de npm, a accepté de céder le nom à l’entreprise.

« Dans ce cas, nous pensons que la plupart des utilisateurs qui rencontreraient un kik paquet, s’attendrait raisonnablement à ce qu’il soit lié à kik.com», Schlueter a écrit à Stratton et Koçulu le 18 mars. « Dans ce contexte, le transfert de propriété de ces deux noms de packages atteint cet objectif. »

“Je vous connais depuis des années”, a répondu Koçulu, “et je n’imaginerais jamais que vous vous rangiez du côté des avocats en brevets d’entreprise menaçant les contributeurs open source.”

De nombreux programmeurs, en particulier dans la communauté open source, sont critiques à l’égard du droit de la propriété intellectuelle aux États-Unis et des lois sur les brevets et les marques. titulaires qui cherchent à l’appliquer. Depuis des années, les éditeurs de logiciels ont été bombardés de poursuites judiciaires concernant des brevets qui couvrent des technologies omniprésentes, comme l’affichage d’images. sur des pages Web ou en envoyant des actualités par courrier électronique. Les développeurs de logiciels ont tendance à considérer ces poursuites comme un obstacle à l’innovation et à l’extorsion limite.

À Koçulu, la décision de npm de transférer la propriété du kik Le colis envoyé à Kik va à l’encontre des valeurs de la communauté qu’il sert. Dans sa réponse, Koçulu a déclaré qu’il voulait tous les colis. il s’était inscrit sur NPM et avait été retiré. « Je ne veux plus faire partie de NPM, a-t-il écrit. Ne le fais pas, fais-moi savoir comment le faire rapidement.

Briser Internet

Deux jours après le dernier e-mail de Koçulu à npm, le 22 mars , des programmeurs JavaScript du monde ont commencé à recevoir un étrange message d’erreur lorsqu’ils essayé d’exécuter leur code. Le problème était suffisamment grave pour empêcher certains développeurs de mettre à jour les applications et les services qui fonctionnaient déjà sur le serveur. web. L’erreur a craché de nombreuses lignes, mais une s’est démarquée :

Cela signifiait que le code qu’ils essayaient d’exécuter nécessitait un package appelé pavé gauche, mais le registre npm ne l’avait pas.

La plupart des programmeurs n’avaient jamais entendu parler de pavé gauche, mais maintenant, d’une manière d’une manière d’une autre leur code ne pourrait pas fonctionner sans elle. Pour comprendre comment ce pourrait arriver, il est important de comprendre que presque tous les logiciels sont construits sur d’autres logiciels, qui dépendent également d’autres logiciels. Le chargement de votre propre application peut nécessiter un certain ensemble de de paquets de npm, mais ces paquets peuvent nécessiter leurs propres ensembles de paquets, et ainsi de suite. C’est une des raisons pour lesquelles npm est devenu ainsi populaire, aidant à gérer ces dépendances en conservant tous les packages dans un seul endroit fiable.

Fiable, du moins jusqu’à ce que l’un des paquets disparaisse.

En début de soirée, les développeurs ont commencé à se rassembler au Dépôt GitHubpavé gauche a été maintenu. La plupart étaient confus parce que les paquets ne disparaissent généralement pas. Celui-ci était particulièrement déroutant car il ne s’agissait que de 11 lignes simples. code. Voici pavé gauche dans son intégralité:

Ce code peut être utilisé pour ajouter des caractères au début d’une chaîne de texte, peut-être un zéro au début d’un zip. code. Il s’agit d’une fonction à usage unique, suffisamment simple pour que la plupart des programmeurs puissent l’écrire eux-mêmes. De nombreux packages npm, cependant, s’appuyaient sur pavé gauche pour le faire pour eux, c’est ainsi que ce petit morceau de code est devenu si important.

Certains des packages npm les plus volumineux et les plus utilisés ont été soudainement brisés. L’un des packages concernés, Réagir, est utilisé par les principaux sites Web comme Facebook, qui l’a créé, et une grande variété de sites plus petits comme celui de Quartz Atlas. Au cours du mois dernier, plus d’un million de personnes ont téléchargé Réagir de npm. React ne nécessitait pas ces 11 lignes de code directement, bien sûr. Cela dépend d’un ensemble de paquets, et chacun parmi ceux-ci dépendaient d’un autre ensemble, et cetera, et l’une de ces branches a finalement conduit à pavé gauche. Et maintenant, pavé gauche était parti.

Son absence a été ressentie à l’échelle mondiale ; les commentateurs de le pavé gauche La page GitHub écrivait depuis l’Australie, l’Allemagne, les États-Unis et la République tchèque. En Ontario, où le problème était originaire de par son détour, les programmeurs de Kik se heurtaient ironiquement à pavé gauche des problèmes également. Mike Roberts, qui gère l’application de messagerie de l’entreprise, a déclaré dans une interview que l’erreur a empêché ses collègues de lancer logiciel sur lequel ils travaillaient.

‘Annuler la publication’

Une heure après que le problème ait été remarqué pour la première fois, Koçulu a fait surface avec un article sur Medium intitulé : «Je viens de libérer mes modules. » Il a brièvement expliqué le différend avec Kik et npm, et a déclaré qu’il avait supprimé ses paquets de npm en signe de protestation – les 273 eux. L’un d’entre eux, à peine le plus populaire ni même le plus important, même pour Koçulu, était pavé gauche.

« Cette situation m’a fait réaliser que le NPM est le domaine privé de quelqu’un où l’entreprise est plus puissante que le peuple, et je fais de l’open source. parce que, le pouvoir au peuple”, a écrit Koçulu.

Face à une crise, avec l’effondrement de nombreux logiciels importants, npm a décidé de restaurer les 11 lignes de code. une mesure sans précédent que nous prenons compte tenu de la gravité et de la nature généralisée des bris, et qui n’est pas prise à la légère », a écritLaurieVoss, le directeur de la technologie de npm. Il a ajouté, « Cette action met les intérêts plus larges de la communauté des utilisateurs de npm en opposition avec les souhaits d’un auteur ; nous avons choisi le besoins du plus grand nombre. »

Grâce à cela, le problème a été résolu, environ deux heures après son apparition.

Un réseau de dépendances

Cela pavé gauche a été capable de faire de tels ravages, même pendant une brève période, témoigne de la manière dont les logiciels modernes sont développés. une importance démesurée, comme Facebook, peut en venir à dépendre de lignes obscures de code écrites par d’autres programmeurs. Peu de temps après que l’épreuve ait été résolue. , un post incrédule s’est monté en sommet de la section de Reddit pour les programmeurs : « Un paquet npm de 11 lignes appelé left-pad avec seulement 10 étoiles sur github a été non publié… il a cassé certains des paquets les plus importants sur l’ensemble de npm.

Certains programmeurs ont blâmé Kik pour avoir menacé de poursuites judiciaires contre un projet open source, ou npm, affirmant que la panne était un signe que le service L’infrastructure est trop fragile. Beaucoup ont également remis en question le choix du NPM d’accéder à la demande de Kik. ont été résolus », a écrit un commentateur, sans que NPM ne fasse glisser le module de quelqu’un sous lui ? Ou même sans aucune discussion publique ? cela signifie-t-il que le NPM cédera à toute menace juridique ?

Lorsqu’on lui a demandé lors d’un entretien téléphonique avec Quartz ce qu’il ferait si Twitter ou Google demandait les droits sur les packages npm actuellement enregistrés sous ces noms, Schlueter a déclaré que cela dépendrait des colis eux-mêmes. examiner comment Twitter voudrait utiliser le module appelé Twitter ou comment le développeur actuel l’utilise, et à quel point il est bien établi, et combien de personnes en dépendent, et d’innombrables autres facteurs.

D’autres dans le fil de discussion Reddit et ailleurs ont déploré le fait qu’un package npm de 11 lignes existait, suggérant que les programmeurs devraient pouvoir pour écrire ces 11 lignes de code elles-mêmes. Les blagues sur ce sujet ont rapidement proliféré sur Internet. Quelqu’un a créé leftpad.io, se moquant de la dépendance massive à l’égard d’un si simple morceau de code. (« Afin d’empêcher qu’une si terrible tragédie ne se produise encore une fois au cours de notre vie, « left-pad.io » a été créé pour fournir toutes les fonctionnalités de « left-pad ».)

MikeRoberts, de Kik, a déclaré dans une interview qu’il regrettait de ne pas avoir contacté Koçulu lui-même en premier lieu. perspective », a-t-il dit, « l’open source, la communauté, est de s’entraider.”

📬 Inscrivez-vous au briefing quotidien

Notre briefing gratuit, rapide et amusant sur l'économie mondiale, diffusé chaque matin en semaine.