Dependancies und ihre Tücken

1 Entwickler, 11 JavaScript-Zeilen, tausende defekte Anwendungen

Melanie Feldmann

© Shutterstock / Skylines

Der gestrige Dienstag war kein schöner Tag für viele Entwickler. JavaScript-Anwendungen brachen zusammen. Warum? Ein Entwickler hatte alle seine Module aus dem Open-Source-Projekt NPM zurückgezogen, ein für JavaScript-Projekte populärer Package Manager.

Eine der damit verschwundenen Dependencies war left-pad. Es füllt die linke Seite von Strings mit Nullen oder Leerzeichen. Rund 2,5 Millionen Mal ist das Modul bisher insgesamt heruntergeladen worden. Tausende Projekte, inklusive Node und Babel, verließen sich darauf. Ohne left-pad konnten diese Applikationen und Teile der Open-Source-Infrastruktur die Dependency nicht herstellen und brachen zusammen.

Was war passiert?

Wie der Entwickler Azer Koçulu in einem Blogpost erklärt, begann alles damit, dass ein Anwalt ihn in einer E-Mail dazu aufforderte ein anderes seiner Module namens „kik“ umzubenennen, da eine Firma den Namen bereits als registrierte Marke verwende. Er sagte „Nein“. Daraufhin wandte sich der Anwalt direkt an die Firma NPM, die hinter dem Package Manager steht. Diese entzogen Koçulu das Modul ohne mit ihm darüber zu sprechen. Der Entwickler empfand dies als Bruch des Open-Source-Gedankens: „This situation made me realize that NPM is someone’s private land where corporate is more powerful than the people, and I do open source because, Power To The People.“ Er zog alle seine Module aus NPM zurück.

Der zweite Akt: Un-un-Publishing

Als Anwendungen anfingen zusammenzubrechen suchte NPM nach Möglichkeiten die Schäden zu minimieren und fassten den Entschluss, das Modul wieder zu veröffentlichen. Laurie Voss, einer der Gründer von NPM verkündete den Schritt auf Twitter.

Das führte, wie man sich denken kann, zu gemischten Reaktionen. Die einen waren glücklich, dass ihre Dependencies wieder funktionieren, die anderen zweifelten an, dass NPM überhaupt das – moralische und legale – Recht hat, ein Modul wieder zu veröffentlichen, dass der Besitzer zurückgezogen hat. NPM ist dies auch durchaus bewusst, verteidigt seine Entscheidung jedoch.

Das Modul hat jetzt einen neuen Besitzer, was Koçulu in seinem Blogpopst auch als Lösung anbot. Rein technisch hat dieser das Modul wieder veröffentlich. Eigentlich dürfte er jedoch keine Version veröffentlichen, die entstanden ist bevor er Besitzer wurde. Hier hat NPM scheinbar eine Ausnahme gemacht. Der Package Manager NPM steht unter einer Artistic License 2.0. Das Modul unter WTFPL.

Dieser Vorfall tritt die Frage los, ob es gut und richtig ist, dass einzelne Entwickler ihren Code einfach zurückziehen können. Und wenn ja, wie man damit umgeht, wenn dieses Stück so wichtig ist, dass Anwendungen ohne es schlicht zusammenbrechen. NPM will seine Policy für solche Fälle anpassen. In diesem konkreten Fall könnte man ganz pragmatisch auf eine Dependency verzichten. Immerhin besteht das Modul nur aus elf Zeilen Code. Diese direkt einzubauen anstatt sie extern aufzurufen, ist also durchaus machbar. Die Frage nach der Verlässlichkeit bleibt aber bei komplexeren Codes bestehen.

Aufmacherbild: The tower from wodden blocks von Shutterstock / Urheberrecht: Skylines

Verwandte Themen:

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: