Et tiår med effekt: Hvordan npm-pakkene våre nådde 1 milliard nedlastinger og formet JavaScript
I Javascript og node.js noen pakker er viktige – lastet ned millioner av ganger daglig og driver apper over hele verden. Bak disse verktøyene er utviklere fokusert på åpen kildekode-kvalitet. I dag viser vi hvordan teamet vårt hjelper til med å bygge og vedlikeholde npm-pakker som har blitt sentrale deler av JavaScript-økosystemet.
Pionerene som stoler på oss: Isaac Z. Schlueter og videresend e-post
Vi er stolte av å ha Isaac Z. Schlueter (GitHub: isaacs) som bruker. Isak skapte over havnivå og hjalp til med å bygge node.js. Hans tillit til Forward Email viser vårt fokus på kvalitet og sikkerhet. Isaac bruker Forward Email for flere domener, inkludert izs.me.
Isaacs innvirkning på JavaScript er enorm. I 2009 var han blant de første som så potensialet til Node.js, og jobbet med Ryan Dahl, som opprettet plattformen. Som Isak sa i en intervju med Increment magazine: "Midt i dette svært lille fellesskapet av en gjeng med mennesker som prøver å finne ut hvordan man kan få server-side JS til å skje, kom Ryan Dahl ut med Node, som helt klart var den riktige tilnærmingen. Jeg kastet sjetongene mine inn med det og ble veldig involvert i omtrent midten av 2009."
[!NOTE] For de som er interessert i historien til Node.js, er det utmerkede dokumentarer tilgjengelig som forteller om utviklingen, inkludert Historien om Node.js og 10 ting jeg angrer på om Node.js - Ryan Dahl. Ryan Dahls personlig nettside inneholder også verdifull innsikt i hans arbeid.
Fra npms opprettelse til Node.js-lederskap
Isaac opprettet npm i september 2009, med den første brukbare versjonen utgitt tidlig i 2010. Denne pakkebehandleren fylte et sentralt behov i Node.js, og lot utviklere enkelt dele og gjenbruke kode. I følge Node.js Wikipedia-side, "I januar 2010 ble en pakkebehandling introdusert for Node.js-miljøet kalt npm. Pakkebehandlingen lar programmerere publisere og dele Node.js-pakker, sammen med den tilhørende kildekoden, og er designet for å forenkle installasjon, oppdatering og avinstallering av pakker."
Da Ryan Dahl trakk seg tilbake fra Node.js i januar 2012, tok Isaac over som prosjektleder. Som nevnt på oppsummeringen hans, ledet han utviklingen av flere grunnleggende Node.js kjerne-APIer, inkludert CommonJS-modulsystem, filsystem-APIer og strømmer, og "Fungerte som BDFL (Benevolent Dictator For Life) for prosjektet i 2 år, og sikret stadig økende kvalitet og pålitelig byggeprosess for Node.js versjoner v0.6 til v0.10."
Isaac ledet Node.js gjennom en viktig vekstperiode, og satte standarder som fortsatt former plattformen i dag. Han startet senere npm, Inc. i 2014 for å støtte npm-registeret, som han hadde drevet på egen hånd tidligere.
Vi takker Isaac for hans enorme bidrag til JavaScript og fortsetter å bruke mange pakker han har laget. Arbeidet hans har endret hvordan vi bygger programvare og hvordan millioner av utviklere deler kode over hele verden.
Arkitekten bak koden: Nick Baughs reise
I hjertet av vår åpen kildekode-suksess er Nick Baugh, Forward Emails grunnlegger og eier. Arbeidet hans med JavaScript strekker seg over nesten 20 år og har formet hvordan utallige utviklere bygger apper. Hans reise med åpen kildekode viser både teknisk dyktighet og lederskap i samfunnet.
Ekspressteknisk komité og kjernebidrag
Nicks ekspertise på nettrammeverk ga ham en plass på Express teknisk utvalg, hvor han hjalp til med et av de mest brukte Node.js-rammeverket. Nick er nå oppført som et inaktivt medlem på Express fellesskapsside.
[!VIKTIG] Express ble opprinnelig laget av TJ Holowaychuk, en produktiv åpen kildekode-bidragsyter som har formet mye av Node.js-økosystemet. Vi er takknemlige for TJs grunnleggende arbeid og respekterer hans beslutning om å ta en pause fra hans omfattende åpen kildekode-bidrag.
Som medlem av Express teknisk utvalg, Nick viste stor oppmerksomhet på detaljer i saker som å avklare req.originalUrl
dokumentasjon og fikse skjemahåndteringsproblemer med flere deler.
Koa Framework Bidrag
Nicks arbeid med Koa rammeverk– et moderne, lettere alternativ til Express også laget av TJ Holowaychuk – viser videre hans forpliktelse til bedre webutviklingsverktøy. Koa-bidragene hans inkluderer både problemer og kode gjennom pull-forespørsler, adressering av feilhåndtering, innholdstypeadministrasjon og dokumentasjonsforbedringer.
Arbeidet hans på tvers av både Express og Koa gir ham et unikt syn på Node.js-nettutvikling, og hjelper teamet vårt med å lage pakker som fungerer godt med flere rammeverksøkosystemer.
Fra individuell bidragsyter til organisasjonsleder
Det som startet som å hjelpe eksisterende prosjekter vokste til å skape og vedlikeholde hele pakkeøkosystemer. Nick grunnla flere GitHub-organisasjoner – inkludert Hytte, Spam-skanner, Videresend E-post, La, og Bree– hver løser spesifikke behov i JavaScript-fellesskapet.
Dette skiftet fra bidragsyter til leder viser Nicks visjon for godt utformet programvare som løser reelle problemer. Ved å organisere relaterte pakker under fokuserte GitHub-organisasjoner, har han bygget verktøyøkosystemer som fungerer sammen samtidig som de holder seg modulære og fleksible for det bredere utviklerfellesskapet.
Våre GitHub-organisasjoner: Ecosystems of Innovation
Vi organiserer vårt åpen kildekodearbeid rundt fokuserte GitHub-organisasjoner, som hver løser spesifikke behov i JavaScript. Denne strukturen skaper sammenhengende pakkefamilier som fungerer godt sammen mens de forblir modulære.
Hytte: Strukturert logging for moderne applikasjoner
De Hytteorganisasjon er vårt syn på enkel, kraftig applogging. Den viktigste cabin
pakken har nesten 900 GitHub-stjerner og over 100 000 ukentlige nedlastinger[^1]. Cabin tilbyr strukturert logging som fungerer med populære tjenester som Sentry, LogDNA og Papertrail.
Det som gjør Cabin spesiell er dens gjennomtenkte API- og plugin-system. Støttepakker som axe
for Express-mellomvare og parse-request
for parsing av HTTP-forespørsel viser vår forpliktelse til komplette løsninger i stedet for isolerte verktøy.
De bson-objectid
pakken fortjener spesiell omtale, med over 1,7 millioner nedlastinger på bare to måneder[^2]. Denne lette MongoDB ObjectID-implementeringen har blitt go-to for utviklere som trenger IDer uten fulle MongoDB-avhengigheter.
Spam-skanner: Bekjempe misbruk av e-post
De Spam Scanner organisasjon viser vår forpliktelse til å løse reelle problemer. Den viktigste spamscanner
pakken gir avansert e-post spam deteksjon, men det er url-regex-safe
pakke som har sett fantastisk adopsjon.
Med over 1,2 millioner nedlastinger på to måneder[^3], url-regex-safe
løser kritiske sikkerhetsproblemer i andre regulære uttrykk for URL-deteksjon. Denne pakken viser vår tilnærming til åpen kildekode: finne et vanlig problem (i dette tilfellet, RedoS sårbarheter i URL-validering), skape en solid løsning og vedlikeholde den nøye.
Bree: Moderne jobbplanlegging med arbeidertråder
De Bree organisasjon er vårt svar på en vanlig Node.js-utfordring: pålitelig jobbplanlegging. Den viktigste bree
pakken, med over 3100 GitHub-stjerner, gir en moderne jobbplanlegger som bruker Node.js-arbeidertråder for bedre ytelse og pålitelighet.
[!NOTE] Bree ble opprettet etter at vi hjalp til med å vedlikeholde Dagsorden, bruke erfaringer for å bygge en bedre jobbplanlegger. Agendabidragene våre hjalp oss med å finne måter å forbedre jobbplanleggingen på.
Hva gjør Bree forskjellig fra andre planleggere som Agenda:
- Ingen eksterne avhengigheter: I motsetning til Agenda som trenger MongoDB, krever ikke Bree Redis eller MongoDB for å administrere jobbstatus.
- Arbeidstråder: Bree bruker Node.js-arbeidertråder for prosesser med sandkasse, noe som gir bedre isolasjon og ytelse.
- Enkelt API: Bree tilbyr detaljert kontroll med enkelhet, noe som gjør det enklere å implementere komplekse planleggingsbehov.
- Innebygd støtte: Ting som grasiøs omlasting, cron-jobber, datoer og menneskevennlige tider er inkludert som standard.
Bree er en sentral del av forwardemail.net, håndtere kritiske bakgrunnsoppgaver som e-postbehandling, opprydding og planlagt vedlikehold. Å bruke Bree i Forward Email viser vår forpliktelse til å bruke våre egne verktøy i produksjonen, for å sikre at de oppfyller høye pålitelighetsstandarder.
Vi bruker også og setter pris på andre flotte arbeidertrådpakker som basseng og HTTP-klienter liker elleve. Piscina, som Bree, bruker Node.js-arbeidertråder for effektiv oppgavebehandling. Vi takker Matthew Hill, som opprettholder både undici og piscina, for sine store bidrag til Node.js. Matteo tjener i Node.js tekniske styringskomité og har forbedret HTTP-klientfunksjonene i Node.js betraktelig.
Videresend e-post: E-postinfrastruktur med åpen kildekode
Vårt mest ambisiøse prosjekt er Videresend E-post, en åpen kildekode-e-posttjeneste som tilbyr videresending, lagring og API-tjenester for e-post. Hovedlageret har over 1100 GitHub-stjerner[^4], som viser fellesskapets takknemlighet for dette alternativet til proprietære e-posttjenester.
De preview-email
pakken fra denne organisasjonen, med over 2,5 millioner nedlastinger på to måneder[^5], har blitt et viktig verktøy for utviklere som jobber med e-postmaler. Ved å tilby en enkel måte å forhåndsvise e-poster under utvikling, løser det et vanlig smertepunkt ved å bygge e-postaktiverte applikasjoner.
Gutt: Viktige Koa-verktøy og verktøy
De Gutteorganisasjon gir en samling av viktige verktøy og verktøy primært fokusert på å forbedre Koa-rammeøkosystemet. Disse pakkene løser vanlige utfordringer innen webutvikling og er designet for å fungere sømløst sammen samtidig som de forblir uavhengige nyttige.
koa-better-error-handler: Forbedret feilhåndtering for Koa
koa-better-error-handler
tilbyr en bedre feilhåndteringsløsning for Koa-applikasjoner. Med over 50 GitHub-stjerner gir denne pakken ctx.throw
produsere brukervennlige feilmeldinger mens du adresserer flere begrensninger ved Koas innebygde feilbehandler:
- Oppdager og håndterer Node.js DNS-feil, Mongoose-feil og Redis-feil
- Bruker Bom for å lage konsistente, velformaterte feilsvar
- Bevarer overskrifter (i motsetning til Koas innebygde behandler)
- Opprettholder passende statuskoder i stedet for å bruke 500 som standard
- Støtter flash-meldinger og øktbevaring
- Gir HTML-feillister for valideringsfeil
- Støtter flere svartyper (HTML, JSON og ren tekst)
Denne pakken er spesielt verdifull når den brukes ved siden av koa-404-handler
for omfattende feilhåndtering i Koa-applikasjoner.
pass: Autentisering for gutt
@ladjs/passport
utvider den populære Passport.js autentiseringsmellomvaren med spesifikke forbedringer for moderne nettapplikasjoner. Denne pakken støtter flere autentiseringsstrategier rett ut av esken:
- Lokal autentisering med e-post
- Logg på med Apple
- GitHub-autentisering
- Google-autentisering
- Engangspassord (OTP) autentisering
Pakken er svært tilpassbar, slik at utviklere kan justere feltnavn og setninger for å matche applikasjonens krav. Den er designet for å integrere sømløst med Mongoose for brukeradministrasjon, noe som gjør den til en ideell løsning for Koa-baserte applikasjoner som trenger robust autentisering.
grasiøs: Elegant applikasjonsavslutning
@ladjs/graceful
løser den kritiske utfordringen med å stenge ned Node.js-applikasjoner. Med over 70 GitHub-stjerner sikrer denne pakken at applikasjonen din kan avsluttes rent uten å miste data eller la tilkoblinger henge. Nøkkelfunksjoner inkluderer:
- Støtte for elegant lukking av HTTP-servere (Express/Koa/Fastify)
- Ren nedleggelse av databasetilkoblinger (MongoDB/Mongoose)
- Riktig stenging av Redis-kunder
- Håndtering av Bree jobbplanleggere
- Støtte for tilpassede nedstengningsbehandlere
- Konfigurerbare tidsavbruddsinnstillinger
- Integrasjon med loggesystemer
Denne pakken er viktig for produksjonsapplikasjoner der uventede nedleggelser kan føre til tap av data eller korrupsjon. Ved å implementere riktige avstengningsprosedyrer, @ladjs/graceful
bidrar til å sikre påliteligheten og stabiliteten til applikasjonen din.
Opptid: Oppetidsovervåking med åpen kildekode
De Opptime organisasjon representerer vår forpliktelse til transparent, åpen kildekode-overvåking. Den viktigste upptime
repository har over 13 000 GitHub-stjerner, noe som gjør det til et av de mest populære prosjektene vi bidrar til. Upptime gir en GitHub-drevet oppetidsmonitor og statusside som fungerer helt uten server.
Vi bruker Upptime til vår egen statusside på https://status.forwardemail.net med kildekoden tilgjengelig på https://github.com/forwardemail/status.forwardemail.net.
Det som gjør Upptime spesiell er arkitekturen:
- 100 % åpen kildekode: Hver komponent er fullstendig åpen kildekode og kan tilpasses.
- Drevet av GitHub: Utnytter GitHub-handlinger, -problemer og -sider for en serverløs overvåkingsløsning.
- Ingen server nødvendig: I motsetning til tradisjonelle overvåkingsverktøy, krever ikke Upptime at du kjører eller vedlikeholder en server.
- Automatisk statusside: Genererer en vakker statusside som kan hostes på GitHub-sider.
- Kraftige varsler: Integrerer med ulike varslingskanaler, inkludert e-post, SMS og Slack.
For å forbedre brukeropplevelsen har vi integrert @oktokit/kjerne inn i forwardemail.net-kodebasen for å gjengi sanntidsstatusoppdateringer og hendelser direkte på nettstedet vårt. Denne integrasjonen gir klar åpenhet til brukerne våre i tilfelle problemer på tvers av hele stabelen vår (nettsted, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree, etc.) med umiddelbare toast-varslinger, endringer i merkeikoner, advarselsfarger og mer.
@octokit/core-biblioteket lar oss hente sanntidsdata fra vårt Upptime GitHub-lager, behandle det og vise det på en brukervennlig måte. Når en tjeneste har brudd eller dårlig ytelse, blir brukere umiddelbart varslet gjennom visuelle indikatorer uten å måtte forlate hovedapplikasjonen. Denne sømløse integrasjonen sikrer at brukerne våre alltid har oppdatert informasjon om systemstatusen vår, noe som øker åpenheten og tilliten.
Upptime har blitt tatt i bruk av hundrevis av organisasjoner som leter etter en transparent, pålitelig måte å overvåke tjenestene deres og kommunisere status til brukerne. Prosjektets suksess viser kraften i å bygge verktøy som utnytter eksisterende infrastruktur (i dette tilfellet GitHub) for å løse vanlige problemer på nye måter.
Våre bidrag til økosystemet for videresending av e-post
Mens våre åpen kildekode-pakker brukes av utviklere over hele verden, danner de også grunnlaget for vår egen Forward Email-tjeneste. Denne doble rollen – både som skapere og brukere av disse verktøyene – gir oss et unikt perspektiv på deres virkelige applikasjon og driver kontinuerlig forbedring.
Fra pakker til produksjon
Reisen fra individuelle pakker til et sammenhengende produksjonssystem innebærer nøye integrasjon og utvidelse. For videresend e-post inkluderer denne prosessen:
- Egendefinerte utvidelser: Bygger videre e-postspesifikke utvidelser til våre åpen kildekode-pakker som oppfyller våre unike krav.
- Integrasjonsmønstre: Utvikle mønstre for hvordan disse pakkene samhandler i et produksjonsmiljø.
- Ytelsesoptimaliseringer: Identifisere og adressere ytelsesflaskehalser som bare dukker opp i stor skala.
- Sikkerhetsherding: Legger til ekstra sikkerhetslag spesifikke for e-posthåndtering og brukerdatabeskyttelse.
Dette arbeidet representerer tusenvis av timer med utvikling utover selve kjernepakkene, noe som resulterer i en robust, sikker e-posttjeneste som utnytter det beste fra våre åpen kildekode-bidrag.
Tilbakemeldingssløyfen
Det kanskje mest verdifulle aspektet ved å bruke våre egne pakker i produksjonen er tilbakemeldingssløyfen den skaper. Når vi møter begrensninger eller edge-tilfeller i Videresend e-post, lapper vi dem ikke bare lokalt – vi forbedrer de underliggende pakkene, noe som gagner både tjenesten vår og fellesskapet.
Denne tilnærmingen har ført til en rekke forbedringer:
- Bree's Graceful Shutdown: Videresend e-posts behov for distribusjoner uten nedetid førte til forbedrede, elegante avslutningsfunksjoner i Bree.
- Spam-skannerens mønstergjenkjenning: Spammønstre i den virkelige verden i Videresend e-post har informert Spam Scanners deteksjonsalgoritmer.
- Hyttas ytelsesoptimaliseringer: Høyvolumslogging i produksjon avdekket optimaliseringsmuligheter i Cabin som kommer alle brukere til gode.
Ved å opprettholde denne gode syklusen mellom vårt arbeid med åpen kildekode og produksjonstjeneste, sikrer vi at pakkene våre forblir praktiske, kamptestede løsninger i stedet for teoretiske implementeringer.
Videresend e-posts kjerneprinsipper: Et grunnlag for fortreffelighet
Videresend e-post er designet i henhold til et sett med kjerneprinsipper som styrer alle våre utviklingsbeslutninger. Disse prinsippene, detaljert på vår nettsted, sikre at tjenesten vår forblir utviklervennlig, sikker og fokusert på brukernes personvern.
Alltid utviklervennlig, sikkerhetsfokusert og gjennomsiktig
Vårt første og fremste prinsipp er å lage programvare som er utviklervennlig og samtidig opprettholde de høyeste standardene for sikkerhet og personvern. Vi mener at teknisk fortreffelighet aldri bør gå på bekostning av brukervennlighet, og at åpenhet bygger tillit hos samfunnet vårt.
Dette prinsippet viser seg i vår detaljerte dokumentasjon, klare feilmeldinger og åpen kommunikasjon om både suksesser og utfordringer. Ved å gjøre hele vår kodebase åpen kildekode, inviterer vi til gransking og samarbeid, og styrker både programvaren vår og det bredere økosystemet.
Overholdelse av tidstestede prinsipper for programvareutvikling
Vi følger flere etablerte programvareutviklingsprinsipper som har bevist sin verdi gjennom flere tiår:
- MVC: Skille bekymringer gjennom Model-View-Controller-mønsteret
- Unix filosofi: Lage modulære komponenter som gjør én ting bra
- KISS: Holde det enkelt og greit
- DRY: Ikke gjenta deg selv, fremme gjenbruk av kode
- YAGNI: Du kommer ikke til å trenge det, og unngår for tidlig optimalisering
- Tolvfaktor: Følger beste praksis for å bygge moderne, skalerbare applikasjoner
- Occams barberhøvel: Velge den enkleste løsningen som oppfyller kravene
- Dogfooding: Bruker våre egne produkter mye
Disse prinsippene er ikke bare teoretiske konsepter – de er innebygd i vår daglige utviklingspraksis. For eksempel er vår tilslutning til Unix-filosofien tydelig i hvordan vi har strukturert våre npm-pakker: små, fokuserte moduler som kan settes sammen for å løse komplekse problemer.
Målretting mot Scrappy, Bootstrapped-utvikleren
Vi retter oss spesielt mot scrappy, bootstrapped og ramen-lønnsomt utvikler. Dette fokuset former alt fra vår prismodell til våre tekniske beslutninger. Vi forstår utfordringene med å bygge produkter med begrensede ressurser fordi vi har vært der selv.
Dette prinsippet er spesielt viktig i hvordan vi nærmer oss åpen kildekode. Vi lager og vedlikeholder pakker som løser reelle problemer for utviklere uten bedriftsbudsjetter, og gjør kraftige verktøy tilgjengelige for alle uavhengig av ressursene deres.
Prinsipper i praksis: Kodebasen for videresending av e-post
Disse prinsippene er tydelig synlige i kodebasen Videresend e-post. Package.json-filen vår avslører et gjennomtenkt utvalg av avhengigheter, hver valgt for å samsvare med våre kjerneverdier:
- Sikkerhetsfokuserte pakker som
mailauth
for e-postautentisering - Utviklervennlige verktøy som
preview-email
for enklere feilsøking - Modulære komponenter som de forskjellige
p-*
utilities from Sindre Sorhus
Ved å følge disse prinsippene konsekvent over tid, har vi bygget en tjeneste som utviklere kan stole på med sin e-postinfrastruktur – sikker, pålitelig og i tråd med verdiene til åpen kildekode-fellesskapet.
Privacy by Design
Personvern er ikke en ettertanke eller markedsføringsfunksjon for Videresend e-post – det er et grunnleggende designprinsipp som informerer alle aspekter av tjenesten og koden vår:
- Nulltilgangskryptering: Vi har implementert systemer som gjør det teknisk umulig for oss å lese brukernes e-post.
- Minimal datainnsamling: Vi samler bare inn dataene som er nødvendige for å tilby tjenesten vår, ikke noe mer.
- Gjennomsiktige retningslinjer: Vår personvernerklæring er skrevet på et klart, forståelig språk uten juridisk sjargong.
- Bekreftelse av åpen kildekode: Vår åpen kildekode-kodebase lar sikkerhetsforskere verifisere personvernkravene våre.
Denne forpliktelsen strekker seg til våre åpen kildekode-pakker, som er utviklet med beste praksis for sikkerhet og personvern innebygd fra grunnen av.
Bærekraftig åpen kildekode
Vi tror at åpen kildekode-programvare trenger bærekraftige modeller for å trives på lang sikt. Vår tilnærming inkluderer:
- Kommersiell støtte: Tilbyr førsteklasses støtte og tjenester rundt våre åpen kildekode-verktøy.
- Balansert lisensiering: Bruker lisenser som beskytter både brukerfrihet og bærekraft i prosjektet.
- Samfunnsengasjement: Aktivt engasjement med bidragsytere for å bygge et støttende fellesskap.
- Gjennomsiktige veikart: Deler utviklingsplanene våre slik at brukerne kan planlegge deretter.
Ved å fokusere på bærekraft sikrer vi at bidragene våre med åpen kildekode kan fortsette å vokse og forbedres over tid i stedet for å forsømmes.
Tallene lyver ikke: Vår svimlende npm-nedlastingsstatistikk
Når vi snakker om virkningen av åpen kildekode-programvare, gir nedlastingsstatistikk et håndgripelig mål på adopsjon og tillit. Mange av pakkene vi hjelper til med å vedlikeholde har nådd en skala som få åpen kildekode-prosjekter noensinne oppnår, med kombinerte nedlastinger som teller milliarder.
[!VIKTIG] Selv om vi er stolte av å hjelpe til med å opprettholde flere høyt nedlastede pakker i JavaScript-økosystemet, ønsker vi å erkjenne at mange av disse pakkene opprinnelig ble laget av andre talentfulle utviklere. Pakker som superagent og supertest ble opprinnelig laget av TJ Holowaychuk, hvis produktive bidrag til åpen kildekode har vært medvirkende til å forme Node.js-økosystemet.
Et fugleperspektiv av vår innvirkning
I løpet av bare to-månedersperioden fra februar til mars 2025 er topppakkene vi bidrar til og hjelper til med å opprettholde registrerte svimlende nedlastingstall:
- superagent: 84 575 829 nedlastinger[^7] (opprinnelig laget av TJ Holowaychuk)
- supertest: 76 432 591 nedlastinger[^8] (opprinnelig laget av TJ Holowaychuk)
- også: 28 539 295 nedlastinger[^34] (opprinnelig laget av TJ Holowaychuk)
- @koa/ruter: 11 007 327 nedlastinger[^35]
- koa-ruter: 3 498 918 nedlastinger[^36]
- url-regex: 2 819 520 nedlastinger[^37]
- forhåndsvisnings-e-post: 2 500 000 nedlastinger[^9]
- kabin: 1 800 000 nedlastinger[^10]
- @breejs/later: 1 709 938 nedlastinger[^38]
- e-postmaler: 1 128 139 nedlastinger[^39]
- få-stier: 1 124 686 nedlastinger[^40]
- url-regex-safe: 1 200 000 nedlastinger[^11]
- dotenv-parse-variabler: 894 666 nedlastinger[^41]
- @koa/multer: 839 585 nedlastinger[^42]
- spamscanner: 145 000 nedlastinger[^12]
- bree: 24 270 nedlastinger[^30]
[!NOTE] Flere andre pakker vi hjelper til med å vedlikeholde, men som ikke opprettet, har enda høyere nedlastingstall, inkludert
form-data
(738 millioner+ nedlastinger),toidentifier
(309 millioner nedlastinger),stackframe
(116M+ nedlastinger), ogerror-stack-parser
(113M+ nedlastinger). Vi er beæret over å bidra til disse pakkene samtidig som vi respekterer arbeidet til deres originale forfattere.
Dette er ikke bare imponerende tall – de representerer virkelige utviklere som løser virkelige problemer med kode som vi hjelper til med å vedlikeholde. Hver nedlasting er et tilfelle hvor disse pakkene har hjulpet noen med å bygge noe meningsfylt, fra hobbyprosjekter til bedriftsapplikasjoner brukt av millioner.
Daglig innvirkning i stor skala
De daglige nedlastingsmønstrene viser konsekvent bruk med høyt volum, med topper som når millioner av nedlastinger per dag[^13]. Denne konsistensen taler for stabiliteten og påliteligheten til disse pakkene – utviklere prøver dem ikke bare; de integrerer dem i sine kjernearbeidsflyter og er avhengige av dem dag etter dag.
Ukentlige nedlastingsmønstre viser enda mer imponerende tall, og svinger konsekvent rundt titalls millioner nedlastinger per uke[^14]. Dette representerer et massivt fotavtrykk i JavaScript-økosystemet, med disse pakkene som kjører i produksjonsmiljøer over hele verden.
Beyond the Raw Numbers
Mens nedlastingsstatistikken er imponerende i seg selv, forteller de en dypere historie om tilliten samfunnet har til disse pakkene. Å vedlikeholde pakker i denne skalaen krever en urokkelig forpliktelse til:
- Bakoverkompatibilitet: Endringer må vurderes nøye for å unngå å bryte eksisterende implementeringer.
- Sikkerhet: Med millioner av applikasjoner avhengig av disse pakkene, kan sikkerhetssårbarheter få vidtrekkende konsekvenser.
- Ytelse: I denne skalaen kan selv mindre ytelsesforbedringer ha betydelige samlede fordeler.
- Dokumentasjon: Tydelig, omfattende dokumentasjon er avgjørende for pakker som brukes av utviklere på alle erfaringsnivåer.
Den konsekvente veksten i nedlastingstall over tid gjenspeiler suksessen med å oppfylle disse forpliktelsene, bygge tillit hos utviklerfellesskapet gjennom pålitelige, godt vedlikeholdte pakker.
Støtte økosystemet: Våre sponsorater med åpen kildekode
[!TUPP] Åpen kildekode-bærekraft handler ikke bare om å bidra med kode – det handler også om å støtte utviklerne som vedlikeholder kritisk infrastruktur.
Utover våre direkte bidrag til JavaScript-økosystemet, er vi stolte av å sponse fremtredende Node.js-bidragsytere hvis arbeid danner grunnlaget for mange moderne applikasjoner. Våre sponsorater inkluderer:
Andris Reinman: E-postinfrastrukturpioner
Andris Reinman er skaperen av Notat mailer, det mest populære biblioteket for e-postsending for Node.js med over 14 millioner ukentlige nedlastinger[^15]. Arbeidet hans strekker seg til andre kritiske e-postinfrastrukturkomponenter som SMTP-server, Mailparser, og Villand.
Vår sponsing bidrar til å sikre fortsatt vedlikehold og utvikling av disse essensielle verktøyene som driver e-postkommunikasjon for utallige Node.js-applikasjoner, inkludert vår egen Forward Email-tjeneste.
Sindre Sorhus: Utility Package Mastermind
Sindre Sorhus er en av de mest produktive bidragsyterne med åpen kildekode i JavaScript-økosystemet, med over 1000 npm-pakker til navnet hans. Hans verktøy som p-kart, prøv på nytt, og er-strøm er grunnleggende byggesteiner som brukes i hele Node.js-økosystemet.
Ved å sponse Sindres arbeid bidrar vi til å opprettholde utviklingen av disse kritiske verktøyene som gjør JavaScript-utvikling mer effektiv og pålitelig.
Disse sponsingene reflekterer vår forpliktelse til det bredere åpen kildekode-økosystemet. Vi erkjenner at vår egen suksess er bygget på grunnlaget lagt av disse og andre bidragsytere, og vi er dedikerte til å sikre bærekraften til hele økosystemet.
Avdekke sikkerhetssårbarheter i JavaScript-økosystemet
Vår forpliktelse til åpen kildekode strekker seg utover funksjonsutvikling og inkluderer identifisering og adressering av sikkerhetssårbarheter som kan påvirke millioner av utviklere. Flere av våre viktigste bidrag til JavaScript-økosystemet har vært innen sikkerhet.
Koa-Router Rescue
I februar 2019 identifiserte Nick et kritisk problem med vedlikeholdet av den populære koa-ruterpakken. Som han rapportert på Hacker News, hadde pakken blitt forlatt av dens opprinnelige vedlikeholder, og etterlot sikkerhetssårbarheter uadressert og fellesskapet uten oppdateringer.
[!ADVARSEL] Forlatte pakker med sikkerhetssårbarheter utgjør betydelige risikoer for hele økosystemet, spesielt når de lastes ned millioner av ganger ukentlig.
Som svar opprettet Nick @koa/ruter og bidro til å varsle samfunnet om situasjonen. Han har vedlikeholdt denne kritiske pakken siden den gang, og sørget for at Koa-brukere har en sikker, godt vedlikeholdt rutingløsning.
Adressering av ReDoS-sårbarheter
I 2020 identifiserte og tok Nick opp en kritisk person Regular Expression Denial of Service (ReDoS) sårbarhet i det mye brukte url-regex
pakke. Denne sårbarheten (SNYK-JS-URLREGEX-569472) kan tillate angripere å forårsake tjenestenekt ved å gi spesiallaget input som forårsaket katastrofal tilbakesporing i det regulære uttrykket.
I stedet for å bare lappe den eksisterende pakken, opprettet Nick url-regex-safe
, en fullstendig omskrevet implementering som adresserer sårbarheten samtidig som den opprettholder kompatibiliteten med det originale API-et. Han publiserte også en omfattende blogginnlegg forklare sårbarheten og hvordan den kan reduseres.
Dette arbeidet viser vår tilnærming til sikkerhet: ikke bare fikse problemer, men utdanne fellesskapet og tilby robuste alternativer som forhindrer lignende problemer i fremtiden.
Forfekter for Node.js og Chromium Security
Nick har også vært aktiv i å gå inn for sikkerhetsforbedringer i det bredere økosystemet. I august 2020 identifiserte han et betydelig sikkerhetsproblem i Node.js relatert til håndteringen av HTTP-hoder, som ble rapportert i Registeret.
Dette problemet, som stammet fra en oppdatering i Chromium, kan potensielt tillate angripere å omgå sikkerhetstiltak. Nicks talsmann bidro til å sikre at problemet ble løst raskt, og beskyttet millioner av Node.js-applikasjoner mot potensiell utnyttelse.
Sikring av npm-infrastruktur
Senere samme måned identifiserte Nick et annet kritisk sikkerhetsproblem, denne gangen i npms e-postinfrastruktur. Som rapportert i Registeret, implementerte ikke npm DMARC, SPF og DKIM e-postautentiseringsprotokoller på riktig måte, noe som potensielt tillot angripere å sende phishing-e-poster som så ut til å komme fra npm.
Nicks rapport førte til forbedringer i npms e-postsikkerhetsstilling, og beskyttet de millioner av utviklere som er avhengige av npm for pakkehåndtering mot potensielle phishing-angrep.
Våre bidrag til økosystemet for videresending av e-post
Forward Email er bygget på toppen av flere kritiske åpen kildekode-prosjekter, inkludert Nodemailer, WildDuck og mailauth. Teamet vårt har gitt betydelige bidrag til disse prosjektene, og bidratt til å identifisere og fikse dype problemer som påvirker e-postlevering og sikkerhet.
Forbedring av Nodemailers kjernefunksjonalitet
Notat mailer er ryggraden i e-postsending i Node.js, og våre bidrag har bidratt til å gjøre den mer robust:
- SMTP-serverforbedringer: Vi har fikset parsing-feil, strømhåndteringsproblemer og TLS-konfigurasjonsproblemer i SMTP-serverkomponenten[^16][^17].
- Mail Parser Enhancements: Vi har løst tegnsekvensdekodingsfeil og adresser parserproblemer som kan forårsake e-postbehandlingsfeil[^18][^19].
Disse bidragene sikrer at Nodemailer forblir et pålitelig grunnlag for e-postbehandling i Node.js-applikasjoner, inkludert Videresend e-post.
Fremme e-postautentisering med Mailauth
Mailauth gir viktig funksjonalitet for e-postautentisering, og våre bidrag har forbedret funksjonaliteten betydelig:
- DKIM-verifiseringsforbedringer: Vi oppdaget og rapporterte at X/Twitter hadde problemer med DNS-buffer som forårsaket DKIM-feil for utgående meldinger, og rapporterte det på Hacker One[^20].
- DMARC- og ARC-forbedringer: Vi har løst problemer med DMARC- og ARC-verifisering som kan føre til feilaktige autentiseringsresultater[^21][^22].
- Ytelsesoptimaliseringer: Vi har bidratt med optimaliseringer som forbedrer ytelsen til e-postautentiseringsprosesser[^23][^24][^25][^26].
Disse forbedringene bidrar til å sikre at e-postautentisering er nøyaktig og pålitelig, og beskytter brukere mot phishing og spoofingangrep.
Viktige opptidsforbedringer
Våre bidrag til Upptime inkluderer:
- SSL-sertifikatovervåking: Vi la til funksjonalitet for å overvåke utløp av SSL-sertifikater, og forhindret uventet nedetid på grunn av utløpte sertifikater[^27].
- Støtte for flere SMS-nummer: Vi implementerte støtte for å varsle flere teammedlemmer via SMS når hendelser oppstår, og forbedret responstiden[^28].
- IPv6-sjekkrettinger: Vi fikset problemer med IPv6-tilkoblingskontroller, og sikret mer nøyaktig overvåking i moderne nettverksmiljøer[^29].
- Støtte for mørk/lys modus: Vi la til temastøtte for å forbedre brukeropplevelsen på statussider[^31].
- Bedre TCP-Ping-støtte: Vi forbedret TCP-ping-funksjonaliteten for å gi mer pålitelig tilkoblingstesting[^32].
Disse forbedringene gagner ikke bare Forward Emails statusovervåking, men er tilgjengelige for hele fellesskapet av Upptime-brukere, og viser vår forpliktelse til å forbedre verktøyene vi er avhengige av.
Limet som holder alt sammen: tilpasset kode i skala
Mens våre npm-pakker og bidrag til eksisterende prosjekter er betydelige, er det den tilpassede koden som integrerer disse komponentene som virkelig viser vår tekniske ekspertise. Forward Email-kodebasen representerer et tiår med utviklingsinnsats, som dateres tilbake til 2017 da prosjektet startet som gratis videresending av e-post før de ble slått sammen til en monorepo.
En massiv utviklingsinnsats
Skalaen til denne tilpassede integrasjonskoden er imponerende:
- Totale bidrag: Over 3 217 forpliktelser
- Kodebasestørrelse: Over 421 545 linjer med kode på tvers av JavaScript-, Pug-, CSS- og JSON-filer[^33]
Dette representerer tusenvis av timer med utviklingsarbeid, feilsøkingsøkter og ytelsesoptimaliseringer. Det er den "hemmelige sausen" som forvandler individuelle pakker til en sammenhengende, pålitelig tjeneste som brukes av tusenvis av kunder daglig.
Integrasjon av kjerneavhengigheter
Kodebasen for Forward Email integrerer en rekke avhengigheter i en sømløs helhet:
- E-postbehandling: Integrerer Nodemailer for sending, SMTP-server for mottak og Mailparser for parsing
- Godkjenning: Bruker Mailauth for DKIM-, SPF-, DMARC- og ARC-verifisering
- DNS-oppløsning: Utnytter Tangerine for DNS-over-HTTPS med global caching
- MX-tilkobling: Bruker mx-connect med Tangerine-integrasjon for pålitelige e-postservertilkoblinger
- Jobbplanlegging: Ansetter Bree for pålitelig bakgrunnsoppgavebehandling med arbeidertråder
- Mal: Bruker e-postmaler for å gjenbruke stilark fra nettstedet i kundekommunikasjon
- E-postlagring: Implementerer individuelt krypterte SQLite-postbokser ved å bruke better-sqlite3-multiple-siffer med ChaCha20-Poly1305-kryptering for kvantesikkert personvern, og sikrer fullstendig isolasjon mellom brukere og at bare brukeren har tilgang til postkassen deres
Hver av disse integrasjonene krever nøye vurdering av edge-tilfeller, ytelsesimplikasjoner og sikkerhetsproblemer. Resultatet er et robust system som håndterer millioner av e-posttransaksjoner pålitelig. SQLite-implementeringen vår utnytter også msgpackr for effektiv binær serialisering og WebSockets (via ws) for sanntidsstatusoppdateringer på tvers av infrastrukturen vår.
DNS-infrastruktur med Tangerine og mx-connect
En kritisk komponent i Forward Emails infrastruktur er vårt DNS-oppløsningssystem, bygget rundt to nøkkelpakker:
-
Mandarin: Vår Node.js DNS-over-HTTPS-implementering gir en drop-in-erstatning for standard DNS-løser, med innebygde forsøk på nytt, tidsavbrudd, smart serverrotasjon og bufferstøtte.
-
mx-connect: Denne pakken etablerer TCP-tilkoblinger til MX-servere, tar et måldomene eller e-postadresse, løser passende MX-servere og kobler til dem i prioritert rekkefølge.
Vi har integrert Tangerine med mx-connect through pull-forespørsel #4, som sikrer applikasjonslags-DNS over HTTP-forespørsler gjennom Videresend e-post. Dette gir global caching for DNS i skala med 1:1-konsistens på tvers av alle regioner, apper eller prosesser – avgjørende for pålitelig e-postlevering i et distribuert system.
Enterprise Impact: Fra åpen kildekode til misjonskritiske løsninger
Kulminasjonen av vår tiår lange reise innen åpen kildekode-utvikling har gjort det mulig for Forward Email å betjene ikke bare individuelle utviklere, men også store bedrifter og utdanningsinstitusjoner som utgjør ryggraden i selve åpen kildekode-bevegelsen.
Kasusstudier i misjonskritisk e-postinfrastruktur
Vår forpliktelse til pålitelighet, personvern og åpen kildekode-prinsipper har gjort Forward Email til det pålitelige valget for organisasjoner med krevende e-postkrav:
-
Utdanningsinstitusjoner: Som beskrevet i vår casestudie for videresending av alumni-e-post, stoler store universiteter på infrastrukturen vår for å opprettholde livslange forbindelser med hundretusener av alumner gjennom pålitelige videresendingstjenester for e-post.
-
Enterprise Linux-løsninger: Den Canonical Ubuntu email enterprise case study demonstrerer hvordan vår åpen kildekode-tilnærming passer perfekt med behovene til Linux-leverandører for bedrifter, og gir dem den åpenheten og kontrollen de trenger.
-
Open Source Foundations: Det mest validerende er kanskje vårt partnerskap med Linux Foundation, som dokumentert i Linux Foundation email enterprise case study, der tjenesten vår driver kommunikasjonen for selve organisasjonen som forvalter Linux-utviklingen.
Det er en vakker symmetri i hvordan åpen kildekode-pakkene våre, vedlikeholdt med omhu over mange år, har gjort det mulig for oss å bygge en e-posttjeneste som nå støtter de samme samfunnene og organisasjonene som forkjemper åpen kildekode-programvare. Denne helsirkelreisen – fra å bidra med individuelle pakker til å drive e-postinfrastruktur i bedriftsklasse for ledere med åpen kildekode – representerer den ultimate valideringen av vår tilnærming til programvareutvikling.
Et tiår med åpen kildekode: Ser fremover
Når vi ser tilbake på et tiår med åpen kildekode-bidrag og frem til de neste ti årene, er vi fylt av takknemlighet for fellesskapet som har støttet vårt arbeid og spenning for det som kommer.
Vår reise fra individuelle pakkebidragsytere til vedlikeholdere av en omfattende e-postinfrastruktur brukt av store bedrifter og åpen kildekode-stiftelser har vært bemerkelsesverdig. Det er et vitnesbyrd om kraften til åpen kildekode-utvikling og virkningen som gjennomtenkt, godt vedlikeholdt programvare kan ha på det bredere økosystemet.
I de kommende årene er vi forpliktet til å:
- Fortsetter å vedlikeholde og forbedre våre eksisterende pakker, og sikrer at de forblir pålitelige verktøy for utviklere over hele verden.
- Utvide våre bidrag til kritiske infrastrukturprosjekter, spesielt i e-post- og sikkerhetsdomener.
- Forbedring av Forward Email's evner samtidig som vi opprettholder vår forpliktelse til personvern, sikkerhet og åpenhet.
- Støtter neste generasjon åpen kildekode-bidragsytere gjennom mentorskap, sponsing og samfunnsengasjement.
Vi tror at fremtiden for programvareutvikling er åpen, samarbeidende og bygget på et grunnlag av tillit. Ved å fortsette å bidra med høykvalitets, sikkerhetsfokuserte pakker til JavaScript-økosystemet, håper vi å spille en liten rolle i å bygge denne fremtiden.
Takk til alle som har brukt pakkene våre, bidratt til prosjektene våre, rapportert problemer eller rett og slett har spredd ordet om arbeidet vårt. Din støtte har gjort dette tiåret med effekt mulig, og vi er spente på å se hva vi kan oppnå sammen i løpet av de neste ti årene.
[^1]: npm-nedlastingsstatistikk for hytte, april 2025 [^2]: npm-nedlastingsstatistikk for bson-objectid, februar-mars 2025 [^3]: npm-nedlastingsstatistikk for url-regex-safe, april 2025 [^4]: GitHub-stjerner teller for forwardemail/forwardemail.net fra og med april 2025 [^5]: npm-nedlastingsstatistikk for forhåndsvisnings-e-post, april 2025 [^7]: npm-nedlastingsstatistikk for superagent, februar-mars 2025 [^8]: npm-nedlastingsstatistikk for supertest, februar-mars 2025 [^9]: npm-nedlastingsstatistikk for forhåndsvisnings-e-post, februar-mars 2025 [^10]: npm-nedlastingsstatistikk for hytte, februar-mars 2025 [^11]: npm-nedlastingsstatistikk for url-regex-safe, februar-mars 2025 [^12]: npm-nedlastingsstatistikk for spamscanner, februar-mars 2025 [^13]: Daglige nedlastingsmønstre fra npm-statistikk, april 2025 [^14]: Ukentlige nedlastingsmønstre fra npm-statistikk, april 2025 [^15]: npm-nedlastingsstatistikk for 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]: Basert på GitHub-problemer i Upptime-depotet [^28]: Basert på GitHub-problemer i Upptime-depotet [^29]: Basert på GitHub-problemer i Upptime-depotet [^30]: npm-nedlastingsstatistikk for bree, februar-mars 2025 [^31]: Basert på GitHub pull-forespørsler til Upptime [^32]: Basert på GitHub pull-forespørsler til Upptime [^34]: npm-nedlastingsstatistikk for koa, februar-mars 2025 [^35]: npm nedlastingsstatistikk for @koa/router, februar-mars 2025 [^36]: npm-nedlastingsstatistikk for koa-ruter, februar-mars 2025 [^37]: npm-nedlastingsstatistikk for url-regex, februar-mars 2025 [^38]: npm nedlastingsstatistikk for @breejs/later, februar-mars 2025 [^39]: npm-nedlastingsstatistikk for e-postmaler, februar-mars 2025 [^40]: npm-nedlastingsstatistikk for get-paths, februar-mars 2025 [^41]: npm-nedlastingsstatistikk for dotenv-parse-variables, februar-mars 2025 [^42]: npm nedlastingsstatistikk for @koa/multer, februar-mars 2025