JavaScript-Paket aus NPM entfernt: Node, Babel und Co. scheiterten beim Build

Weil ein Contributor gut 270 Module aus dem Paketmanager NPM zurückgezogen hat, scheiterten zahlreiche Builds, die ein Modul mit gerade einmal neun Codezeilen verwendeten. Zu den betroffenen Projekten gehören Node.js und Babel.

In Pocket speichern vorlesen Druckansicht 188 Kommentare lesen
JavaScript-Paket aus NPM entfernt: Node, Babel und Co. scheiterten beim Build
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Der Programmierer Azer Koçulu hat vor einigen Stunden einen Blog-Beitrag gepostet, in dem er begründet, warum er zahlreiche Module vom JavaScript-Paketmanager NPM zurückzieht – oder in seinen Worten befreit. Offensichtlich erhielt er eine Abmahnung eines Anwalts, der die internationalen Markenrechte auf "kik" einklagte. Dabei dürfte es sich nicht um den deutschen Textildiscounter handeln, sondern eher um den internationalen Instant Messenger. Nachdem sich Koçulu weigerte, das Modul zu entfernen, kontaktierte der Anwalt die Betreiber von NPM. Laut der Aussage des Programmierers änderte der Paketmanagerdienst darauf die Eigentumsrechte an dem Modul, ohne ihn zu fragen.

Als Reaktion darauf zog er alle seine Module von NPM zurück. Das Vorgehen habe ihm die Augen geöffnet, dass NPM "jemandes privates Land sei, in dem das Unternehmen mehr zähle als die Menschen, aber ich mache Open Source, denn: Power to the People".

Den größten Schaden der gut 270 Module zählenden Liste entstand wohl durch folgendes mit gerade einmal neun – mit schließenden Klammern elf – Zeilen Code namens left-pad:

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;
}

Der JavaScript-Code füllt Strings auf der linken Seite um Leerzeichen oder Nullen bis zur gewünschten Breite auf. Der Aufruf von leftpad('foo', 4) ergibt somit den String " foo", der von leftpad(123,5,0) gibt "00123" zurück. Es ist eine kleine,nützliche Hilfsfunktion, die entsprechend viele Projekte verwenden. Zu den prominenten Vertretern gehören auch Node.js und Babel. Nach dem Rückzug der Pakete scheiterten sie daher in Folge beim Build-Prozess.

Es gibt auch bereits Diskussionen darüber, ob es sinnvoll ist, dass Programmierer ihren Code einfach von NPM zurückziehen können. Auch gibt es Rufe nach Versionierung, damit sich Projekte auf eine bestimmte, kompatible Version verlassen können. Gleichzeitig belegt der Vorgang, wie wackelig manche Projekte durch die Abhängigkeiten sein können. Betroffen ist freilich lediglich der Build-Prozess, nicht der laufende Betrieb der Projekte.

[Update 23.3. 14:00]

Ein aufmerksamer Leser wies uns zurecht darauf hin, dass der Code den String mit dem übergebenen Charakter auffüllt. Das Leerzeichen ist lediglich der Default beim Auslassen des Werts. Zudem befindet sich oben ein angepasstes Anwendungsbeispiel, weil beim Veröffentlichen des Texts das doppelte Leerzeichen in " foo" zu einem einzelnen wurde. (rme)