Een decennium van impact: hoe onze npm-pakketten 1 miljard downloads bereikten en JavaScript vormgaven

In de javascript en Node.js Sommige pakketten zijn essentieel: ze worden dagelijks miljoenen keren gedownload en vormen de basis voor apps wereldwijd. Achter deze tools zitten ontwikkelaars die zich richten op open source-kwaliteit. Vandaag laten we zien hoe ons team helpt bij het bouwen en onderhouden van npm-pakketten die belangrijke onderdelen van het JavaScript-ecosysteem zijn geworden.

De pioniers die ons vertrouwen: Isaac Z. Schlueter en Forward Email

We zijn er trots op dat we Isaac Z. Schlueter (GitHub: isaacs) als gebruiker. Isaac creëerde boven zeeniveau en hielp bouwen Node.jsZijn vertrouwen in Forward Email bewijst onze focus op kwaliteit en veiligheid. Isaac gebruikt Forward Email voor verschillende domeinen, waaronder izs.me.

Isaacs impact op JavaScript is enorm. In 2009 was hij een van de eersten die de potentie van Node.js zag, door samen te werken met Ryan Dahl, die het platform creëerde. Zoals Isaac zei in een interview met Increment magazine: "Te midden van deze zeer kleine community van een groep mensen die probeerden uit te vinden hoe ze server-side JS konden realiseren, kwam Ryan Dahl met Node, wat gewoonweg de juiste aanpak was. Ik heb mijn steentje daaraan bijgedragen en raakte er halverwege 2009 erg bij betrokken."

[!NOTE] Voor degenen die geïnteresseerd zijn in de geschiedenis van Node.js, zijn er uitstekende documentaires beschikbaar die de ontwikkeling ervan beschrijven, waaronder Het verhaal van Node.js en 10 dingen waar ik spijt van heb over Node.js - Ryan Dahl. Ryan Dahl's persoonlijke website bevat ook waardevolle inzichten in zijn werk.

Van de creatie van npm tot Node.js-leiderschap

Isaac creëerde npm in september 2009, met de eerste bruikbare versie begin 2010. Deze pakketbeheerder voorzag in een belangrijke behoefte in Node.js, waardoor ontwikkelaars eenvoudig code konden delen en hergebruiken. Volgens de Node.js Wikipedia-paginaIn januari 2010 werd een pakketbeheerder geïntroduceerd voor de Node.js-omgeving, genaamd npm. De pakketbeheerder stelt programmeurs in staat om Node.js-pakketten te publiceren en te delen, inclusief de bijbehorende broncode, en is ontworpen om de installatie, update en de-installatie van pakketten te vereenvoudigen.

Toen Ryan Dahl in januari 2012 afscheid nam van Node.js, nam Isaac het over als projectleider. Zoals vermeld op zijn samenvattingHij "leidde de ontwikkeling van verschillende fundamentele Node.js kern-API's, waaronder het CommonJS-modulesysteem, bestandssysteem-API's en streams" en "fungeerde 2 jaar lang als BDFL (Benevolent Dictator For Life) van het project, waardoor de kwaliteit en het betrouwbare bouwproces voor Node.js-versies v0.6 tot en met v0.10 steeds verder toenamen."

Isaac loodste Node.js door een belangrijke groeiperiode en zette standaarden die het platform vandaag de dag nog steeds vormgeven. Later, in 2014, richtte hij npm, Inc. op ter ondersteuning van de npm-registry, die hij voorheen zelfstandig had gerund.

We danken Isaac voor zijn enorme bijdragen aan JavaScript en gebruiken nog steeds veel van de pakketten die hij heeft ontwikkeld. Zijn werk heeft de manier waarop we software bouwen en de manier waarop miljoenen ontwikkelaars wereldwijd code delen, veranderd.

De architect achter de code: Nick Baughs reis

De kern van ons open source-succes is Nick Baugh, oprichter en eigenaar van Forward Email. Hij werkt al bijna 20 jaar in JavaScript en heeft de manier waarop talloze ontwikkelaars apps bouwen, vormgegeven. Zijn open source-avontuur getuigt van zowel technische vaardigheden als leiderschap in de community.

Express Technisch Comité en kernbijdragen

Nick's expertise op het gebied van webframeworks leverde hem een plek op de Express Technisch Comité, waar hij hielp met een van de meest gebruikte Node.js-frameworks. Nick staat nu vermeld als inactief lid op de Express communitypagina.

[!BELANGRIJK] Express is oorspronkelijk ontwikkeld door TJ Holowaychuk, een productieve open-sourcebijdrager die een groot deel van het Node.js-ecosysteem heeft vormgegeven. We zijn TJ dankbaar voor zijn fundamentele werk en respecteren zijn besluit om een pauze te nemen van zijn uitgebreide open source-bijdragen.

Als lid van de Express Technisch ComitéNick toonde veel aandacht voor details bij zaken als het verduidelijken req.originalUrl documentatie en het oplossen van problemen met de verwerking van meerdelige formulieren.

Koa Framework-bijdragen

Nick's werk met de Koa-framework—een modern, lichter alternatief voor Express, eveneens ontwikkeld door TJ Holowaychuk—betuigt verder zijn toewijding aan betere tools voor webontwikkeling. Zijn bijdragen aan Koa omvatten zowel problemen als code via pull requests, waarbij hij ingaat op foutverwerking, contenttypebeheer en verbeteringen in de documentatie.

Dankzij zijn werk bij zowel Express als Koa heeft hij een uniek inzicht in Node.js webontwikkeling. Hierdoor kan ons team pakketten creëren die goed samenwerken met meerdere framework-ecosystemen.

Van individuele bijdrager tot organisatieleider

Wat begon als het helpen van bestaande projecten, groeide uit tot het creëren en onderhouden van complete pakketecosystemen. Nick richtte meerdere GitHub-organisaties op, waaronder Cabine, Spamscanner, E-mail doorsturen, Laat, en Bree—elk met een oplossing voor specifieke behoeften binnen de JavaScript-community.

Deze verschuiving van bijdrager naar leider toont Nicks visie op goed ontworpen software die echte problemen oplost. Door gerelateerde pakketten te organiseren onder specifieke GitHub-organisaties, heeft hij tool-ecosystemen gebouwd die samenwerken en tegelijkertijd modulair en flexibel blijven voor de bredere ontwikkelaarscommunity.

Onze GitHub-organisaties: ecosystemen van innovatie

We organiseren ons open source-werk rond gerichte GitHub-organisaties, die elk specifieke JavaScript-behoeften vervullen. Deze structuur creëert samenhangende pakketfamilies die goed samenwerken en toch modulair blijven.

Cabine: Gestructureerde houtkap voor moderne toepassingen

De Cabine organisatie is onze kijk op eenvoudige, krachtige app-logging. De belangrijkste cabin Het pakket heeft bijna 900 GitHub-sterren en meer dan 100.000 wekelijkse downloads[^1]. Cabin biedt gestructureerde logging die werkt met populaire services zoals Sentry, LogDNA en Papertrail.

Wat Cabin bijzonder maakt, is het doordachte API- en pluginsysteem. Ondersteunende pakketten zoals axe voor Express-middleware en parse-request voor het parsen van HTTP-verzoeken laten we zien dat we streven naar complete oplossingen in plaats van geïsoleerde tools.

De bson-objectid Dit pakket verdient een speciale vermelding, met meer dan 1,7 miljoen downloads in slechts twee maanden[^2]. Deze lichte MongoDB ObjectID-implementatie is dé oplossing geworden voor ontwikkelaars die ID's nodig hebben zonder volledige MongoDB-afhankelijkheden.

Spamscanner: e-mailmisbruik bestrijden

De Spam Scanner organisatie toont onze toewijding aan het oplossen van echte problemen. De belangrijkste spamscanner pakket biedt geavanceerde e-mailspamdetectie, maar het is de url-regex-safe pakket dat enorm succesvol is gebleken.

Met meer dan 1,2 miljoen downloads in twee maanden[^3], url-regex-safe lost kritieke beveiligingsproblemen op in andere reguliere expressies voor URL-detectie. Dit pakket toont onze aanpak van open source: het vinden van een veelvoorkomend probleem (in dit geval Opnieuw doen kwetsbaarheden in URL-validatie), het creëren van een solide oplossing en het zorgvuldig onderhouden ervan.

Bree: Moderne taakplanning met werkthreads

De Bree-organisatie is ons antwoord op een veelvoorkomende Node.js-uitdaging: betrouwbare taakplanning. De belangrijkste bree pakket, met meer dan 3.100 GitHub-sterren, biedt een moderne taakplanner die Node.js-werkthreads gebruikt voor betere prestaties en betrouwbaarheid.

[!NOTE] Bree is ontstaan nadat we hebben geholpen bij het onderhouden Agenda, waarbij we de geleerde lessen toepassen om een betere taakplanner te bouwen. Onze bijdragen aan de Agenda hebben ons geholpen manieren te vinden om de taakplanning te verbeteren.

Wat maakt Bree anders dan andere planners zoals Agenda:

  • Geen externe afhankelijkheden: In tegenstelling tot Agenda, waarvoor MongoDB nodig is, heeft Bree geen Redis of MongoDB nodig om de taakstatus te beheren.
  • Werker Threads:Bree gebruikt Node.js-werkthreads voor sandbox-processen, wat zorgt voor betere isolatie en prestaties.
  • Eenvoudige API:Bree biedt gedetailleerde controle met eenvoud, waardoor het eenvoudiger is om complexe planningsbehoeften te implementeren.
  • Ingebouwde ondersteuning:Dingen zoals graceful reloading, cronjobs, datums en mensvriendelijke tijden zijn standaard inbegrepen.

Bree is een belangrijk onderdeel van forwardemail.net, waarmee kritieke achtergrondtaken zoals e-mailverwerking, opschoning en gepland onderhoud worden afgehandeld. Het gebruik van Bree in Forward Email toont onze toewijding aan het gebruik van onze eigen tools in productie, zodat deze voldoen aan hoge betrouwbaarheidsnormen.

We gebruiken en waarderen ook andere geweldige workerthread-pakketten zoals zwembad en HTTP-clients zoals elfPiscina gebruikt, net als Bree, Node.js-werkthreads voor efficiënte taakverwerking. We danken Matthew Hill, die zowel undici als piscina onderhoudt, voor zijn belangrijke bijdragen aan Node.js. Matteo is lid van de Technische Stuurgroep van Node.js en heeft de mogelijkheden van HTTP-clients in Node.js aanzienlijk verbeterd.

E-mail doorsturen: open source e-mailinfrastructuur

Ons meest ambitieuze project is E-mail doorsturen, een open-source e-mailservice die e-maildoorsturing, opslag en API-services biedt. De hoofdrepository heeft meer dan 1100 GitHub-sterren[^4], wat de waardering van de community voor dit alternatief voor propriëtaire e-mailservices aantoont.

De preview-email Het pakket van deze organisatie, met meer dan 2,5 miljoen downloads in twee maanden[^5], is een essentiële tool geworden voor ontwikkelaars die met e-mailsjablonen werken. Door een eenvoudige manier te bieden om e-mails te bekijken tijdens de ontwikkeling, lost het een veelvoorkomend probleem op bij het bouwen van e-mailapplicaties.

Lad: Essentiële Koa-hulpprogramma's en -tools

De Jongensorganisatie Biedt een verzameling essentiële hulpprogramma's en tools die primair gericht zijn op het verbeteren van het Koa-frameworkecosysteem. Deze pakketten lossen veelvoorkomende uitdagingen in webontwikkeling op en zijn ontworpen om naadloos samen te werken en toch onafhankelijk van elkaar bruikbaar te blijven.

koa-better-error-handler: verbeterde foutafhandeling voor Koa

koa-better-error-handler biedt een betere oplossing voor foutverwerking voor Koa-applicaties. Met meer dan 50 GitHub-sterren maakt dit pakket ctx.throw gebruikersvriendelijke foutmeldingen genereren en tegelijkertijd een aantal beperkingen van Koa's ingebouwde foutbehandelaar aanpakken:

  • Detecteert en verwerkt Node.js DNS-fouten, Mongoose-fouten en Redis-fouten op de juiste manier
  • Gebruik Boom voor het creëren van consistente, goed geformatteerde foutreacties
  • Behoudt headers (in tegenstelling tot de ingebouwde handler van Koa)
  • Handhaaft de juiste statuscodes in plaats van standaard 500
  • Ondersteunt flashberichten en sessiebehoud
  • Biedt HTML-foutlijsten voor validatiefouten
  • Ondersteunt meerdere antwoordtypen (HTML, JSON en platte tekst)

Dit pakket is vooral waardevol in combinatie met koa-404-handler voor uitgebreid foutbeheer in Koa-applicaties.

paspoort: Authenticatie voor Lad

@ladjs/passport Breidt de populaire authenticatiemiddleware Passport.js uit met specifieke verbeteringen voor moderne webapplicaties. Dit pakket ondersteunt direct meerdere authenticatiestrategieën:

  • Lokale authenticatie met e-mail
  • Log in met Apple
  • GitHub-authenticatie
  • Google-authenticatie
  • Authenticatie met eenmalig wachtwoord (OTP)

Het pakket is zeer aanpasbaar, waardoor ontwikkelaars veldnamen en -zinnen kunnen aanpassen aan de vereisten van hun applicatie. Het is ontworpen om naadloos te integreren met Mongoose voor gebruikersbeheer, waardoor het een ideale oplossing is voor Koa-gebaseerde applicaties die robuuste authenticatie vereisen.

sierlijk: elegante afsluiting van applicaties

@ladjs/graceful Lost de kritieke uitdaging op van het netjes afsluiten van Node.js-applicaties. Met meer dan 70 GitHub-sterren zorgt dit pakket ervoor dat je applicatie netjes kan worden afgesloten zonder gegevensverlies of vastgelopen verbindingen. Belangrijkste kenmerken:

  • Ondersteuning voor het netjes sluiten van HTTP-servers (Express/Koa/Fastify)
  • Schone afsluiting van databaseverbindingen (MongoDB/Mongoose)
  • Correcte afsluiting van Redis-clients
  • Afhandeling van Bree-jobplanners
  • Ondersteuning voor aangepaste shutdown-handlers
  • Configureerbare time-outinstellingen
  • Integratie met logsystemen

Dit pakket is essentieel voor productietoepassingen waarbij onverwachte afsluitingen kunnen leiden tot gegevensverlies of -corruptie. Door de juiste afsluitprocedures te implementeren, @ladjs/graceful zorgt voor de betrouwbaarheid en stabiliteit van uw applicatie.

Upptime: Open Source Uptime Monitoring

De Upptime-organisatie vertegenwoordigt onze toewijding aan transparante, open source monitoring. De belangrijkste upptime De repository heeft meer dan 13.000 GitHub-sterren, wat het een van de populairste projecten maakt waaraan we bijdragen. Upptime biedt een door GitHub aangestuurde uptimemonitor en statuspagina die volledig zonder server werkt.

Wij gebruiken Upptime voor onze eigen statuspagina op https://status.forwardemail.net met de broncode beschikbaar op https://github.com/forwardemail/status.forwardemail.net.

Wat Upptime bijzonder maakt, is de architectuur:

  • 100% open source:Elk onderdeel is volledig open source en aanpasbaar.
  • Aangedreven door GitHub: Maakt gebruik van GitHub Actions, Issues en Pages voor een serverloze monitoringoplossing.
  • Geen server vereist:In tegenstelling tot traditionele monitoringtools hoeft u bij Upptime geen server te beheren of te onderhouden.
  • Automatische statuspagina: Genereert een mooie statuspagina die kan worden gehost op GitHub Pages.
  • Krachtige meldingen: Integreert met verschillende meldingskanalen, waaronder e-mail, sms en Slack.

Om de ervaring van onze gebruikers te verbeteren, hebben we geïntegreerd @octokit/core in de codebase van forwardemail.net om realtime statusupdates en incidenten direct op onze website weer te geven. Deze integratie biedt onze gebruikers duidelijke transparantie in geval van problemen in onze gehele stack (website, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree, enz.), met directe toastmeldingen, wijzigingen in badge-pictogrammen, waarschuwingskleuren en meer.

Met de @octokit/core-bibliotheek kunnen we realtime data uit onze Upptime GitHub-repository halen, verwerken en op een gebruiksvriendelijke manier weergeven. Wanneer een service uitvalt of de prestaties afnemen, worden gebruikers direct via visuele indicatoren op de hoogte gebracht, zonder de hoofdapplicatie te hoeven verlaten. Deze naadloze integratie zorgt ervoor dat onze gebruikers altijd over actuele informatie over de status van ons systeem beschikken, wat de transparantie en het vertrouwen vergroot.

Upptime is omarmd door honderden organisaties die op zoek zijn naar een transparante en betrouwbare manier om hun diensten te monitoren en de status ervan aan gebruikers te communiceren. Het succes van het project toont de kracht aan van het bouwen van tools die gebruikmaken van bestaande infrastructuur (in dit geval GitHub) om veelvoorkomende problemen op nieuwe manieren op te lossen.

Onze bijdragen aan het Forward Email Ecosystem

Hoewel onze opensourcepakketten wereldwijd door ontwikkelaars worden gebruikt, vormen ze ook de basis van onze eigen Forward Email-service. Deze dubbele rol – als makers én gebruikers van deze tools – geeft ons een uniek perspectief op de praktische toepassing ervan en stimuleert continue verbetering.

Van pakketten tot productie

De overgang van individuele pakketten naar een samenhangend productiesysteem vereist zorgvuldige integratie en uitbreiding. Voor Forward Email omvat dit proces:

  • Aangepaste extensies: Voortbouwen op e-mailspecifieke uitbreidingen van onze open source-pakketten die inspelen op onze unieke vereisten.
  • Integratiepatronen: Patronen ontwikkelen voor de manier waarop deze pakketten in een productieomgeving samenwerken.
  • Prestatie-optimalisaties: Prestatieknelpunten identificeren en aanpakken die alleen op grote schaal ontstaan.
  • Beveiligingsverharding: Het toevoegen van extra beveiligingslagen specifiek voor e-mailverwerking en bescherming van gebruikersgegevens.

Dit werk vertegenwoordigt duizenden uren aan ontwikkeling die verder gaan dan de kernpakketten zelf. Het resultaat is een robuuste, veilige e-mailservice die het beste van onze open source-bijdragen benut.

De feedbacklus

Misschien wel het meest waardevolle aspect van het gebruik van onze eigen pakketten in productie is de feedbacklus die het creëert. Wanneer we beperkingen of randgevallen tegenkomen in Forward Email, lossen we die niet alleen lokaal op, maar verbeteren we ook de onderliggende pakketten, wat zowel onze service als de bredere community ten goede komt.

Deze aanpak heeft geleid tot talrijke verbeteringen:

  • Bree's elegante afsluiting: De behoefte van Forward Email aan implementaties zonder downtime heeft geleid tot verbeterde mogelijkheden voor een soepele afsluiting in Bree.
  • Patroonherkenning van Spam Scanner:De spampatronen die in Forward Email zijn aangetroffen, hebben de detectiealgoritmen van Spam Scanner beïnvloed.
  • Cabin's prestatie-optimalisaties:Door grootschalige logging in de productie zijn er optimalisatiemogelijkheden in Cabin aan het licht gekomen waar alle gebruikers baat bij hebben.

Door deze positieve cyclus tussen ons open source-werk en onze productieservices in stand te houden, zorgen we ervoor dat onze pakketten praktische, in de praktijk geteste oplossingen blijven en geen theoretische implementaties.

De kernprincipes van Forward Email: een basis voor uitmuntendheid

Forward Email is ontworpen volgens een reeks kernprincipes die al onze ontwikkelingsbeslissingen sturen. Deze principes, gedetailleerd op onze websitezorgen ervoor dat onze service ontwikkelaarsvriendelijk, veilig en gericht op de privacy van de gebruiker blijft.

Altijd ontwikkelaarsvriendelijk, gericht op beveiliging en transparant

Ons belangrijkste principe is om software te creëren die ontwikkelaarsvriendelijk is en tegelijkertijd de hoogste normen voor beveiliging en privacy handhaaft. Wij geloven dat technische uitmuntendheid nooit ten koste mag gaan van gebruiksgemak, en dat transparantie vertrouwen schept binnen onze community.

Dit principe komt tot uiting in onze gedetailleerde documentatie, duidelijke foutmeldingen en open communicatie over zowel successen als uitdagingen. Door onze volledige codebase open source te maken, nodigen we uit tot onderzoek en samenwerking, wat zowel onze software als het bredere ecosysteem versterkt.

Naleving van beproefde softwareontwikkelingsprincipes

Wij hanteren een aantal gevestigde softwareontwikkelingsprincipes die hun waarde al tientallen jaren bewijzen:

  • MVC: Bezorgdheid scheiden via het Model-View-Controller-patroon
  • Unix-filosofie: Modulaire componenten creëren die één ding goed doen
  • KISS: Houd het simpel en duidelijk
  • DRY: Herhaal jezelf niet, promoot hergebruik van code
  • YAGNI:Je hebt het niet nodig, vermijd voortijdige optimalisatie
  • Twaalf Factor:Volgen van best practices voor het bouwen van moderne, schaalbare applicaties
  • Occam's scheermes: De eenvoudigste oplossing kiezen die aan de eisen voldoet
  • Dogfooding: Door uitgebreid gebruik te maken van onze eigen producten

Deze principes zijn niet zomaar theoretische concepten – ze zijn verankerd in onze dagelijkse ontwikkelpraktijken. Onze trouw aan de Unix-filosofie blijkt bijvoorbeeld uit de manier waarop we onze npm-pakketten hebben gestructureerd: kleine, gerichte modules die samen kunnen worden samengesteld om complexe problemen op te lossen.

Richten op de scrappy, bootstrapped ontwikkelaar

We richten ons specifiek op de scrappy, bootstrapped en ramen-winstgevend ontwikkelaar. Deze focus bepaalt alles, van ons prijsmodel tot onze technische beslissingen. We begrijpen de uitdagingen van het bouwen van producten met beperkte middelen, omdat we er zelf mee te maken hebben gehad.

Dit principe is met name belangrijk in onze aanpak van open source. We creëren en onderhouden pakketten die echte problemen oplossen voor ontwikkelaars zonder budget voor grote bedrijven, waardoor krachtige tools voor iedereen toegankelijk zijn, ongeacht hun middelen.

Principes in de praktijk: de Forward Email Codebase

Deze principes zijn duidelijk zichtbaar in de codebase van Forward Email. Ons package.json-bestand toont een zorgvuldige selectie van afhankelijkheden, elk gekozen om aan te sluiten bij onze kernwaarden:

  • Beveiligingsgerichte pakketten zoals mailauth voor e-mailauthenticatie
  • Ontwikkelaarsvriendelijke tools zoals preview-email voor eenvoudiger debuggen
  • Modulaire componenten zoals de verschillende p-* nutsvoorzieningen van Sindre Sorhus

Doordat we deze principes consequent in de loop der tijd hebben toegepast, hebben we een service ontwikkeld waaraan ontwikkelaars hun e-mailinfrastructuur kunnen toevertrouwen. Deze service is veilig, betrouwbaar en afgestemd op de waarden van de open source-community.

Privacy door ontwerp

Privacy is geen bijzaak of marketingfunctie voor Forward Email; het is een fundamenteel ontwerpprincipe dat elk aspect van onze service en code beïnvloedt:

  • Zero-Access-encryptieWe hebben systemen geïmplementeerd die het technisch onmogelijk maken om de e-mails van gebruikers te lezen.
  • Minimale gegevensverzameling:Wij verzamelen uitsluitend de gegevens die noodzakelijk zijn om onze dienst te verlenen, niets meer.
  • Transparant beleidOns privacybeleid is geschreven in duidelijke, begrijpelijke taal, zonder juridisch jargon.
  • Open Source VerificatieDankzij onze open source-codebase kunnen beveiligingsonderzoekers onze privacyclaims verifiëren.

Deze toewijding geldt ook voor onze open source-pakketten, die vanaf de basis zijn ontworpen met ingebouwde best practices voor beveiliging en privacy.

Duurzame open source

Wij geloven dat opensourcesoftware duurzame modellen nodig heeft om op de lange termijn te floreren. Onze aanpak omvat:

  • Commerciële ondersteuning: Wij bieden premium ondersteuning en services rondom onze open source tools.
  • Evenwichtige licentieverlening:Gebruik van licenties die zowel de vrijheden van de gebruiker als de duurzaamheid van het project beschermen.
  • Betrokkenheid van de gemeenschap: Actief samenwerken met bijdragers om een ondersteunende community op te bouwen.
  • Transparante routekaarten:We delen onze ontwikkelingsplannen zodat gebruikers hun plannen hierop kunnen afstemmen.

Door ons te richten op duurzaamheid, zorgen we ervoor dat onze open source-bijdragen in de loop van de tijd kunnen blijven groeien en verbeteren, en niet verwaarloosd worden.

De cijfers liegen niet: onze verbluffende npm-downloadstatistieken

Als we het hebben over de impact van opensourcesoftware, bieden downloadstatistieken een tastbare maatstaf voor acceptatie en vertrouwen. Veel van de pakketten die we helpen onderhouden, hebben een omvang bereikt die maar weinig opensourceprojecten ooit bereiken, met een gecombineerd aantal downloads dat in de miljarden loopt.

Top npm Packages by Downloads

[!BELANGRIJK] Hoewel we er trots op zijn dat we bijdragen aan het onderhoud van diverse veel gedownloade pakketten in het JavaScript-ecosysteem, willen we erkennen dat veel van deze pakketten oorspronkelijk door andere getalenteerde ontwikkelaars zijn ontwikkeld. Pakketten zoals superagent en supertest zijn oorspronkelijk ontwikkeld door TJ Holowaychuk, wiens productieve bijdragen aan open source een belangrijke rol hebben gespeeld bij de vormgeving van het Node.js-ecosysteem.

Een vogelperspectief op onze impact

Alleen al in de periode van twee maanden van februari tot en met maart 2025 hebben de toppakketten waaraan we hebben bijgedragen en die we hebben helpen handhaven, verbluffende downloadaantallen opgeleverd:

[!NOTE] Verschillende andere pakketten die we helpen onderhouden maar niet zelf hebben gemaakt, hebben zelfs nog hogere downloadaantallen, waaronder form-data (meer dan 738 miljoen downloads) toidentifier (meer dan 309 miljoen downloads) stackframe (116M+ downloads), en error-stack-parser (meer dan 113 miljoen downloads). We zijn vereerd dat we een bijdrage mogen leveren aan deze pakketten, met respect voor het werk van de oorspronkelijke auteurs.

Dit zijn niet alleen indrukwekkende cijfers, het zijn ook de cijfers van echte ontwikkelaars die echte problemen oplossen met code die wij helpen onderhouden. Elke download is een voorbeeld van hoe deze pakketten iemand hebben geholpen iets zinvols te bouwen, van hobbyprojecten tot bedrijfsapplicaties die door miljoenen mensen worden gebruikt.

Package Categories Distribution

Dagelijkse impact op schaal

De dagelijkse downloadpatronen laten een consistent, hoog gebruik zien, met pieken van miljoenen downloads per dag[^13]. Deze consistentie getuigt van de stabiliteit en betrouwbaarheid van deze pakketten: ontwikkelaars proberen ze niet alleen uit; ze integreren ze in hun kernworkflows en zijn er dag in dag uit afhankelijk van.

Wekelijkse downloadpatronen laten nog indrukwekkendere cijfers zien, met consistente schommelingen rond de tientallen miljoenen downloads per week[^14]. Dit vertegenwoordigt een enorme voetafdruk in het JavaScript-ecosysteem, aangezien deze pakketten in productieomgevingen over de hele wereld draaien.

Verder dan de ruwe cijfers

Hoewel de downloadstatistieken op zichzelf al indrukwekkend zijn, vertellen ze een dieper verhaal over het vertrouwen dat de community in deze pakketten stelt. Het onderhouden van pakketten op deze schaal vereist een onwrikbare toewijding aan:

  • Achterwaartse compatibiliteit:Wijzigingen moeten zorgvuldig worden overwogen om te voorkomen dat bestaande implementaties worden verstoord.
  • VeiligheidOmdat miljoenen applicaties afhankelijk zijn van deze pakketten, kunnen beveiligingsproblemen verstrekkende gevolgen hebben.
  • Prestatie:Op deze schaal kunnen zelfs kleine prestatieverbeteringen tot aanzienlijke totale voordelen leiden.
  • DocumentatieDuidelijke, uitgebreide documentatie is essentieel voor pakketten die door ontwikkelaars van alle ervaringsniveaus worden gebruikt.

De consistente groei in downloadaantallen door de tijd heen weerspiegelt het succes bij het nakomen van deze verplichtingen en het opbouwen van vertrouwen bij de ontwikkelaarscommunity via betrouwbare, goed onderhouden pakketten.

Ondersteuning van het ecosysteem: onze open source-sponsorschappen

[!TIP] Duurzaamheid van open source gaat niet alleen over het leveren van code, maar ook over het ondersteunen van ontwikkelaars die kritieke infrastructuur beheren.

Naast onze directe bijdragen aan het JavaScript-ecosysteem zijn we er trots op prominente Node.js-bijdragers te sponsoren, wier werk de basis vormt voor veel moderne applicaties. Onze sponsoring omvat:

Andris Reinman: pionier op het gebied van e-mailinfrastructuur

Andris Reinman is de maker van Opmerking mailer, de populairste e-mailverzendbibliotheek voor Node.js met meer dan 14 miljoen wekelijkse downloads[^15]. Zijn werk strekt zich uit tot andere kritieke componenten van de e-mailinfrastructuur, zoals SMTP-server, Mailparser, en Wilde eend.

Met onze sponsoring zorgen we ervoor dat deze essentiële tools, die e-mailcommunicatie mogelijk maken voor talloze Node.js-applicaties, waaronder onze eigen Forward Email-service, voortdurend worden onderhouden en ontwikkeld.

Sindre Sorhus: Hulpprogramma Mastermind

Sindre Sorhus is een van de meest productieve open source-bijdragers in het JavaScript-ecosysteem, met meer dan 1000 npm-pakketten op zijn naam. Zijn hulpprogramma's zoals p-kaart, opnieuw proberen, en is-stream zijn fundamentele bouwstenen die in het hele Node.js-ecosysteem worden gebruikt.

Door het werk van Sindre te sponsoren, dragen we bij aan de ontwikkeling van deze cruciale hulpprogramma's die de ontwikkeling van JavaScript efficiënter en betrouwbaarder maken.

Deze sponsorschappen weerspiegelen onze toewijding aan het bredere open source-ecosysteem. We erkennen dat ons eigen succes is gebaseerd op de basis die door deze en andere bijdragers is gelegd, en we zetten ons in om de duurzaamheid van het gehele ecosysteem te waarborgen.

Het ontdekken van beveiligingskwetsbaarheden in het JavaScript-ecosysteem

Onze toewijding aan open source gaat verder dan alleen de ontwikkeling van functies en omvat ook het identificeren en aanpakken van beveiligingskwetsbaarheden die miljoenen ontwikkelaars kunnen treffen. Een aantal van onze belangrijkste bijdragen aan het JavaScript-ecosysteem liggen op het gebied van beveiliging.

De Koa-Router redding

In februari 2019 constateerde Nick een kritiek probleem met het onderhoud van het populaire koa-routerpakket. Terwijl hij gerapporteerd op Hacker News, was het pakket door de oorspronkelijke beheerder in de steek gelaten, waardoor beveiligingsproblemen niet werden aangepakt en de community geen updates kreeg.

[!WARNING] Verlaten pakketten met beveiligingsproblemen vormen een aanzienlijk risico voor het hele ecosysteem, vooral wanneer ze miljoenen keren per week worden gedownload.

Als reactie hierop creëerde Nick @koa/router en hielp de community te waarschuwen voor de situatie. Sindsdien onderhoudt hij dit kritieke pakket en zorgt hij ervoor dat Koa-gebruikers een veilige, goed onderhouden routeringsoplossing hebben.

Het aanpakken van ReDoS-kwetsbaarheden

In 2020 identificeerde en pakte Nick een kritiek probleem aan Reguliere expressie Denial of Service (ReDoS) kwetsbaarheid in de veelgebruikte url-regex pakket. Deze kwetsbaarheid (SNYK-JS-URLREGEX-569472) zou aanvallers in staat kunnen stellen een denial-of-service te veroorzaken door speciaal vervaardigde invoer te leveren die catastrofale backtracking in de reguliere expressie veroorzaakte.

In plaats van simpelweg het bestaande pakket te patchen, creëerde Nick url-regex-safe, een volledig herschreven implementatie die de kwetsbaarheid aanpakt en tegelijkertijd de compatibiliteit met de originele API behoudt. Hij publiceerde ook een uitgebreide blogpost Uitleg over de kwetsbaarheid en hoe deze kan worden verholpen.

Dit werk illustreert onze aanpak van beveiliging: we lossen niet alleen problemen op, maar we informeren de community en bieden robuuste alternatieven waarmee we soortgelijke problemen in de toekomst kunnen voorkomen.

Pleiten voor Node.js en Chromium-beveiliging

Nick heeft zich ook actief ingezet voor beveiligingsverbeteringen in het bredere ecosysteem. In augustus 2020 identificeerde hij een significant beveiligingsprobleem in Node.js met betrekking tot de verwerking van HTTP-headers, wat werd gemeld in Het register.

Dit probleem, dat voortkwam uit een patch in Chromium, zou aanvallers in staat kunnen stellen beveiligingsmaatregelen te omzeilen. Nicks inzet zorgde ervoor dat het probleem snel werd opgelost en miljoenen Node.js-applicaties werden beschermd tegen mogelijke misbruik.

Beveiliging van npm-infrastructuur

Later diezelfde maand identificeerde Nick nog een kritiek beveiligingsprobleem, ditmaal in de e-mailinfrastructuur van npm. Zoals gerapporteerd in Het register, npm implementeerde de DMARC-, SPF- en DKIM-e-mailauthenticatieprotocollen niet op de juiste manier, waardoor aanvallers mogelijk phishing-e-mails konden versturen die afkomstig leken te zijn van npm.

Het rapport van Nick leidde tot verbeteringen in de e-mailbeveiliging van npm, waardoor de miljoenen ontwikkelaars die op npm vertrouwen voor pakketbeheer, worden beschermd tegen potentiële phishingaanvallen.

Onze bijdragen aan het Forward Email Ecosystem

Forward Email is gebouwd op basis van diverse belangrijke open-sourceprojecten, waaronder Nodemailer, WildDuck en mailauth. Ons team heeft belangrijke bijdragen geleverd aan deze projecten en heeft geholpen bij het identificeren en oplossen van diepgaande problemen die van invloed zijn op de bezorging en beveiliging van e-mail.

Verbetering van de kernfunctionaliteit van Nodemailer

Opmerking mailer vormt de ruggengraat van e-mailverzending in Node.js en onze bijdragen hebben geholpen om het robuuster te maken:

  • Verbeteringen aan de SMTP-server: We hebben parsing-bugs, problemen met de verwerking van streams en problemen met de TLS-configuratie in het SMTP-servercomponent opgelost[^16][^17].
  • Verbeteringen aan de mailparser:We hebben fouten bij het decoderen van tekenreeksen opgelost en parserproblemen opgelost die tot fouten bij de verwerking van e-mails konden leiden[^18][^19].

Deze bijdragen zorgen ervoor dat Nodemailer een betrouwbare basis blijft voor e-mailverwerking in Node.js-applicaties, waaronder Forward Email.

E-mailauthenticatie verbeteren met Mailauth

Mailauth biedt essentiële functionaliteit voor e-mailauthenticatie, en onze bijdragen hebben de mogelijkheden ervan aanzienlijk verbeterd:

  • Verbeteringen in DKIM-verificatie:We hebben ontdekt en gemeld dat X/Twitter problemen had met de DNS-cache, waardoor DKIM-fouten voor hun uitgaande berichten ontstonden. We hebben dit gemeld op Hacker One[^20].
  • DMARC- en ARC-verbeteringen:We hebben problemen met DMARC- en ARC-verificatie opgelost die konden leiden tot onjuiste authenticatieresultaten[^21][^22].
  • Prestatie-optimalisaties:We hebben optimalisaties bijgedragen die de prestaties van e-mailauthenticatieprocessen verbeteren[^23][^24][^25][^26].

Dankzij deze verbeteringen is de nauwkeurigheid en betrouwbaarheid van e-mailverificatie gewaarborgd en worden gebruikers beschermd tegen phishing- en spoofingaanvallen.

Belangrijkste upptime-verbeteringen

Onze bijdragen aan Upptime omvatten:

  • SSL-certificaatbewaking: We hebben functionaliteit toegevoegd om het verlopen van SSL-certificaten te controleren, waarmee onverwachte downtime vanwege verlopen certificaten wordt voorkomen[^27].
  • Ondersteuning voor meerdere sms-nummers:We hebben ondersteuning geïmplementeerd voor het waarschuwen van meerdere teamleden via sms wanneer er incidenten plaatsvinden, waardoor de responstijden zijn verbeterd[^28].
  • IPv6-controleoplossingen: We hebben problemen met IPv6-connectiviteitscontroles opgelost, waardoor de monitoring in moderne netwerkomgevingen nauwkeuriger is[^29].
  • Ondersteuning voor donkere/lichte modus: We hebben themaondersteuning toegevoegd om de gebruikerservaring van statuspagina's te verbeteren[^31].
  • Betere TCP-Ping-ondersteuning:We hebben de TCP-pingfunctionaliteit verbeterd om betrouwbaardere verbindingstests te bieden[^32].

Deze verbeteringen komen niet alleen de statusbewaking van Forward Email ten goede, maar zijn beschikbaar voor de gehele community van Upptime-gebruikers. Dit toont aan dat wij ons inzetten om de tools waar we op vertrouwen, te verbeteren.

De lijm die alles bij elkaar houdt: aangepaste code op schaal

Hoewel onze npm-pakketten en bijdragen aan bestaande projecten aanzienlijk zijn, is het de aangepaste code die deze componenten integreert die onze technische expertise echt laat zien. De codebase van Forward Email vertegenwoordigt een decennium aan ontwikkelingsinspanning, daterend uit 2017, toen het project begon als gratis-e-mail-doorsturen voordat het werd samengevoegd met een monorepo.

Een enorme ontwikkelingsinspanning

De omvang van deze aangepaste integratiecode is indrukwekkend:

  • Totale bijdragen: Meer dan 3.217 commits
  • Codebasegrootte: Meer dan 421.545 regels code in JavaScript-, Pug-, CSS- en JSON-bestanden[^33]

Dit vertegenwoordigt duizenden uren aan ontwikkelwerk, debugsessies en prestatieoptimalisaties. Het is de "geheime saus" die individuele pakketten transformeert tot een samenhangende, betrouwbare service die dagelijks door duizenden klanten wordt gebruikt.

Integratie van kernafhankelijkheden

De codebase van Forward Email integreert talloze afhankelijkheden tot een naadloos geheel:

  • E-mailverwerking: Integreert Nodemailer voor het verzenden, SMTP-server voor het ontvangen en Mailparser voor het parsen
  • Authenticatie: Gebruikt Mailauth voor DKIM-, SPF-, DMARC- en ARC-verificatie
  • DNS-resolutie: Maakt gebruik van Tangerine voor DNS-over-HTTPS met wereldwijde caching
  • MX-verbinding: Maakt gebruik van MX-Connect met Tangerine-integratie voor betrouwbare mailserververbindingen
  • Taakplanning: Gebruikt Bree voor betrouwbare verwerking van achtergrondtaken met werkthreads
  • Sjablonen: Gebruikt e-mailsjablonen om stijlbladen van de website opnieuw te gebruiken in klantcommunicatie
  • E-mailopslag: Implementeert individueel gecodeerde SQLite-mailboxen met behulp van betere sqlite3-meervoudige cijfers met ChaCha20-Poly1305-codering voor kwantumveilige privacy, waardoor volledige isolatie tussen gebruikers wordt gegarandeerd en alleen de gebruiker toegang heeft tot zijn mailbox.

Elk van deze integraties vereist zorgvuldige aandacht voor randgevallen, prestatie-implicaties en beveiligingsproblemen. Het resultaat is een robuust systeem dat miljoenen e-mailtransacties betrouwbaar verwerkt. Onze SQLite-implementatie maakt ook gebruik van msgpackr voor efficiënte binaire serialisatie en WebSockets (via ws) voor realtime statusupdates in onze infrastructuur.

DNS-infrastructuur met Tangerine en MX-Connect

Een cruciaal onderdeel van de infrastructuur van Forward Email is ons DNS-resolutiesysteem, dat is opgebouwd rond twee belangrijke pakketten:

  • MandarijnOnze Node.js DNS-over-HTTPS-implementatie biedt een direct te gebruiken vervanging voor de standaard DNS-resolver, met ingebouwde nieuwe pogingen, time-outs, slimme serverrotatie en caching-ondersteuning.

  • mx-verbinding:Dit pakket brengt TCP-verbindingen tot stand met MX-servers, waarbij een doeldomein of e-mailadres wordt gebruikt, de juiste MX-servers worden herkend en er in prioriteitsvolgorde verbinding mee wordt gemaakt.

We hebben Tangerine geïntegreerd met MX-Connect via pull-aanvraag #4, waardoor DNS-verzoeken op applicatielaag via HTTP worden gegarandeerd via Forward Email. Dit biedt wereldwijde caching voor DNS op schaal met 1:1-consistentie in elke regio, app of proces – cruciaal voor betrouwbare e-mailbezorging in een gedistribueerd systeem.

Impact op ondernemingen: van open source tot bedrijfskritische oplossingen

Het hoogtepunt van onze tien jaar durende reis op het gebied van open source-ontwikkeling is dat Forward Email niet alleen individuele ontwikkelaars bedient, maar ook grote ondernemingen en onderwijsinstellingen die de ruggengraat van de open source-beweging vormen.

Casestudies in missiekritieke e-mailinfrastructuur

Onze toewijding aan betrouwbaarheid, privacy en open source-principes heeft Forward Email tot de vertrouwde keuze gemaakt voor organisaties met veeleisende e-mailvereisten:

  • Onderwijsinstellingen: Zoals gedetailleerd in onze casestudy over het doorsturen van e-mails van alumniGrote universiteiten vertrouwen op onze infrastructuur om levenslange contacten te onderhouden met honderdduizenden alumni via betrouwbare e-maildoorstuurservices.

  • Enterprise Linux-oplossingen: De Canonical Ubuntu e-mail zakelijke casestudy laat zien hoe onze open source-aanpak perfect aansluit bij de behoeften van Linux-providers in het bedrijfsleven, en hen de transparantie en controle biedt die ze nodig hebben.

  • Open Source Foundations: Misschien wel het meest validerend is onze samenwerking met de Linux Foundation, zoals gedocumenteerd in de Casestudy over e-mail in bedrijven met Linux Foundation, waarbij onze service de communicatie mogelijk maakt voor de organisatie die de Linux-ontwikkeling beheert.

Er zit een prachtige symmetrie in hoe onze opensourcepakketten, die we jarenlang met zorg hebben onderhouden, ons in staat hebben gesteld een e-mailservice te bouwen die nu precies de communities en organisaties ondersteunt die opensourcesoftware promoten. Deze complete reis – van het leveren van individuele pakketten tot het aansturen van e-mailinfrastructuur van ondernemingsniveau voor opensourceleiders – vormt de ultieme bevestiging van onze aanpak van softwareontwikkeling.

Een decennium open source: een blik op de toekomst

Als we terugkijken op tien jaar aan bijdragen aan open source en vooruitkijken naar de komende tien jaar, zijn we dankbaar voor de community die ons werk heeft gesteund en zijn we enthousiast over wat de toekomst brengt.

Onze transformatie van individuele pakketleveranciers naar beheerders van een uitgebreide e-mailinfrastructuur die wordt gebruikt door grote ondernemingen en open-sourcestichtingen is opmerkelijk. Het is een bewijs van de kracht van open-sourceontwikkeling en de impact die doordachte, goed onderhouden software kan hebben op het bredere ecosysteem.

De komende jaren zetten wij ons in voor:

  • We blijven onze bestaande pakketten onderhouden en verbeteren, zodat ze betrouwbare hulpmiddelen blijven voor ontwikkelaars over de hele wereld.
  • Uitbreiding van onze bijdragen aan kritieke infrastructuurprojecten, met name op het gebied van e-mail en beveiliging.
  • Verbetering van de mogelijkheden van Forward Email terwijl we vasthouden aan onze toewijding aan privacy, veiligheid en transparantie.
  • Ondersteuning van de volgende generatie open source-bijdragers door middel van mentorschap, sponsoring en betrokkenheid van de gemeenschap.

Wij geloven dat de toekomst van softwareontwikkeling open, collaboratief en gebaseerd op een fundament van vertrouwen is. Door hoogwaardige, op beveiliging gerichte pakketten te blijven leveren aan het JavaScript-ecosysteem, hopen we een kleine rol te spelen in de opbouw van die toekomst.

Hartelijk dank aan iedereen die onze pakketten heeft gebruikt, heeft bijgedragen aan onze projecten, problemen heeft gemeld of gewoon ons werk heeft verspreid. Jullie steun heeft dit decennium van impact mogelijk gemaakt en we zijn benieuwd wat we de komende tien jaar samen kunnen bereiken.

[^1]: npm-downloadstatistieken voor cabin, april 2025 [^2]: npm-downloadstatistieken voor bson-objectid, februari-maart 2025 [^3]: npm-downloadstatistieken voor url-regex-safe, april 2025 [^4]: GitHub-sterrentelling voor forwardemail/forwardemail.net per april 2025 [^5]: npm-downloadstatistieken voor preview-email, april 2025 [^7]: npm-downloadstatistieken voor superagent, februari-maart 2025 [^8]: npm-downloadstatistieken voor supertest, februari-maart 2025 [^9]: npm-downloadstatistieken voor preview-email, februari-maart 2025 [^10]: npm-downloadstatistieken voor cabin, februari-maart 2025 [^11]: npm-downloadstatistieken voor url-regex-safe, februari-maart 2025 [^12]: npm-downloadstatistieken voor spamscanner, februari-maart 2025 [^13]: Dagelijkse downloadpatronen van npm-statistieken, april 2025 [^14]: Wekelijkse downloadpatronen van npm-statistieken, april 2025 [^15]: npm-downloadstatistieken voor nodemailer, april 2025 [^16]: https://github.com/nodemailer/smtp-server/issues/155 [^17]: https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min [^18]: https://github.com/nodemailer/mailparser/issues/261 [^19]: https://github.com/nodemailer/nodemailer/issues/1102 [^20]: https://github.com/postalsys/mailauth/issues/30 [^21]: https://github.com/postalsys/mailauth/issues/58 [^22]: https://github.com/postalsys/mailauth/issues/48 [^23]: https://github.com/postalsys/mailauth/issues/74 [^24]: https://github.com/postalsys/mailauth/issues/75 [^25]: https://github.com/postalsys/mailauth/issues/60 [^26]: https://github.com/postalsys/mailauth/issues/73 [^27]: Gebaseerd op GitHub-problemen in de Upptime-repository [^28]: Gebaseerd op GitHub-problemen in de Upptime-repository [^29]: Gebaseerd op GitHub-problemen in de Upptime-repository [^30]: npm-downloadstatistieken voor bree, februari-maart 2025 [^31]: Gebaseerd op GitHub-pullrequests naar Upptime [^32]: Gebaseerd op GitHub-pullrequests naar Upptime [^34]: npm-downloadstatistieken voor koa, februari-maart 2025 [^35]: npm-downloadstatistieken voor @koa/router, februari-maart 2025 [^36]: npm-downloadstatistieken voor koa-router, februari-maart 2025 [^37]: npm-downloadstatistieken voor url-regex, februari-maart 2025 [^38]: npm-downloadstatistieken voor @breejs/later, februari-maart 2025 [^39]: npm-downloadstatistieken voor e-mailsjablonen, februari-maart 2025 [^40]: npm-downloadstatistieken voor get-paths, februari-maart 2025 [^41]: npm-downloadstatistieken voor dotenv-parse-variabelen, februari-maart 2025 [^42]: npm-downloadstatistieken voor @koa/multer, februari-maart 2025