Was macht Verdaccio zu einem erfolgreichen Projekt?
Oren Hacohen
2. Februar 2021
0 Min. LesezeitWillkommen zu unserem Spotlight auf Verdaccio. Heute begrüßen wir Juan Picado, den Maintainer des Open-Source-E-Mail-Agenten npm-Paket Verdaccio. Uns ist aufgefallen, dass Verdaccio auf der Paket-Seite von Verdaccio im Snyk Advisor beim allgemeinen Paket-Zustand sehr gut abschneidet. Deshalb möchten wir uns die Details genauer ansehen.

Was ist Verdaccio?
Kurz gesagt: Verdaccio ist eine schlanke private Registry und ein Proxy, die ohne Abhängigkeiten auskommen und ohne Konfiguration in Node.js erstellt wurden. Die Anwendung lässt sich bis zu einem gewissen Grad anpassen und ist ganz einfach einzurichten. Wenn Sie bereits ein Paket auf npmjs veröffentlicht haben, wissen Sie schon, wie Sie Verdaccio verwenden.
Welche interessanten Anwendungsfälle für das Paket haben Sie erlebt?
Der häufigste Anwendungsfall ist das Hosting einer privaten Registry, für das kleine Teams nicht viele Ressourcen benötigen. Eine virtuelle Maschine beliebiger Größe bei einem beliebigen SaaS-Anbieter reicht für die meisten Anforderungen aus.
Verdaccio wird im Open-Source-Ökosystem sehr geschätzt. Der Hauptgrund dafür ist, dass diese Projekte beim Testen und Veröffentlichen von Paketen nicht auf Drittanbieter-Dienste angewiesen sind. Zudem bietet Verdaccio Datenschutz und eine zusätzliche Sicherheitsebene, die verhindert, dass versehentlich etwas an öffentliche Registries gelangt. Ein konkretes Beispiel wäre das Veröffentlichen mehrerer Pakete aus einem Mono-Repository, um die Integrität der endgültigen Installation zu testen.
Eine Registry zu haben, ist entscheidend, um Node.js kennenzulernen, Module zu erstellen und sie als Teil der Grundlagen von Node.js zu verteilen. Was könnte besser sein, als dass jede Entwicklerin und jeder Entwickler in nur wenigen Sekunden eine eigene Registry betreiben kann? Für viele, die gerade erst anfangen, Node.js zu lernen, ist das unbezahlbar.
Können Sie uns mehr über Ihre Rolle als Maintainer des Verdaccio-Projekts erzählen?
2016 entstand Verdaccio auf Basis eines Forks eines Projekts namens Sinopia. Es gab mehrere Diskussionen darüber, wie es mit dem Projekt weitergehen sollte. Damals nutzte ich Sinopia und brauchte dringend eine Registry für meine eigene Entwicklung, bis das Projekt aufgegeben wurde. Ich erkannte schnell das Potenzial dieser Idee für die Community. Als ich aktiv dazu beitrug, übertrugen mir die Mitgründer die Verantwortung. Damals hatte das Projekt 200 Sterne und nur einige Hundert Downloads pro Woche. Sinopia war noch immer relevant, und mein Hauptziel war es, möglichst viele Mitwirkende an Bord zu holen. Das ist gelungen.
Heute leite ich dieses Projekt vollständig in meiner Freizeit. Mein Hauptziel ist es, die Node.js-Community beim Wachsen zu unterstützen. Verdaccio hat mehr als 11.000 Sterne auf GitHub, rund 2 Millionen Docker-Pulls und jeden Monat 100.000 Downloads auf npm. Am besten können Sie das Projekt durch Beiträge unterstützen. Sie können aber auch über GitHub Sponsors für die Weiterentwicklung spenden: https://github.com/sponsors/verdaccio.
Wir haben Verdaccio als immer beliebter eingestuft; die Downloads stiegen um über 30.432 pro Woche. Was hat das Projekt Ihrer Meinung nach erfolgreich gemacht?

Die Einfachheit – ganz klar. Die Einstiegshürde bei der ersten Verwendung von Verdaccio ist sehr niedrig. Es reicht,
npx verdaccioeinzugeben, um eine Registry zu starten.Nutzer wissen, dass eine Registry komplex sein kann. Verdaccio macht es einfach.
Die Beliebtheit von JavaScript und Node.js spielt eine wichtige Rolle für den Erfolg. Datenschutz und Sicherheit sind gefragt, und Verdaccio bietet beides kostenlos.
Docker war definitiv der beste Weg, um viele Nutzer zu erreichen.
Was sind Ihre Lieblingsfunktionen von Verdaccio?
Mein Favorit heißt uplinks. Diese Funktion bietet Nutzern verschiedene Möglichkeiten, eine Verbindung zu anderen Registries herzustellen. In Kombination mit einer weiteren Funktion namens package access kann man anhand eines Paketnamensmusters festlegen, welche Uplinks eine bestimmte Abhängigkeit auflösen sollen. Es ist sogar möglich, mehrere Uplinks zu verketten, bis das Paket gefunden wird. Bislang kann kein anderes Produkt das leisten.
Welche neuen Funktionen bietet die neueste Verdaccio-Version?
Eine der neuesten Funktionen ermöglicht es, veraltete Pakete in der Benutzeroberfläche anzuzeigen. So können Sie Nutzerinnen und Nutzern leicht mitteilen, dass bestimmte Pakete nicht mehr gepflegt werden und nicht länger verwendet werden sollten.
Warum entscheiden sich Entwickler für Verdaccio?
Ich denke, Entwickler schätzen Verdaccio wegen seiner Privatsphäre, Flexibilität, Einfachheit und Kostenfreiheit. Privatsphäre, weil Sie Ihren Code nicht mit Drittanbietern teilen müssen; Flexibilität, weil sich das Verhalten der Anwendung leicht ändern lässt; Einfachheit dank der geringen Lernkurve für den Einstieg; und Kostenfreiheit, weil Verdaccio Open Source ist und jeder einen Beitrag leisten und das Projekt verbessern kann.
Gibt es andere Projekte, von denen Entwickler Ihrer Beobachtung nach migrieren?
In den letzten Jahren habe ich beobachtet, dass Entwickler von Nexus und Artifactory zu Verdaccio wechseln. Die meisten Node.js-Entwickler benötigen keine große Lösung, um ein Paket zu veröffentlichen. Wenn Sie ein kleines Unternehmen führen, freiberuflich arbeiten, lernen oder einfach etwas ausprobieren möchten, gibt es auf dem Markt nichts Einfacheres und Schnelleres als Verdaccio.
Was sind für Sie gute Anzeichen dafür, dass es Verdaccio gut geht? Wir haben Verdaccio als gesundes Projekt eingestuft und beobachten einen starken Trend bei Commits und Pull Requests.

Auf jeden Fall vermittelt es ein Gefühl von Sicherheit. Jedes Open-Source-Projekt hängt von anderen Projekten ab und ist Teil einer langen Abhängigkeitskette. Deren Probleme, Verbesserungen oder Breaking Changes wirken sich früher oder später auch auf Sie aus. Ich aktualisiere Abhängigkeiten so oft ich kann, entweder manuell oder mithilfe automatisierter Tools. Auch deren Sicherheitspatches beheben Probleme in Verdaccio. Im Grunde mache ich es genauso, damit auch diejenigen, die dieses Projekt als Abhängigkeit nutzen, von seinem guten Zustand profitieren. Darüber hinaus gibt es bei uns Kanäle für Meldungen gemäß unseren Sicherheitsrichtlinien. So kann jeder Sicherheitslücken melden, die für die Maintainer Priorität haben.
Was ist heute die größte Herausforderung für Maintainer eines Open-Source-Projekts?
Die Zeit. Für mich ist es ein Hirngespinst, hauptberuflich und bezahlt Open Source zu entwickeln. Nur wenigen ist das in völliger Unabhängigkeit gelungen. Ein Vollzeitjob, Familie, persönliche Hobbys und der normale Alltag lassen nicht viel Zeit und Freiraum für Open Source. Die größte Herausforderung ist also definitiv die Zeit. Manchmal hat man am Tag höchstens eine Stunde und muss entscheiden, welche Aufgabe Priorität hat. Nicht zu vergessen sind weitere Aufgaben wie Bloggen, Twittern und das Projekt auf Konferenzen oder Meetups vorstellen. Wichtig ist auch, sich wegen der Zeit nicht unter Druck zu setzen. Es ist wirklich wichtig, einfach die wenige Zeit zu genießen, die einem bleibt.
Verdaccio scheint in früheren Versionen Sicherheitsprobleme erfolgreich bewältigt zu haben. Wie gehen Sie angesichts des kürzlich veröffentlichten 4.x-Zweigs heute mit diesem Sicherheitsrisiko um?

Ich bin kein Sicherheitsspezialist und muss mich daher auf Drittanbieter-Dienste oder Sicherheitsspezialisten verlassen, die auf mich zukommen und mir helfen, potenzielle Probleme zu verstehen und zu erkennen. Schon in den Anfangstagen wurde das Verdaccio-Team von Liran Tal eingeladen, Teil des Open-Source-Sicherheitsprogramms von Snyk zu werden. Seitdem setze ich mich dafür ein, in diesem Bereich verantwortungsvoller zu handeln. Das Projekt hat sehr gutes Feedback zum Umgang mit Sicherheitsproblemen erhalten, und natürlich habe ich dabei viel gelernt.
Schon bevor ich Teil des Programms wurde, habe ich den kostenlosen Dienst von Snyk für Open-Source-Projekte genutzt. Sofortiges Feedback zu verfügbaren Patches für Sicherheitslücken – per Pull Request oder E-Mail – hilft dabei, das Projekt in gutem Zustand zu halten.
Daniel Ruf, Mitglied des Kernteams, ist ein in Deutschland ansässiger Sicherheitsspezialist. Er kam aus Begeisterung für Sicherheit und Open Source zum Projekt und war von Anfang an mit seinem Engagement für die Sicherheit von Verdaccio eine große Inspiration.
Auch die Mitwirkenden leisten ihren Beitrag. Sobald eine Sicherheitslücke entdeckt wird, werde ich über die offizielle Sicherheitsrichtlinie informiert, die in der Datei SECURITY.md im Master-Branch dokumentiert ist. Entsprechend den festgelegten Verfahren wird so schnell wie möglich ein Patch bereitgestellt. Ich habe eine einzige Regel: Sicherheit ist wichtig, und ich nehme sie ernst.
Was sind Ihre fünf liebsten Open-Source-Projekte?
Yarn 2 (berry) ist eines meiner Favoriten. Das Projekt ist hervorragend umgesetzt: beim Code, beim Plugin-System und bei der Dokumentation. Auch die Kommunikation dazu, wie man von Classic zu Berry migriert, ist sehr gut. Dieses neue Konzept wird vieles im Node.js-Ökosystem verändern.
Babel.js: Ich kann mir die Entwicklung ohne Babel.js nicht vorstellen. Ich kombiniere es gern mit TypeScript, sodass ich immer die neuesten JavaScript-Funktionen nutzen kann.
pnpm: Die Weiterentwicklung von Verdaccio basiert bereits auf pnpm, und mir gefällt der Ansatz des Projekts: einfache Einrichtung, Unterstützung für Mono-Repositories, hohe Geschwindigkeit und alles, was ich brauche. Auch der sparsame Umgang mit Festplattenspeicher ist mir wichtig.
Pino.js: Definitiv der beste derzeit verfügbare Node.js-Logger: schnell, gut dokumentiert und mit einer lebendigen Community.
Jest: Ich verwende Jest in jedem Projekt, an dem ich beruflich arbeite. Es besteht kein Zweifel: Jest ist der umfassendste Test-Runner, wird gut gepflegt und erhält schnell neue Funktionen.
Was ist Ihr bester Tipp für den Einstieg als Open-Source-Mitwirkender?
Sie müssen Freude daran haben – das ist die einzige Voraussetzung für Open-Source-Arbeit. Für mich ist es ein Hobby, bei dem ich lernen, meine Komfortzone erweitern und vielen Entwicklern dabei helfen kann, Node.js kennenzulernen und Spaß daran zu haben.
Haben Sie keine Angst! Maintainer sind keine allmächtigen Götter, die auf jedem Gebiet alles wissen. Sie sind Menschen, machen Fehler und lernen dazu. Klein anzufangen, ist ein guter Weg in die Open-Source-Welt. Mit der Zeit gewinnen Sie einen guten Überblick über das Projekt, übernehmen mehr Verantwortung und werden Maintainer – falls Sie das möchten.

