Open-Source-Entwickler legt absichtlich dutzende Projekte mit seinen Bibliotheken lahm

Der Entwickler Marak Squires steckt hinter Open-Source-Bibliotheken, die für viele Projekte zum Einsatz kommen. Er sabotierte die Daten (faker.js und colors.js) nun jedoch absichtlich. Projekte, welche die neuesten Versionen nutzten, gerieten in die Bredouille, da es nur noch zu Loops und Fehlern kam.

Etliche von Projekten greifen auf die betroffenen Libraries zurück. Mittlerweile wurde colors.js wieder zu einer funktionierenden Version aktualisiert. faker.js ist wohl noch betroffen, es hilft aber die ältere Version 5.5.3 zu installieren, um die Querelen zu umgehen. Der Fehler trifft wohl ab 6.6.6 auf. Zu den Fehlern gehörte, dass etwa nur noch Textbotschaften wie „Liberty Liberty Liberty“ und “ What really happened with Aaron Swartz?“ ausgegeben werden. Sollte euch der Name nichts sagen: Swartz war ein Entwickler, der an der Etablierung von Creative Commons, RSS und Reddit beteiligt gewesen ist. Er stahl jedoch später Dokumente aus der akademischen Datenbank JSTOR und beging 2013 Selbstmord. Seitdem gibt es allerlei Verschwörungserzählungen um seinen Tod.

Die Probleme um faker.js und colors.js sind jedenfalls nicht zu unterschätzen: Erstere Bibliothek wird wöchentlich ca. 2,5 Mio. mal heruntergeladen. Bei letzterer sind es wöchentlich 22,4 Mio. mal. faker.js erstellt falsche Daten für Demos und color.js fügt Farben zu Javascript-Konsolen hinzu. Zwischendurch wurde der Entwickler Squires von GitHub gesperrt, könnte aber nun wieder aktiv sein.

Offenbar wollte Squires mit einer Aktion auf die Missstände in der Open-Source-Entwicklung hinweisen. Denn engagierte Entwickler veröffentlichen hier kostenlos Projekte, die dann auch von wohlhabenden Unternehmen adoptiert werden – ohne die ursprünglichen Entwickler finanziell zu würdigen. Die Reaktionen auf die mutmaßliche Protestaktion fielen gemischt aus. Einige Anwender lobten Squires mutige Maßnahme, andere kritisierten, dass er damit auch anderen Entwicklern und privaten Usern schade. Sie wenden ein, dass niemand gezwungen werde, seinen Code frei zugänglich und kostenlos zu veröffentlichen.

Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalten wir ei­ne kleine Provision. Für euch ändert sich am Preis nichts. Partnerlinks haben keinerlei Einfluss auf unsere Berichterstattung.

Gefällt dir der Artikel? Dann teile ihn mit deinen Freunden.

Avatar-Foto

Hauptberuflich hilfsbereiter Technik-, Games- und Serien-Geek. Nebenbei Doc in Medienpädagogik und Möchtegern-Schriftsteller. Hofft heimlich eines Tages als Ghostbuster sein Geld zu verdienen oder zumindest das erste Proton Pack der Welt zu testen. Mit geheimniskrämerischem Konto auch bei Facebook zu finden. PayPal-Kaffeespende an den Autor.

Neueste Beiträge

Mit dem Absenden eines Kommentars stimmst du unserer Datenschutzerklärung und der Speicherung von dir angegebener, personenbezogener Daten zu.

26 Kommentare

  1. Ich hab noch nie verstanden wie man sich blind auf irgendwelche Packet Quellen / Packet Manager verlassen kann. Das macht früher oder später immer Probleme. Deswegen immer einen lokalen Package Manager in den auch nur Versionen reinkommen die (intern) getestet wurden, wenn da irgendwas nicht passt dann fliegt die Version halt wieder raus und alles ist gut. Damit ist auch sichergestellt das man jederzeit Deployen kann auch wenn die Paketquelle aktuell nicht verfügbar ist.

    • Und zum Thema was da passiert ist. Sein Code … kann er machen was er möchte. Ich finds eher verwerflich das ihn Github gleich mal komplett aus seinem Account aussperrt.

      Bei solchen Projekten ists halt eigentlich sinnvoll die aus einem privaten Account rauszunehmen und in einen globaleren account zu überführen wo auch mehr als eine Person Owner ist. Gab ja auch schon die fälle wo jemand verschwunden/gestorben ist und es lange gedauert hat bis jemand Zugriff auf das Repo hatte.

      • Nur weil er den Code geschrieben hat, heißt das nicht, dass er auf GitHub machen kann, was er möchte.

        • Hat er auch nicht.

        • Das stimmt zwar. Was er gemacht hat ist per se nicht verboten, allerdings sollte solchen Verhalten in der README dokumentiert sein. Das hat er halt nicht gemacht. Die Aktion ist aber trotzdem Klasse. Dürfte einige dazu motivieren, mal über ihre Prozesse nachzudenken.

          • GitHub sieht das anders und es ist offensichtlich verboten, andere Projekte auf diese Art zu schädigen. Was genau findest du denn toll daran, andere zu schädigen?

            • > offensichtlich verboten, andere Projekte auf diese Art zu schädigen

              Nein, das ist es explizit nicht, wenn darauf in der README hingewiesen wird. Nur weil die neue „Funktion“ nicht dokumentiert wurde, wurde er gesperrt (zumindest gilt das für colors.js). Das wäre ja auch viel zu schwammig zu definieren und könnte als Zensur-Tool gebraucht wären. Und Repos für dual-use Software wie Metasploit könnte man dann auch vergessen. Ich find’s toll, wenn man mit der Methode Denkanstöße gibt.

              • Ich weiß nicht, auf welche neue Funktion du dich da beziehst. Das Sabotieren der anderen Projekte war eine bewusste schädliche Handlung, denn das passierte nicht über die Änderungen an seinem GitHub-Repository, sondern durch das mutwillige Ändern und Veröffentlichen der Bibliotheken in der Registry auf npmjs.com. npm, Inc gehört zu GitHub und hat ganz klare Richtlinien für das „Unpublizieren“ von Bibliotheken, gegen die Marak verstoßen hat, in dem er diese Richtlinien mutwillig umgangen hat. Daher auch die Sperrung seines Accounts auf GitHub.

                Es ist mir ein Rätsel, wie eine solche destruktive Handlung Beifall auslösen kann. Alles zu Klump kloppen, weil es einem nicht gefällt, hat noch niemanden voran gebracht. Damit war Aaron Swartz auch nicht zufrieden…

                • Er hat keine anderes Projekt bewusst beschädigt! Denn keiner sollte jemals in seinem Projekt einen Eintrag in seinen packages.json-Datei mit Angabe der Version „nimm immer die Neustes“ verwenden! Denn damit werden -und wurden- beschädigte Versionen, unausgereifte oder gar Aplpha-Versionen der Libraries verwendet!
                  Und da er der „Owner“ der Libs ist, darf er damit machen was er will! Und er hat auch korrekt die Versionsnummer erhöht – damit verblieben korrekt funktionierende Versionen auf dem npm-Servern und wenn jetzt andere Entwickler und Firmen schlicht zu faul waren, eine korrekte Versionsangabe zu benutzen, sind diese schuld wenn nichts mehr ging! Ich selbst habe aktuell 24 Projekte für Node.js und die werden von zig anderen Projekten benutzt! Und auch ich habe -absichtlich oder unabsichtlich- inkompatible Versionen veröffentlicht! Grund war und ist immer, dass ich die APIs angepasst oder komplette Überarbeitungen durchgeführt habe (so z.B. um die inzw. hunderten verwendeten Libs zu bereinigen oder/und unnötige fremde Mini-Libs, die es zu tausenden gibt, zu entfernen)
                  Wenn dann bei anderen nichts ging und entsprechende Meldungen daher kamen, gabs den „freundlichen Hinweis“ von mir, mit der bei Node.js leider inzwischen üblichen „Rules“ bei denen automatisch neuere Versionen genutzt werden aufzuhören und eine einfache Versionsangabe zu nutzen! Damit ist dann die korrekte Funktion der dann hoffentlich bekannten Library gegeben – alles andere ist schlicht Unsinn! Aber für viele scheint es ganz böse zu sein, nicht immer die letzte und neuste Version zu nutzen…
                  Das Ergebnis kann man immer wieder bei Node.js und den ganzen Frameworks erleben! (immer wieder funktioniert da gar nichts mehr)

                  • Da du offensichtlich aus der IT kommst, ist dir ja bekannt, dass das keine perfekte Welt ist. Das Argument „keiner sollte jemals in seinem Projekt“ ist ziemlich schwach. Denn wäre das Kind nicht Fahrradgefahren, wäre es nicht angefahren worden.

                    Auch das Argument „Und da er der „Owner“ der Libs ist, darf er damit machen was er will!“ ist falsch. Vielleicht magst du da noch mal die TOS von npmjs.com lesen. Insbesondere den Abschnitt „How to unpublish“. Gerade wenn du selbst dort veröffentlichst.

                    Es ging hier nicht um eine fehlerhafte Version oder einer Veröffentlichung aus Versehen, sondern bewusste Sabotage. Maraks Absicht ist doch klar kommuniziert und das dementiert er doch auch gar nicht. Keine Ahnung warum du das versuchst …

                  • > Er hat keine anderes Projekt bewusst beschädigt!

                    Doch. Artikel lesen, commit lesen.

        • ER darf seinen Code jederzeit ändern anpassen wie er möchte … es ist Sache der „Nutzer“ Code zu prüfen den sie von anderen verwenden! … Da hat GitHub gar nix mit zu tun. Wenn er fremden Code einfach ändert ja dann ist das was anderes.

          • Klar darf er seinen Code ändern, wie er möchte. Das nimmt ihm doch auch niemand. Er darf aber GitHub nicht missbrauchen, um andere zu schädigen.

    • Ich finde es zwar auch nicht besonders klug, wenn man blind Hunderte fremde Abhängigkeiten zieht, aber wie wirst du alles überprüfen?
      Da inkludierst du irgendein Paket, das du brauchst und es zieht gleich 72 weitere mit.
      So ist es halt in der modernen Web-Entwicklung.

      • Dann ist das unseriöses Coden.
        Man will Zeit/Geld sparen und das Rad nicht selbst/neu erfinden. Völlig legitim.
        Dann muss man aber eben die Library ziehen, prüfen und /diese/ Version verwenden. Und Librarys, die ihrerseits beliebige Versionen ziehen kann man eben nicht benutzen.

        Letztlich trägt immer der Programmierer die Verantwortung für seinen Code. Bei Freeware nur ideell, bei Payware (hoffentlich) auch materiell.

  2. Ragnar Kotzbrock says:

    Verstehe sein Problem nicht.
    Wenn er nicht möchte, dass sein Code nicht einfach benutzt werden darf, warum veröffentlicht er das dann unter einer Lizenz, bei der praktisch jeder mit dem Code machen darf, was er will?

  3. Coole Aktion, ich finds immer wieder crazy, wie abhängig man von externen Quellen ist.
    Wenn er das nur auf seinen Blog geschrieben hätte, hätte er für das wichtige Anliegen keine Aufmerksamkeit bekommen.

    Wer hat denn schon für OpenSource-Projekte gespendet? ich schon

  4. Einfach nur widerlich. Solche Egomanen machen OpenSource kaputt.

    Niemand hat ihn gezwungen, eine Freie Lizenz zu verwenden. Niemand verdient mit so einer Art Software Geld. Alle Entscheidungen hat er komplett freiwillig getroffen. Wenn ER sich die falsche Lizenz für sein nicht existierendes Geschäftsmodell aussucht, können andere da nix für.

    Abgesehen davon ist das natürlich nicht legal. Völlig unabhängig davon, was in der Lizenz steht, hat er vorsätzlich Computersabotage betrieben.

    Ich weiss nicht, was in Leute gefahren ist, die hier auch noch klatschen. Früher hatten wir mal „ehrenhafte“ Regeln wie „Wenn Du dein Projekt aufgibst, ist deine letzte Verpflichtung, es sauber übernehmbar zu machen“, und heute gibt es auch noch Applaus, wenn man „wegen zu wenig Geschenke“ den Weihnachtsbaum anzündet. Wie beknackt ist das denn bitte? Genau so und nicht anders funktioniert NodeJS, da ist nicht falsch gelaufen. Bleib weg, wenn es dir nicht passt.

    Das einzige, was tröstlich ist, ist das Wissen, dass dieser Kindergartenrambo beruflich verbrannt ist bis an sein Lebensende. Keiner hat Bock auf amoklaufende Egomanen in seinem Team.

    • Ich habe ehrlich gesagt im zweiten Absatz aufgehört zu lesen, weil die Menge an Unfug und Borniertheit dieses Kommentars jedes erträgliche Maximum übersteigt.

      Das sind so Leute, die furzen im Restaurant und erklären dann, dass das nicht verboten sei.

      So ein Verhalten ist unterste Schublade. Der wird nie wieder einen Job finden. Der ist komplett verbrannt. Gut.

  5. Bitte Suizid anstelle von Selbstmord schreiben, Selbstmord ist kein sachlicher Ausdruck. https://www.aerzteblatt.de/archiv/42167/Selbstmord-Ein-Wort-das-es-nicht-geben-sollte

    • Bitte nicht nerven mit Awareness-sprech. Wer mit Hochdeutsch nicht klarkommt, kann ja was anderes lesen. Twitter zum Beispiel, da jubeln sie sich gegenseitig hoch mit ihren Neusprech-Fantasien.

    • Aha. Wann darf man denn moralisch einwandfrei von Selbstmord sprechen? Bei Selbstmordattentätern? Oder muss man die Freitod-mit-Kollateralschaden-Person nennen?

  6. Auf der einen Seite ist es cool, dass diese Aktion mal so einige wachgerüttelt hat bzgl. ihrer Abhängigkeit von Dependencies (pun intended). Auf der anderen Seite hat er colors.js unter der MIT Lizenz veröffentlicht. Da muss er sich dann auch nicht wundern, dass seine Code ohne Gegenleistung genutzt wird.

    Bezüglich Github sperrt ihn: Meiner Meinung nach ungerechtfertigt, denn in der MIT Lizenz von colors.js steht:
    > IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY

    Sein Code, mit MIT Lizenz: Er kann damit machen was er will, darf sich aber nicht wundern, wenn andere das für sich nutzen ohne Gegenleistung.

    Wer das genutzt hat und wem alles um die Ohren geflogen ist: So etwas kann bei dem undurchsichtem NPM Ökosystem immer mal passieren. Diese Unsicherheit ist der Preis den man zahlt, wenn durch die Nutzung von NPM Deps viel viel Zeit und Geld sparen möchte.

Es werden alle Kommentare moderiert. Lies auch bitte unsere Kommentarregeln:

Für eine offene Diskussion behalten wir uns vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen. Wir möchten, dass respektvoll miteinander kommuniziert wird, so als ob die Diskussion mit real anwesenden Personen geführt wird. Dies machen wir für den Großteil unserer Leser, der sachlich und konstruktiv über ein Thema sprechen möchte - gerne auch mit Humor.

Du willst nichts verpassen?

Du hast die Möglichkeit, den Feed dieses Beitrags zu abonnieren. Wer natürlich alles lesen möchte, der sollte den Hauptfeed abonnieren.