Ein Jahrzehnt Wirkung: Wie Unsere npm-Pakete 1 Milliarde Downloads Erreichten und JavaScript Prägten
Vorwort
In der JavaScript- und Node.js-Welt sind einige Pakete unverzichtbar – sie werden täglich millionenfach heruntergeladen und treiben weltweit Apps an. Hinter diesen Tools stehen Entwickler, die sich auf Open-Source-Qualität konzentrieren. Heute zeigen wir, wie unser Team dabei hilft, npm-Pakete zu erstellen und zu pflegen, die zu wichtigen Bestandteilen des JavaScript-Ökosystems geworden sind.
Die Pioniere, die uns vertrauen: Isaac Z. Schlueter und Forward Email
Wir sind stolz darauf, Isaac Z. Schlueter (GitHub: isaacs) als Nutzer zu haben. Isaac hat npm geschaffen und beim Aufbau von Node.js mitgewirkt. Sein Vertrauen in Forward Email zeigt unseren Fokus auf Qualität und Sicherheit. Isaac nutzt Forward Email für mehrere Domains, darunter izs.me.
Isaacs Einfluss auf JavaScript ist enorm. Im Jahr 2009 gehörte er zu den Ersten, die das Potenzial von Node.js erkannten, und arbeitete mit Ryan Dahl zusammen, der die Plattform erschuf. Wie Isaac in einem Interview mit dem Increment-Magazin sagte: „Mitten in dieser sehr kleinen Gemeinschaft von Leuten, die versuchten herauszufinden, wie man serverseitiges JS möglich macht, kam Ryan Dahl mit Node heraus, was einfach sehr klar der richtige Ansatz war. Ich habe darauf gesetzt und mich etwa Mitte 2009 sehr engagiert.“
Note
Für diejenigen, die sich für die Geschichte von Node.js interessieren, gibt es hervorragende Dokumentationen, die seine Entwicklung nachzeichnen, darunter The Story of Node.js und 10 Things I Regret About Node.js - Ryan Dahl. Ryan Dahls persönliche Webseite enthält ebenfalls wertvolle Einblicke in seine Arbeit.
Von der Entstehung von npm bis zur Führung von Node.js
Isaac gründete npm im September 2009, mit der ersten nutzbaren Version Anfang 2010. Dieser Paketmanager erfüllte ein zentrales Bedürfnis in Node.js, indem er Entwicklern das einfache Teilen und Wiederverwenden von Code ermöglichte. Laut der Node.js Wikipedia-Seite „wurde im Januar 2010 ein Paketmanager für die Node.js-Umgebung namens npm eingeführt. Der Paketmanager ermöglicht es Programmierern, Node.js-Pakete zusammen mit dem zugehörigen Quellcode zu veröffentlichen und zu teilen und ist darauf ausgelegt, die Installation, Aktualisierung und Deinstallation von Paketen zu vereinfachen.“
Als Ryan Dahl sich im Januar 2012 von Node.js zurückzog, übernahm Isaac die Projektleitung. Wie in seinem Lebenslauf vermerkt ist, „leitete er die Entwicklung mehrerer grundlegender Node.js-Core-APIs, einschließlich des CommonJS-Modulsystems, der Dateisystem-APIs und Streams“ und „fungierte 2 Jahre lang als BDFL (Benevolent Dictator For Life) des Projekts, wodurch eine stetig steigende Qualität und ein zuverlässiger Build-Prozess für Node.js-Versionen von v0.6 bis v0.10 sichergestellt wurden.“
Isaac führte Node.js durch eine wichtige Wachstumsphase und setzte Standards, die die Plattform bis heute prägen. Später gründete er 2014 npm, Inc., um das npm-Registry zu unterstützen, das er zuvor alleine betrieben hatte.
Wir danken Isaac für seine enormen Beiträge zu JavaScript und nutzen weiterhin viele von ihm erstellte Pakete. Seine Arbeit hat verändert, wie wir Software entwickeln und wie Millionen Entwickler weltweit Code teilen.
Der Architekt hinter dem Code: Nick Baughs Weg
Im Zentrum unseres Open-Source-Erfolgs steht Nick Baugh, Gründer und Inhaber von Forward Email. Seine Arbeit in JavaScript erstreckt sich über fast 20 Jahre und hat geprägt, wie unzählige Entwickler Apps bauen. Sein Open-Source-Weg zeigt sowohl technisches Können als auch Führungsqualitäten in der Community.
Express Technical Committee und Core-Beiträge
Nicks Expertise im Web-Framework brachte ihm einen Platz im Express Technical Committee ein, wo er bei einem der meistgenutzten Node.js-Frameworks mitwirkte. Nick ist jetzt als inaktives Mitglied auf der Express-Community-Seite gelistet.
Important
Express wurde ursprünglich von TJ Holowaychuk erstellt, einem produktiven Open-Source-Beitragenden, der einen großen Teil des Node.js-Ökosystems geprägt hat. Wir sind dankbar für TJs grundlegende Arbeit und respektieren seine Entscheidung, eine Pause einzulegen von seinen umfangreichen Open-Source-Beiträgen.
Als Mitglied des Express Technical Committee zeigte Nick große Detailgenauigkeit bei Themen wie der Klärung der req.originalUrl-Dokumentation und der Behebung von Problemen bei der Verarbeitung von Multipart-Formularen.
Koa Framework Beiträge
Nicks Arbeit mit dem Koa Framework – einer modernen, leichteren Alternative zu Express, die ebenfalls von TJ Holowaychuk erstellt wurde – zeigt sein Engagement für bessere Webentwicklungstools. Seine Koa-Beiträge umfassen sowohl Issues als auch Code über Pull Requests, die Fehlerbehandlung, Content-Type-Verwaltung und Verbesserungen der Dokumentation betreffen.
Seine Arbeit sowohl bei Express als auch bei Koa verschafft ihm eine einzigartige Sicht auf die Node.js-Webentwicklung und hilft unserem Team, Pakete zu erstellen, die gut mit mehreren Framework-Ökosystemen funktionieren.
Vom einzelnen Beitragenden zum Organisationsleiter
Was als Hilfe für bestehende Projekte begann, entwickelte sich zu der Erstellung und Pflege ganzer Paket-Ökosysteme. Nick gründete mehrere GitHub-Organisationen – darunter Cabin, Spam Scanner, Forward Email, Lad und Bree – die jeweils spezifische Bedürfnisse in der JavaScript-Community lösen.
Dieser Wandel vom Beitragenden zum Leiter zeigt Nicks Vision für gut gestaltete Software, die reale Probleme löst. Durch die Organisation verwandter Pakete unter fokussierten GitHub-Organisationen hat er Tool-Ökosysteme aufgebaut, die zusammenarbeiten und gleichzeitig modular und flexibel für die breitere Entwicklergemeinschaft bleiben.
Unsere GitHub-Organisationen: Ökosysteme der Innovation
Wir organisieren unsere Open-Source-Arbeit rund um fokussierte GitHub-Organisationen, die jeweils spezifische Bedürfnisse in JavaScript lösen. Diese Struktur schafft zusammenhängende Paketfamilien, die gut zusammenarbeiten und gleichzeitig modular bleiben.
Cabin: Strukturierte Protokollierung für moderne Anwendungen
Die Cabin-Organisation ist unser Ansatz für einfache, leistungsstarke App-Protokollierung. Das Hauptpaket cabin hat fast 900 GitHub-Sterne und über 100.000 wöchentliche Downloads[1]. Cabin bietet strukturierte Protokollierung, die mit beliebten Diensten wie Sentry, LogDNA und Papertrail funktioniert.
Was Cabin besonders macht, ist seine durchdachte API und das Pluginsystem. Unterstützende Pakete wie axe für Express-Middleware und parse-request für HTTP-Anfrage-Parsing zeigen unser Engagement für vollständige Lösungen statt isolierter Werkzeuge.
Das Paket bson-objectid verdient besondere Erwähnung mit über 1,7 Millionen Downloads in nur zwei Monaten[2]. Diese leichte MongoDB ObjectID-Implementierung ist zur bevorzugten Lösung für Entwickler geworden, die IDs ohne vollständige MongoDB-Abhängigkeiten benötigen.
Spam Scanner: Kampf gegen E-Mail-Missbrauch
Die Spam Scanner-Organisation zeigt unser Engagement, reale Probleme zu lösen. Das Hauptpaket spamscanner bietet fortschrittliche E-Mail-Spam-Erkennung, aber es ist das Paket url-regex-safe, das eine erstaunliche Verbreitung erfahren hat.
Mit über 1,2 Millionen Downloads in zwei Monaten[3] behebt url-regex-safe kritische Sicherheitsprobleme in anderen regulären Ausdrücken zur URL-Erkennung. Dieses Paket zeigt unseren Ansatz für Open Source: ein häufiges Problem finden (in diesem Fall ReDoS-Schwachstellen bei der URL-Validierung), eine solide Lösung schaffen und diese sorgfältig pflegen.
Bree: Modernes Job Scheduling mit Worker Threads
Die Bree-Organisation ist unsere Antwort auf eine häufige Node.js-Herausforderung: zuverlässiges Job Scheduling. Das Hauptpaket bree, mit über 3.100 GitHub-Sternen, bietet einen modernen Job Scheduler, der Node.js Worker Threads für bessere Leistung und Zuverlässigkeit nutzt.
Note
Bree wurde entwickelt, nachdem wir bei der Wartung von Agenda geholfen haben und die dabei gewonnenen Erkenntnisse genutzt haben, um einen besseren Job Scheduler zu bauen. Unsere Beiträge zu Agenda halfen uns, Wege zur Verbesserung des Job Schedulings zu finden.
Was Bree von anderen Scheduler wie Agenda unterscheidet:
- Keine externen Abhängigkeiten: Im Gegensatz zu Agenda, das MongoDB benötigt, erfordert Bree weder Redis noch MongoDB zur Verwaltung des Job-Status.
- Worker Threads: Bree verwendet Node.js Worker Threads für sandboxed Prozesse, was bessere Isolation und Leistung bietet.
- Einfache API: Bree bietet detaillierte Kontrolle bei gleichzeitiger Einfachheit, was die Umsetzung komplexer Scheduling-Anforderungen erleichtert.
- Integrierte Unterstützung: Funktionen wie sanftes Neuladen, Cron-Jobs, Datumsangaben und benutzerfreundliche Zeiten sind standardmäßig enthalten.
Bree ist ein wichtiger Bestandteil von forwardemail.net und übernimmt kritische Hintergrundaufgaben wie E-Mail-Verarbeitung, Bereinigung und geplante Wartung. Der Einsatz von Bree in Forward Email zeigt unser Engagement, unsere eigenen Werkzeuge produktiv zu nutzen und sicherzustellen, dass sie hohe Zuverlässigkeitsstandards erfüllen.
Wir verwenden und schätzen auch andere großartige Worker Thread-Pakete wie piscina und HTTP-Clients wie undici. Piscina nutzt wie Bree Node.js Worker Threads für effiziente Aufgabenverarbeitung. Wir danken Matteo Collina, der sowohl undici als auch piscina pflegt, für seine bedeutenden Beiträge zu Node.js. Matteo ist Mitglied des Node.js Technical Steering Committee und hat die HTTP-Client-Fähigkeiten in Node.js erheblich verbessert.
Forward Email: Open Source E-Mail-Infrastruktur
Unser ehrgeizigstes Projekt ist Forward Email, ein Open Source E-Mail-Dienst, der E-Mail-Weiterleitung, Speicherung und API-Dienste anbietet. Das Haupt-Repository hat über 1.100 GitHub-Sterne[4], was die Wertschätzung der Community für diese Alternative zu proprietären E-Mail-Diensten zeigt.
Das preview-email Paket dieser Organisation, mit über 2,5 Millionen Downloads in zwei Monaten[5], ist zu einem unverzichtbaren Werkzeug für Entwickler geworden, die mit E-Mail-Vorlagen arbeiten. Es bietet eine einfache Möglichkeit, E-Mails während der Entwicklung vorzuschauen und löst damit ein häufiges Problem beim Aufbau von E-Mail-fähigen Anwendungen.
Lad: Essentielle Koa-Dienstprogramme und Werkzeuge
Die Lad-Organisation stellt eine Sammlung essentieller Dienstprogramme und Werkzeuge bereit, die sich hauptsächlich auf die Verbesserung des Koa-Framework-Ökosystems konzentrieren. Diese Pakete lösen häufige Herausforderungen in der Webentwicklung und sind so konzipiert, dass sie nahtlos zusammenarbeiten und gleichzeitig unabhängig nützlich bleiben.
koa-better-error-handler: Verbesserte Fehlerbehandlung für Koa
koa-better-error-handler bietet eine verbesserte Fehlerbehandlungslösung für Koa-Anwendungen. Mit über 50 GitHub-Sternen sorgt dieses Paket dafür, dass ctx.throw benutzerfreundliche Fehlermeldungen erzeugt und dabei mehrere Einschränkungen des eingebauten Koa-Fehlerhandlers adressiert:
- Erkennt und behandelt Node.js DNS-Fehler, Mongoose-Fehler und Redis-Fehler korrekt
- Verwendet Boom zur Erstellung konsistenter, gut formatierter Fehlerantworten
- Bewahrt Header (im Gegensatz zum eingebauten Koa-Handler)
- Erhält angemessene Statuscodes statt standardmäßig 500 zu verwenden
- Unterstützt Flash-Nachrichten und Sitzungs-Erhaltung
- Bietet HTML-Fehlerlisten für Validierungsfehler
- Unterstützt mehrere Antworttypen (HTML, JSON und Klartext)
Dieses Paket ist besonders wertvoll in Kombination mit
koa-404-handlerfür ein umfassendes Fehlermanagement in Koa-Anwendungen.
passport: Authentifizierung für Lad
@ladjs/passport erweitert die beliebte Passport.js-Authentifizierungs-Middleware mit spezifischen Verbesserungen für moderne Webanwendungen. Dieses Paket unterstützt mehrere Authentifizierungsstrategien direkt out-of-the-box:
- Lokale Authentifizierung mit E-Mail
- Anmeldung mit Apple
- GitHub-Authentifizierung
- Google-Authentifizierung
- Einmalpasswort (OTP)-Authentifizierung
Das Paket ist hochgradig anpassbar und ermöglicht Entwicklern, Feldnamen und Formulierungen an die Anforderungen ihrer Anwendung anzupassen. Es ist so konzipiert, dass es nahtlos mit Mongoose für die Benutzerverwaltung integriert werden kann, was es zu einer idealen Lösung für Koa-basierte Anwendungen macht, die eine robuste Authentifizierung benötigen.
graceful: Elegantes Herunterfahren der Anwendung
@ladjs/graceful löst die kritische Herausforderung, Node.js-Anwendungen sauber herunterzufahren. Mit über 70 GitHub-Sternen stellt dieses Paket sicher, dass Ihre Anwendung sauber beendet werden kann, ohne Daten zu verlieren oder Verbindungen offen zu lassen. Wichtige Funktionen umfassen:
- Unterstützung für das saubere Schließen von HTTP-Servern (Express/Koa/Fastify)
- Sauberes Herunterfahren von Datenbankverbindungen (MongoDB/Mongoose)
- Ordnungsgemäßes Schließen von Redis-Clients
- Verwaltung von Bree-Job-Schedulern
- Unterstützung für benutzerdefinierte Shutdown-Handler
- Konfigurierbare Timeout-Einstellungen
- Integration mit Logging-Systemen
Dieses Paket ist für Produktionsanwendungen unerlässlich, bei denen unerwartete Abschaltungen zu Datenverlust oder -beschädigung führen könnten. Durch die Implementierung ordnungsgemäßer Shutdown-Verfahren hilft @ladjs/graceful, die Zuverlässigkeit und Stabilität Ihrer Anwendung sicherzustellen.
Upptime: Open Source Uptime Monitoring
Die Upptime-Organisation steht für unser Engagement für transparente, Open-Source-Überwachung. Das Haupt-Repository upptime hat über 13.000 GitHub-Sterne und ist damit eines der beliebtesten Projekte, zu denen wir beitragen. Upptime bietet einen GitHub-basierten Uptime-Monitor und eine Statusseite, die vollständig ohne Server betrieben wird.
Wir verwenden Upptime für unsere eigene Statusseite unter https://status.forwardemail.net mit dem Quellcode verfügbar unter https://github.com/forwardemail/status.forwardemail.net.
Was Upptime besonders macht, ist seine Architektur:
- 100 % Open Source: Jede Komponente ist vollständig Open Source und anpassbar.
- Angetrieben von GitHub: Nutzt GitHub Actions, Issues und Pages für eine serverlose Überwachungslösung.
- Kein Server erforderlich: Im Gegensatz zu herkömmlichen Überwachungstools müssen Sie keinen Server betreiben oder warten.
- Automatische Statusseite: Generiert eine schöne Statusseite, die auf GitHub Pages gehostet werden kann.
- Leistungsstarke Benachrichtigungen: Integration mit verschiedenen Benachrichtigungskanälen, einschließlich E-Mail, SMS und Slack.
Um das Nutzererlebnis zu verbessern, haben wir @octokit/core in den forwardemail.net-Code integriert, um Echtzeit-Statusupdates und Vorfälle direkt auf unserer Website anzuzeigen. Diese Integration bietet unseren Nutzern klare Transparenz im Falle von Problemen über unseren gesamten Stack hinweg (Website, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree usw.) mit sofortigen Toast-Benachrichtigungen, Badge-Icon-Änderungen, Warnfarben und mehr.
Die @octokit/core-Bibliothek ermöglicht es uns, Echtzeitdaten aus unserem Upptime-GitHub-Repository abzurufen, zu verarbeiten und benutzerfreundlich darzustellen. Wenn ein Dienst eine Störung oder eine verschlechterte Leistung hat, werden die Nutzer sofort durch visuelle Indikatoren benachrichtigt, ohne die Hauptanwendung verlassen zu müssen. Diese nahtlose Integration stellt sicher, dass unsere Nutzer stets aktuelle Informationen über den Systemstatus erhalten, was Transparenz und Vertrauen erhöht.
Upptime wurde von Hunderten von Organisationen übernommen, die nach einer transparenten, zuverlässigen Möglichkeit suchen, ihre Dienste zu überwachen und den Status an Nutzer zu kommunizieren. Der Erfolg des Projekts zeigt die Stärke, Werkzeuge zu entwickeln, die bestehende Infrastruktur (in diesem Fall GitHub) nutzen, um gängige Probleme auf neue Weise zu lösen.
Unsere Beiträge zum Forward Email Ökosystem
Während unsere Open-Source-Pakete von Entwicklern weltweit genutzt werden, bilden sie auch die Grundlage unseres eigenen Forward Email Dienstes. Diese doppelte Rolle – sowohl als Schöpfer als auch als Nutzer dieser Werkzeuge – verschafft uns eine einzigartige Perspektive auf deren praktische Anwendung und treibt kontinuierliche Verbesserungen voran.
Von Paketen zur Produktion
Der Weg von einzelnen Paketen zu einem kohärenten Produktionssystem erfordert sorgfältige Integration und Erweiterung. Für Forward Email umfasst dieser Prozess:
- Benutzerdefinierte Erweiterungen: Entwicklung Forward Email-spezifischer Erweiterungen unserer Open-Source-Pakete, die unsere besonderen Anforderungen adressieren.
- Integrationsmuster: Entwicklung von Mustern, wie diese Pakete in einer Produktionsumgebung zusammenwirken.
- Leistungsoptimierungen: Identifikation und Behebung von Leistungsengpässen, die erst im großen Maßstab auftreten.
- Sicherheitsverstärkung: Hinzufügen zusätzlicher Sicherheitsschichten, die speziell auf die E-Mail-Verarbeitung und den Schutz von Benutzerdaten ausgerichtet sind.
Diese Arbeit repräsentiert tausende Stunden Entwicklung über die Kernpakete hinaus und führt zu einem robusten, sicheren E-Mail-Dienst, der das Beste unserer Open-Source-Beiträge nutzt.
Der Feedback-Loop
Vielleicht der wertvollste Aspekt der Nutzung unserer eigenen Pakete in der Produktion ist der Feedback-Loop, den dies erzeugt. Wenn wir in Forward Email auf Einschränkungen oder Randfälle stoßen, beheben wir diese nicht nur lokal – wir verbessern die zugrundeliegenden Pakete, wovon sowohl unser Dienst als auch die breitere Community profitieren.
Dieser Ansatz hat zu zahlreichen Verbesserungen geführt:
- Brees sanfte Abschaltung: Forward Emails Bedarf an Deployments ohne Ausfallzeiten führte zu verbesserten sanften Abschaltfunktionen in Bree.
- Spam Scanners Mustererkennung: In der Praxis auftretende Spam-Muster in Forward Email haben die Erkennungsalgorithmen von Spam Scanner beeinflusst.
- Cabins Leistungsoptimierungen: Hochvolumiges Logging in der Produktion offenbarte Optimierungsmöglichkeiten in Cabin, die allen Nutzern zugutekommen.
Indem wir diesen positiven Kreislauf zwischen unserer Open-Source-Arbeit und dem Produktionsdienst aufrechterhalten, stellen wir sicher, dass unsere Pakete praktische, erprobte Lösungen bleiben und keine theoretischen Implementierungen.
Forward Emails Kernprinzipien: Eine Grundlage für Exzellenz
Forward Email ist nach einer Reihe von Kernprinzipien gestaltet, die alle unsere Entwicklungsentscheidungen leiten. Diese Prinzipien, ausführlich beschrieben auf unserer Website, sorgen dafür, dass unser Dienst entwicklerfreundlich, sicher und auf den Schutz der Privatsphäre der Nutzer fokussiert bleibt.
Immer entwicklerfreundlich, sicherheitsorientiert und transparent
Unser erstes und wichtigstes Prinzip ist es, Software zu schaffen, die entwicklerfreundlich ist und gleichzeitig die höchsten Standards in Sicherheit und Datenschutz einhält. Wir sind überzeugt, dass technische Exzellenz niemals auf Kosten der Benutzerfreundlichkeit gehen darf und dass Transparenz Vertrauen in unserer Community aufbaut.
Dieses Prinzip zeigt sich in unserer ausführlichen Dokumentation, klaren Fehlermeldungen und offener Kommunikation über Erfolge und Herausforderungen. Indem wir unseren gesamten Code offenlegen, laden wir zu Prüfung und Zusammenarbeit ein, was sowohl unsere Software als auch das gesamte Ökosystem stärkt.
Einhaltung bewährter Softwareentwicklungsprinzipien
Wir folgen mehreren etablierten Softwareentwicklungsprinzipien, die sich über Jahrzehnte bewährt haben:
- MVC: Trennung der Verantwortlichkeiten durch das Model-View-Controller-Muster
- Unix-Philosophie: Erstellung modularer Komponenten, die eine Sache gut machen
- KISS: Keep It Simple and Straightforward (Halte es einfach und unkompliziert)
- DRY: Don't Repeat Yourself, Förderung der Wiederverwendung von Code
- YAGNI: You Aren't Gonna Need It, Vermeidung vorzeitiger Optimierung
- Twelve Factor: Befolgung bewährter Praktiken zum Aufbau moderner, skalierbarer Anwendungen
- Ockhams Rasiermesser: Wahl der einfachsten Lösung, die die Anforderungen erfüllt
- Dogfooding: Intensive Nutzung unserer eigenen Produkte Diese Prinzipien sind nicht nur theoretische Konzepte – sie sind in unseren täglichen Entwicklungspraktiken verankert. Zum Beispiel zeigt sich unsere Einhaltung der Unix-Philosophie darin, wie wir unsere npm-Pakete strukturiert haben: kleine, fokussierte Module, die zusammengesetzt werden können, um komplexe Probleme zu lösen.
Zielgruppe: Der engagierte, selbstfinanzierte Entwickler
Wir richten uns speziell an den engagierten, selbstfinanzierten und ramen-profitable Entwickler. Dieser Fokus prägt alles, von unserem Preismodell bis zu unseren technischen Entscheidungen. Wir verstehen die Herausforderungen, Produkte mit begrenzten Ressourcen zu entwickeln, weil wir selbst diese Erfahrung gemacht haben.
Dieses Prinzip ist besonders wichtig für unseren Umgang mit Open Source. Wir erstellen und pflegen Pakete, die reale Probleme für Entwickler ohne Unternehmensbudgets lösen und leistungsstarke Werkzeuge für alle zugänglich machen, unabhängig von deren Ressourcen.
Prinzipien in der Praxis: Der Forward Email Codebase
Diese Prinzipien sind im Forward Email Codebase deutlich sichtbar. Unsere package.json-Datei zeigt eine durchdachte Auswahl an Abhängigkeiten, die alle mit unseren Kernwerten übereinstimmen:
- Sicherheitsorientierte Pakete wie
mailauthfür E-Mail-Authentifizierung - Entwicklerfreundliche Tools wie
preview-emailfür einfacheres Debugging - Modulare Komponenten wie die verschiedenen
p-*Utilities von Sindre Sorhus
Indem wir diese Prinzipien konsequent über die Zeit befolgen, haben wir einen Dienst aufgebaut, dem Entwickler ihre E-Mail-Infrastruktur anvertrauen können – sicher, zuverlässig und im Einklang mit den Werten der Open-Source-Community.
Datenschutz durch Design
Datenschutz ist für Forward Email kein nachträglicher Gedanke oder Marketingfeature – es ist ein grundlegendes Designprinzip, das jeden Aspekt unseres Dienstes und Codes prägt:
- Zero-Access-Verschlüsselung: Wir haben Systeme implementiert, die es uns technisch unmöglich machen, die E-Mails der Nutzer zu lesen.
- Minimale Datenerhebung: Wir erfassen nur die Daten, die notwendig sind, um unseren Dienst bereitzustellen, nicht mehr.
- Transparente Richtlinien: Unsere Datenschutzrichtlinie ist in klarer, verständlicher Sprache ohne juristisches Fachchinesisch verfasst.
- Open Source Verifikation: Unser Open-Source-Code ermöglicht es Sicherheitsforschern, unsere Datenschutzansprüche zu überprüfen.
Dieses Engagement erstreckt sich auf unsere Open-Source-Pakete, die von Grund auf mit Sicherheits- und Datenschutzbest-Practices gestaltet sind.
Nachhaltiger Open Source
Wir sind der Meinung, dass Open-Source-Software nachhaltige Modelle braucht, um langfristig zu gedeihen. Unser Ansatz umfasst:
- Kommerzieller Support: Angebot von Premium-Support und Dienstleistungen rund um unsere Open-Source-Tools.
- Ausgewogene Lizenzierung: Verwendung von Lizenzen, die sowohl die Freiheit der Nutzer als auch die Nachhaltigkeit des Projekts schützen.
- Community-Engagement: Aktive Einbindung von Mitwirkenden zum Aufbau einer unterstützenden Gemeinschaft.
- Transparente Roadmaps: Teilen unserer Entwicklungspläne, damit Nutzer entsprechend planen können.
Indem wir auf Nachhaltigkeit setzen, stellen wir sicher, dass unsere Open-Source-Beiträge über die Zeit wachsen und sich verbessern können, anstatt vernachlässigt zu werden.
Die Zahlen lügen nicht: Unsere beeindruckenden npm-Download-Statistiken
Wenn wir über die Wirkung von Open-Source-Software sprechen, bieten Download-Statistiken ein greifbares Maß für Akzeptanz und Vertrauen. Viele der Pakete, die wir mitbetreuen, haben eine Größenordnung erreicht, die nur wenige Open-Source-Projekte jemals erreichen, mit kombinierten Downloads in Milliardenhöhe.
Important
Während wir stolz darauf sind, mehrere stark heruntergeladene Pakete im JavaScript-Ökosystem mitzuverwalten, möchten wir anerkennen, dass viele dieser Pakete ursprünglich von anderen talentierten Entwicklern erstellt wurden. Pakete wie superagent und supertest wurden ursprünglich von TJ Holowaychuk entwickelt, dessen produktive Beiträge zu Open Source maßgeblich zur Gestaltung des Node.js-Ökosystems beigetragen haben.
Ein Überblick über unsere Wirkung
Allein im zweimonatigen Zeitraum von Februar bis März 2025 verzeichneten die wichtigsten Pakete, zu denen wir beitragen und die wir mitbetreuen, beeindruckende Downloadzahlen:
- superagent: 84.575.829 Downloads[6] (ursprünglich erstellt von TJ Holowaychuk)
- supertest: 76.432.591 Downloads[7] (ursprünglich erstellt von TJ Holowaychuk)
- koa: 28.539.295 Downloads[8] (ursprünglich erstellt von TJ Holowaychuk)
- @koa/router: 11.007.327 Downloads[9]
- koa-router: 3.498.918 Downloads[10]
- url-regex: 2.819.520 Downloads[11]
- preview-email: 2.500.000 Downloads[12]
- cabin: 1.800.000 Downloads[13]
- @breejs/later: 1.709.938 Downloads[14]
- email-templates: 1.128.139 Downloads[15]
- get-paths: 1.124.686 Downloads[16]
- url-regex-safe: 1.200.000 Downloads[17]
- dotenv-parse-variables: 894.666 Downloads[18]
- @koa/multer: 839.585 Downloads[19]
- spamscanner: 145.000 Downloads[20]
- bree: 24.270 Downloads[21]
Note
Mehrere andere Pakete, die wir mitbetreuen, aber nicht erstellt haben, verzeichnen noch höhere Downloadzahlen, darunter form-data (über 738 Mio. Downloads), toidentifier (über 309 Mio. Downloads), stackframe (über 116 Mio. Downloads) und error-stack-parser (über 113 Mio. Downloads). Wir fühlen uns geehrt, zu diesen Paketen beizutragen und dabei die Arbeit ihrer ursprünglichen Autoren zu respektieren.
Diese Zahlen sind nicht nur beeindruckend – sie repräsentieren echte Entwickler, die reale Probleme mit Code lösen, den wir mitbetreuen. Jeder Download ist ein Fall, in dem diese Pakete jemandem geholfen haben, etwas Bedeutungsvolles zu bauen, von Hobbyprojekten bis hin zu Unternehmensanwendungen, die von Millionen genutzt werden.
Tägliche Wirkung im großen Maßstab
Die täglichen Downloadmuster zeigen eine konstante, hochvolumige Nutzung, mit Spitzenwerten von mehreren Millionen Downloads pro Tag[22]. Diese Beständigkeit spricht für die Stabilität und Zuverlässigkeit dieser Pakete – Entwickler probieren sie nicht nur aus, sie integrieren sie in ihre Kernarbeitsabläufe und verlassen sich Tag für Tag darauf.
Wöchentliche Downloadmuster zeigen noch beeindruckendere Zahlen, die konstant im Bereich von mehreren zehn Millionen Downloads pro Woche liegen[23]. Dies stellt eine massive Präsenz im JavaScript-Ökosystem dar, mit diesen Paketen, die in Produktionsumgebungen weltweit eingesetzt werden.
Über die reinen Zahlen hinaus
Während die Downloadstatistiken für sich genommen beeindruckend sind, erzählen sie eine tiefere Geschichte über das Vertrauen, das die Community in diese Pakete setzt. Die Pflege von Paketen in diesem Umfang erfordert ein unerschütterliches Engagement für:
- Abwärtskompatibilität: Änderungen müssen sorgfältig abgewogen werden, um bestehende Implementierungen nicht zu brechen.
- Sicherheit: Da Millionen von Anwendungen auf diese Pakete angewiesen sind, könnten Sicherheitslücken weitreichende Folgen haben.
- Performance: In diesem Maßstab können selbst kleine Leistungsverbesserungen erhebliche kumulative Vorteile bringen.
- Dokumentation: Klare, umfassende Dokumentation ist unerlässlich für Pakete, die von Entwicklern aller Erfahrungsstufen genutzt werden.
Das stetige Wachstum der Downloadzahlen im Laufe der Zeit spiegelt den Erfolg wider, diese Verpflichtungen zu erfüllen und durch zuverlässige, gut gepflegte Pakete Vertrauen in der Entwickler-Community aufzubauen.
Unterstützung des Ökosystems: Unsere Open-Source-Sponsorings
Tip
Nachhaltigkeit im Open Source Bereich bedeutet nicht nur, Code beizutragen – es geht auch darum, die Entwickler zu unterstützen, die kritische Infrastruktur pflegen.
Neben unseren direkten Beiträgen zum JavaScript-Ökosystem sind wir stolz darauf, prominente Node.js-Mitwirkende zu sponsern, deren Arbeit die Grundlage vieler moderner Anwendungen bildet. Unsere Sponsorings umfassen:
Andris Reinman: Pionier der E-Mail-Infrastruktur
Andris Reinman ist der Schöpfer von Nodemailer, der beliebtesten Bibliothek zum Versenden von E-Mails für Node.js mit über 14 Millionen wöchentlichen Downloads[24]. Seine Arbeit erstreckt sich auf weitere kritische Komponenten der E-Mail-Infrastruktur wie SMTP Server, Mailparser und WildDuck.
Unser Sponsoring hilft, die fortlaufende Wartung und Entwicklung dieser essenziellen Werkzeuge sicherzustellen, die die E-Mail-Kommunikation für unzählige Node.js-Anwendungen ermöglichen, einschließlich unseres eigenen Forward Email-Dienstes.
Sindre Sorhus: Mastermind der Utility-Pakete
Sindre Sorhus ist einer der produktivsten Open-Source-Beitragsleistenden im JavaScript-Ökosystem mit über 1.000 npm-Paketen auf seinem Konto. Seine Utilities wie p-map, p-retry und is-stream sind grundlegende Bausteine, die im gesamten Node.js-Ökosystem verwendet werden.
Durch die Unterstützung von Sindres Arbeit tragen wir zur nachhaltigen Entwicklung dieser wichtigen Utilities bei, die die JavaScript-Entwicklung effizienter und zuverlässiger machen.
Diese Sponsorings spiegeln unser Engagement für das breitere Open-Source-Ökosystem wider. Wir erkennen an, dass unser eigener Erfolg auf dem Fundament beruht, das diese und andere Mitwirkende gelegt haben, und wir setzen uns dafür ein, die Nachhaltigkeit des gesamten Ökosystems zu gewährleisten.
Aufdeckung von Sicherheitslücken im JavaScript-Ökosystem
Unser Engagement für Open Source geht über die Feature-Entwicklung hinaus und umfasst die Identifizierung und Behebung von Sicherheitslücken, die Millionen von Entwicklern betreffen könnten. Einige unserer bedeutendsten Beiträge zum JavaScript-Ökosystem liegen im Bereich Sicherheit.
Die Rettung des Koa-Routers
Im Februar 2019 entdeckte Nick ein kritisches Problem bei der Wartung des beliebten koa-router-Pakets. Wie er auf Hacker News berichtete, war das Paket vom ursprünglichen Maintainer aufgegeben worden, wodurch Sicherheitslücken unbehandelt blieben und die Community keine Updates erhielt.
Warning
Aufgegebene Pakete mit Sicherheitslücken stellen erhebliche Risiken für das gesamte Ökosystem dar, besonders wenn sie millionenfach wöchentlich heruntergeladen werden.
Als Reaktion darauf erstellte Nick @koa/router und half, die Community über die Situation zu informieren. Seitdem pflegt er dieses kritische Paket und stellt sicher, dass Koa-Nutzer eine sichere, gut gewartete Routing-Lösung haben.
Behebung von ReDoS-Sicherheitslücken
Im Jahr 2020 identifizierte und behob Nick eine kritische Regular Expression Denial of Service (ReDoS)-Sicherheitslücke im weit verbreiteten url-regex-Paket. Diese Schwachstelle (SNYK-JS-URLREGEX-569472) konnte Angreifern ermöglichen, durch speziell gestaltete Eingaben einen Denial of Service zu verursachen, indem sie katastrophales Backtracking im regulären Ausdruck auslösten.
Anstatt das bestehende Paket nur zu patchen, entwickelte Nick url-regex-safe, eine komplett neu geschriebene Implementierung, die die Schwachstelle behebt und gleichzeitig mit der ursprünglichen API kompatibel bleibt. Außerdem veröffentlichte er einen umfassenden Blogbeitrag, der die Sicherheitslücke erklärt und zeigt, wie man sie mindert.
Diese Arbeit zeigt unseren Ansatz zur Sicherheit: nicht nur Probleme zu beheben, sondern die Gemeinschaft zu informieren und robuste Alternativen bereitzustellen, die ähnliche Probleme in der Zukunft verhindern.
Einsatz für Node.js- und Chromium-Sicherheit
Nick war auch aktiv darin, Verbesserungen der Sicherheit im weiteren Ökosystem zu fördern. Im August 2020 identifizierte er ein bedeutendes Sicherheitsproblem in Node.js im Zusammenhang mit der Verarbeitung von HTTP-Headern, das in The Register berichtet wurde.
Dieses Problem, das auf einen Patch in Chromium zurückging, konnte potenziell Angreifern erlauben, Sicherheitsmaßnahmen zu umgehen. Nicks Einsatz half sicherzustellen, dass das Problem schnell behoben wurde, wodurch Millionen von Node.js-Anwendungen vor möglicher Ausnutzung geschützt wurden.
Absicherung der npm-Infrastruktur
Im selben Monat entdeckte Nick ein weiteres kritisches Sicherheitsproblem, diesmal in der E-Mail-Infrastruktur von npm. Wie in The Register berichtet, implementierte npm die E-Mail-Authentifizierungsprotokolle DMARC, SPF und DKIM nicht korrekt, was Angreifern potenziell erlaubte, Phishing-E-Mails zu versenden, die scheinbar von npm stammten.
Nicks Bericht führte zu Verbesserungen in der E-Mail-Sicherheitslage von npm, wodurch die Millionen von Entwicklern, die npm für das Paketmanagement nutzen, vor möglichen Phishing-Angriffen geschützt wurden.
Unsere Beiträge zum Forward Email-Ökosystem
Forward Email basiert auf mehreren wichtigen Open-Source-Projekten, darunter Nodemailer, WildDuck und mailauth. Unser Team hat bedeutende Beiträge zu diesen Projekten geleistet und dabei geholfen, tiefgreifende Probleme zu identifizieren und zu beheben, die die E-Mail-Zustellung und Sicherheit betreffen.
Verbesserung der Kernfunktionalität von Nodemailer
Nodemailer ist das Rückgrat des E-Mail-Versands in Node.js, und unsere Beiträge haben dazu beigetragen, es robuster zu machen:
- Verbesserungen des SMTP-Servers: Wir haben Parsing-Fehler, Probleme bei der Stream-Verarbeitung und TLS-Konfigurationsprobleme in der SMTP-Server-Komponente behoben[25][26].
- Verbesserungen des Mail-Parsers: Wir haben Fehler bei der Dekodierung von Zeichenfolgen und Probleme im Adressparser behoben, die zu Fehlern bei der E-Mail-Verarbeitung führen konnten[27][28].
Diese Beiträge stellen sicher, dass Nodemailer eine zuverlässige Grundlage für die E-Mail-Verarbeitung in Node.js-Anwendungen bleibt, einschließlich Forward Email.
Fortschritte bei der E-Mail-Authentifizierung mit Mailauth
Mailauth bietet wichtige Funktionen zur E-Mail-Authentifizierung, und unsere Beiträge haben seine Fähigkeiten deutlich verbessert:
- Verbesserungen der DKIM-Verifikation: Wir entdeckten und meldeten, dass X/Twitter DNS-Cache-Probleme hatte, die zu DKIM-Fehlern bei ausgehenden Nachrichten führten, und meldeten dies bei Hacker One[29].
- Verbesserungen bei DMARC und ARC: Wir haben Probleme bei der Verifikation von DMARC und ARC behoben, die zu falschen Authentifizierungsergebnissen führen konnten[30][31].
- Leistungsoptimierungen: Wir haben Optimierungen beigetragen, die die Leistung der E-Mail-Authentifizierungsprozesse verbessern[32][33][34][35].
Diese Verbesserungen helfen sicherzustellen, dass die E-Mail-Authentifizierung genau und zuverlässig ist und Benutzer vor Phishing- und Spoofing-Angriffen schützt.
Wichtige Verbesserungen bei Upptime
Unsere Beiträge zu Upptime umfassen:
- Überwachung von SSL-Zertifikaten: Wir haben eine Funktion hinzugefügt, um das Ablaufdatum von SSL-Zertifikaten zu überwachen und so unerwartete Ausfallzeiten durch abgelaufene Zertifikate zu verhindern[36].
- Unterstützung mehrerer SMS-Nummern: Wir haben die Unterstützung für Benachrichtigungen an mehrere Teammitglieder per SMS bei Vorfällen implementiert, was die Reaktionszeiten verbessert[37].
- Fehlerbehebungen bei IPv6-Checks: Wir haben Probleme bei der Überprüfung der IPv6-Konnektivität behoben, um eine genauere Überwachung in modernen Netzwerkumgebungen zu gewährleisten[38].
- Unterstützung für Dunkel-/Hellmodus: Wir haben Theme-Unterstützung hinzugefügt, um die Benutzererfahrung von Statusseiten zu verbessern[39].
- Verbesserte TCP-Ping-Unterstützung: Wir haben die TCP-Ping-Funktionalität verbessert, um zuverlässigere Verbindungstests zu ermöglichen[40]. Diese Verbesserungen kommen nicht nur der Statusüberwachung von Forward Email zugute, sondern stehen der gesamten Community der Upptime-Nutzer zur Verfügung und zeigen unser Engagement für die Verbesserung der Werkzeuge, auf die wir angewiesen sind.
Der Klebstoff, der alles zusammenhält: Maßgeschneiderter Code in großem Maßstab
Während unsere npm-Pakete und Beiträge zu bestehenden Projekten bedeutend sind, ist es der maßgeschneiderte Code, der diese Komponenten integriert und unsere technische Expertise wirklich unter Beweis stellt. Der Forward Email-Codebestand repräsentiert ein Jahrzehnt Entwicklungsarbeit, die bis ins Jahr 2017 zurückreicht, als das Projekt als free-email-forwarding begann, bevor es in ein Monorepo zusammengeführt wurde.
Ein gewaltiger Entwicklungsaufwand
Das Ausmaß dieses maßgeschneiderten Integrationscodes ist beeindruckend:
- Gesamtbeiträge: Über 3.217 Commits
- Codebasis-Größe: Über 421.545 Codezeilen in JavaScript-, Pug-, CSS- und JSON-Dateien[^33]
Dies entspricht Tausenden von Entwicklungsstunden, Debugging-Sitzungen und Performance-Optimierungen. Es ist die „geheime Zutat“, die einzelne Pakete in einen kohärenten, zuverlässigen Dienst verwandelt, der täglich von Tausenden von Kunden genutzt wird.
Integration der Kernabhängigkeiten
Der Forward Email-Codebestand integriert zahlreiche Abhängigkeiten zu einem nahtlosen Ganzen:
- E-Mail-Verarbeitung: Integriert Nodemailer zum Senden, SMTP Server zum Empfangen und Mailparser zum Parsen
- Authentifizierung: Verwendet Mailauth für DKIM-, SPF-, DMARC- und ARC-Verifizierung
- DNS-Auflösung: Nutzt Tangerine für DNS-over-HTTPS mit globalem Caching
- MX-Verbindung: Verwendet mx-connect mit Tangerine-Integration für zuverlässige Mailserver-Verbindungen
- Job-Scheduling: Setzt Bree für zuverlässige Hintergrundaufgaben mit Worker Threads ein
- Templating: Verwendet email-templates, um Stylesheets von der Website in Kundenkommunikationen wiederzuverwenden
- E-Mail-Speicherung: Implementiert individuell verschlüsselte SQLite-Mailboxen mit better-sqlite3-multiple-ciphers und ChaCha20-Poly1305-Verschlüsselung für quantensichere Privatsphäre, die vollständige Isolation zwischen Nutzern gewährleistet und sicherstellt, dass nur der Nutzer Zugriff auf seine Mailbox hat
Jede dieser Integrationen erfordert sorgfältige Berücksichtigung von Randfällen, Performance-Auswirkungen und Sicherheitsaspekten. Das Ergebnis ist ein robustes System, das Millionen von E-Mail-Transaktionen zuverlässig verarbeitet. Unsere SQLite-Implementierung nutzt außerdem msgpackr für effiziente binäre Serialisierung und WebSockets (über ws) für Echtzeit-Statusupdates in unserer Infrastruktur.
DNS-Infrastruktur mit Tangerine und mx-connect
Ein kritischer Bestandteil der Forward Email-Infrastruktur ist unser DNS-Auflösungssystem, das auf zwei Schlüsselpaketen basiert:
-
Tangerine: Unsere Node.js-DNS-over-HTTPS-Implementierung bietet einen Drop-in-Ersatz für den Standard-DNS-Resolver mit eingebauten Wiederholungen, Timeouts, intelligenter Serverrotation und Caching-Unterstützung.
-
mx-connect: Dieses Paket stellt TCP-Verbindungen zu MX-Servern her, nimmt eine Ziel-Domain oder E-Mail-Adresse, löst die passenden MX-Server auf und verbindet sich in Prioritätsreihenfolge mit ihnen.
Wir haben Tangerine mit mx-connect durch Pull Request #4 integriert, um DNS-over-HTTP-Anfragen auf Anwendungsebene in Forward Email sicherzustellen. Dies ermöglicht globales DNS-Caching im großen Maßstab mit 1:1-Konsistenz über jede Region, App oder jeden Prozess hinweg – entscheidend für zuverlässige E-Mail-Zustellung in einem verteilten System.
Unternehmenswirkung: Von Open Source zu geschäftskritischen Lösungen
Der Höhepunkt unserer zehnjährigen Reise in der Open-Source-Entwicklung hat es Forward Email ermöglicht, nicht nur einzelne Entwickler, sondern auch große Unternehmen und Bildungseinrichtungen zu bedienen, die das Rückgrat der Open-Source-Bewegung selbst bilden.
Fallstudien zur unternehmenskritischen E-Mail-Infrastruktur
Unser Engagement für Zuverlässigkeit, Datenschutz und Open-Source-Prinzipien hat Forward Email zur vertrauenswürdigen Wahl für Organisationen mit anspruchsvollen E-Mail-Anforderungen gemacht:
-
Bildungseinrichtungen: Wie in unserer Fallstudie zum Alumni-E-Mail-Weiterleitung beschrieben, verlassen sich große Universitäten auf unsere Infrastruktur, um lebenslange Verbindungen mit Hunderttausenden von Alumni durch zuverlässige E-Mail-Weiterleitungsdienste aufrechtzuerhalten.
-
Enterprise-Linux-Lösungen: Die Canonical Ubuntu E-Mail Enterprise-Fallstudie zeigt, wie unser Open-Source-Ansatz perfekt mit den Bedürfnissen von Enterprise-Linux-Anbietern übereinstimmt und ihnen die Transparenz und Kontrolle bietet, die sie benötigen.
-
Open-Source-Stiftungen: Vielleicht am aussagekräftigsten ist unsere Partnerschaft mit der Linux Foundation, wie in der Linux Foundation E-Mail Enterprise-Fallstudie dokumentiert, bei der unser Dienst die Kommunikation für genau die Organisation unterstützt, die die Linux-Entwicklung betreut.
Es gibt eine schöne Symmetrie darin, wie unsere Open-Source-Pakete, die über viele Jahre mit Sorgfalt gepflegt wurden, es uns ermöglicht haben, einen E-Mail-Dienst aufzubauen, der nun genau die Gemeinschaften und Organisationen unterstützt, die Open-Source-Software fördern. Diese vollständige Kreisreise – vom Beitrag einzelner Pakete bis hin zur Bereitstellung einer E-Mail-Infrastruktur auf Unternehmensniveau für Open-Source-Führer – stellt die ultimative Bestätigung unseres Ansatzes zur Softwareentwicklung dar.
Ein Jahrzehnt Open Source: Ein Blick nach vorn
Wenn wir auf ein Jahrzehnt Open-Source-Beiträge zurückblicken und auf die nächsten zehn Jahre vorausblicken, sind wir voller Dankbarkeit für die Gemeinschaft, die unsere Arbeit unterstützt hat, und voller Vorfreude auf das, was noch kommt.
Unsere Reise vom einzelnen Paketbeitragenden zu Maintainer einer umfassenden E-Mail-Infrastruktur, die von großen Unternehmen und Open-Source-Stiftungen genutzt wird, war bemerkenswert. Sie ist ein Beweis für die Kraft der Open-Source-Entwicklung und den Einfluss, den durchdachte, gut gepflegte Software auf das breitere Ökosystem haben kann.
In den kommenden Jahren verpflichten wir uns dazu:
- Unsere bestehenden Pakete weiterhin zu pflegen und zu verbessern, um sicherzustellen, dass sie zuverlässige Werkzeuge für Entwickler weltweit bleiben.
- Unsere Beiträge zu kritischen Infrastrukturprojekten auszuweiten, insbesondere in den Bereichen E-Mail und Sicherheit.
- Die Fähigkeiten von Forward Email zu erweitern, während wir unser Engagement für Datenschutz, Sicherheit und Transparenz beibehalten.
- Die nächste Generation von Open-Source-Beitragenden zu unterstützen durch Mentoring, Sponsoring und Community-Engagement.
Wir glauben, dass die Zukunft der Softwareentwicklung offen, kollaborativ und auf einer Vertrauensbasis aufgebaut ist. Indem wir weiterhin hochwertige, sicherheitsorientierte Pakete zum JavaScript-Ökosystem beitragen, hoffen wir, einen kleinen Beitrag zum Aufbau dieser Zukunft zu leisten.
Danke an alle, die unsere Pakete genutzt, zu unseren Projekten beigetragen, Probleme gemeldet oder einfach nur unsere Arbeit weiterempfohlen haben. Eure Unterstützung hat dieses Jahrzehnt des Einflusses möglich gemacht, und wir sind gespannt, was wir in den nächsten zehn Jahren gemeinsam erreichen können.
npm Download-Statistiken für cabin, April 2025 ↩︎
npm Download-Statistiken für bson-objectid, Februar-März 2025 ↩︎
npm Download-Statistiken für url-regex-safe, April 2025 ↩︎
GitHub-Sterne für forwardemail/forwardemail.net im April 2025 ↩︎
npm Download-Statistiken für preview-email, April 2025 ↩︎
npm Download-Statistiken für superagent, Februar-März 2025 ↩︎
npm Download-Statistiken für supertest, Februar-März 2025 ↩︎
npm Download-Statistiken für koa, Februar-März 2025 ↩︎
npm Download-Statistiken für @koa/router, Februar-März 2025 ↩︎
npm Download-Statistiken für koa-router, Februar-März 2025 ↩︎
npm Download-Statistiken für url-regex, Februar-März 2025 ↩︎
npm Download-Statistiken für preview-email, Februar-März 2025 ↩︎
npm Download-Statistiken für cabin, Februar-März 2025 ↩︎
npm Download-Statistiken für @breejs/later, Februar-März 2025 ↩︎
npm Download-Statistiken für email-templates, Februar-März 2025 ↩︎
npm Download-Statistiken für get-paths, Februar-März 2025 ↩︎
npm Download-Statistiken für url-regex-safe, Februar-März 2025 ↩︎
npm Download-Statistiken für dotenv-parse-variables, Februar-März 2025 ↩︎
npm Download-Statistiken für @koa/multer, Februar-März 2025 ↩︎
npm Download-Statistiken für spamscanner, Februar-März 2025 ↩︎
npm Download-Statistiken für bree, Februar-März 2025 ↩︎
Tägliche Download-Muster aus npm-Statistiken, April 2025 ↩︎
Wöchentliche Download-Muster aus npm-Statistiken, April 2025 ↩︎
npm Download-Statistiken für nodemailer, April 2025 ↩︎
https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min ↩︎
Basierend auf GitHub-Issues im Upptime-Repository ↩︎
Basierend auf GitHub-Issues im Upptime-Repository ↩︎
Basierend auf GitHub-Issues im Upptime-Repository ↩︎
Basierend auf GitHub-Pull-Requests zu Upptime ↩︎
Basierend auf GitHub-Pull-Requests zu Upptime ↩︎