JavaScript: npm ändert Unpublish Policy für Pakete

Als Reaktion auf die Folgen, die das Entfernen einiger Pakete aus der npm-Registry auf das Node.js-Ökosystem hatte, hat das Unternehmen hinter der Paketverwaltung nun seine Regelung zum Zurückziehen von Paketen überarbeitet.

In Pocket speichern vorlesen Druckansicht 45 Kommentare lesen
JavaScript: npm ändert Unpublish Policy
Lesezeit: 3 Min.
Von
  • Julia Schmidt

Seit ein Entwickler Mitte März 2016 seine Pakete aus npm entfernte und so bei einer Reihe von ihnen abhängigen Projekten für Komplikationen sorgte, muss sich das Unternehmen verstärkt der Kritik an seinen Regelungen und Vorgehensweisen stellen. Eine erste Konsequenz zieht es daher mit der Überarbeitung seiner Unpublish Policy. npm verstehe seine Aufgabe unter anderem darin, die Node.js-Gemeinschaft bei der erfolgreichen Umsetzung von Projekten zu unterstützen, bei der es in dem Fall versagt habe.

Zwar komme immer wieder die Frage auf, warum das Zurückziehen von Paketen überhaupt möglich sein muss, die Option zu entfernen stünde aber nicht zur Debatte. So müsse es etwa möglich sein, versehentlich veröffentlichte Pakete oder solche mit Sicherheitslücken zurückzunehmen.

Um dem gerecht zu werden, sind die Regeln so geändert, dass Nutzer ein Release innerhalb von 24 Stunden zurückziehen können. Das Paket wird dann gelöscht und es darf kein neues Paket mit identischem Namen und Versionsnummer veröffentlicht werden.

Sollte ein Entwickler ein Paket, das älter als 24 Stunden ist zurückziehen wollen, schlägt der Unpublish-Vorgang mit dem Verweis, den Support zu kontaktieren, fehl. Setzt er sich mit ihm in Verbindung, prüft das Team, ob durch das Entfernen andere Projekte in Mitleidenschaft gezogen werden. Ist das der Fall, muss der Eigentümer entweder die der abhängigen Pakete bitten, die Abhängigkeiten zu entfernen oder die Eigentumsrechte am Paket an einen passenden Freiwilligen abtreten.

Sollten alle Versionen eines Pakets entfernt werden, baut npm zu Sicherheit Platzhalterpakete für sie ein. So soll verhindert werden, dass der Name für unsichere oder schädliche Pakete missbraucht wird – sollte es jemand geben, der einen legitimen Nachfolger anbieten will, muss er sich ebenfalls an den Support wenden.

Zukünftig könne es sein, dass npm die Regelung derart erweitere, dass Metriken wie die Download-Aktivitäten in den Entscheidungsprozess einbezogen würden. Man sei sich bewusst, dass Entwickler sich als Eigentümer ihrer Pakete sähen, allerdings sei es npms Aufgabe, die Produktivität der Community zu sichern, was ab und zu heiße, zwischen dem individuellem Besitz und dem Nutzen für die Gemeinschaft abzuwägen.

Damit die Eigentumsrechte trotzdem klar sind, hat npm seine Nutzungsbedingungen noch einmal überarbeitet, um sie besser verständlich zu machen. Demnach gehören Inhalte immer ihren Urhebern. Würden Inhalte allerdings entfernt, könne es sein, dass die genutzte Lizenz beispielsweise npm dazu berechtigt, die Inhalte weiterhin zu teilen. Man wolle damit signalisieren, dass man sowohl verstünde, dass das Zurückziehen von Inhalten von Zeit zu Zeit notwendig sei, sich gleichzeitig aber auch der Verantwortung der Community gegenüber bewusst sei, der durch das Entfernen Schaden entstehen könne.

Die Bekanntmachung schließt mit der Bitte zur Zusammenarbeit, da npm auf die Mitglieder der Gemeinschaft angewiesen sei, um weitere Sonderfälle einzubeziehen und das Ökosystem weiter stabilisieren zu können. Stein des Anstoßes war ein Fall, in dem der Eigentümer einiger Pakete diese in Folge drohender Rechtsstreitigkeiten und der Konsequenzen, die npm daraus zog, aus dessen Registry entfernte. Projekte wie Node.js waren allerdings von den entfernten Paketen abhängig, sodass Builds ohne sie scheiterten. (jul)