Et tiår med innvirkning: Hvordan våre npm-pakker nådde 1 milliard nedlastinger og formet JavaScript

Forord
I JavaScript- og Node.js-verdenen er noen pakker essensielle – de lastes ned millioner av ganger daglig og driver apper over hele verden. Bak disse verktøyene står utviklere som fokuserer på åpen kildekode-kvalitet. I dag viser vi hvordan teamet vårt bidrar til å bygge og vedlikeholde npm-pakker som har blitt viktige 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. Isaac opprettet npm og bidro til å bygge Node.js. Hans tillit til videresendt e-post viser vårt fokus på kvalitet og sikkerhet. Isaac bruker videresendt e-post for flere domener, inkludert izs.me.
Isaacs innflytelse på JavaScript er enorm. I 2009 var han blant de første som så potensialet i Node.js, da han jobbet med Ryan Dahl, som skapte plattformen. Som Isaac sa i en intervju med Increment magazine-artikkel: «Midt i dette veldig lille fellesskapet av en gjeng mennesker som prøvde å finne ut hvordan man kunne få server-side JS til å skje, kom Ryan Dahl ut med Node, som helt klart var den riktige tilnærmingen. Jeg ga mitt bidrag og ble veldig involvert rundt midten av 2009.»
Note
For de som er interessert i historien til Node.js, finnes det utmerkede dokumentarer som kroniserer utviklingen, inkludert Historien om Node.js og 10 ting jeg angrer på med Node.js - Ryan Dahl. Ryan Dahls personlig nettside inneholder også verdifull innsikt i arbeidet hans.
Fra npms opprettelse til Node.js-ledelse
Isaac opprettet npm i september 2009, og den første brukbare versjonen ble utgitt tidlig i 2010. Denne pakkebehandleren dekket et sentralt behov i Node.js, og lot utviklere enkelt dele og gjenbruke kode. I følge Node.js Wikipedia-side ble "i januar 2010 en pakkebehandler introdusert for Node.js-miljøet kalt npm. Pakkebehandleren 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å hans sammendrag, «ledet han utviklingen av flere grunnleggende Node.js-kjerne-API-er, inkludert CommonJS-modulsystemet, filsystem-API-er og strømmer» og «fungerte som BDFL (Benevolent Dictator For Life) for prosjektet i to år, og sikret stadig økende kvalitet og pålitelig byggeprosess for Node.js-versjonene 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å egenhånd tidligere.
Vi takker Isaac for hans enorme bidrag til JavaScript og fortsetter å bruke mange pakker han 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 suksess med åpen kildekode står Nick Baugh, grunnleggeren og eieren av Forward Email. Hans arbeid 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 fellesskapet.
Ekspress teknisk komité og kjernebidrag
Nicks ekspertise innen webrammeverk ga ham en plass på Ekspress teknisk komité, hvor han hjalp til med et av de mest brukte Node.js-rammeverkene. Nick er nå oppført som et inaktivt medlem på Express-fellesskapsside.
Important
Express ble opprinnelig laget av TJ Holowaychuk, en produktiv bidragsyter til åpen kildekode 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 bidrag til åpen kildekode.
Som medlem av Ekspress teknisk komité viste Nick stor oppmerksomhet på detaljer i saker som å avklare req.originalUrl
-dokumentasjonen og fikse problemer med håndtering av flerdelte skjemaer.
Bidrag til Koa-rammeverket
Nicks arbeid med Koa-rammeverket – et moderne, lettere alternativ til Express, også laget av TJ Holowaychuk – viser ytterligere hans engasjement for bedre verktøy for webutvikling. Hans Koa-bidrag inkluderer både problemer og kode gjennom pull-forespørsler, håndtering av feil, håndtering av innholdstyper og forbedringer av dokumentasjon.
Arbeidet hans med både Express og Koa gir ham et unikt innblikk i 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 med å hjelpe eksisterende prosjekter, vokste til å opprette og vedlikeholde økosystemer for komplette pakker. Nick grunnla flere GitHub-organisasjoner – inkludert Kabin, Spam-skanner, Videresend e-post, Gutt og Bree – som hver løste spesifikke behov i JavaScript-fellesskapet.
Dette skiftet fra bidragsyter til leder viser Nicks visjon for veldesignet 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 forblir modulære og fleksible for det bredere utviklerfellesskapet.
Våre GitHub-organisasjoner: Innovasjonsøkosystemer
Vi organiserer arbeidet vårt med åpen kildekode rundt fokuserte GitHub-organisasjoner, som hver løser spesifikke behov innen JavaScript. Denne strukturen skaper sammenhengende pakkefamilier som fungerer godt sammen, samtidig som de forblir modulære.
Kabin: Strukturert logging for moderne applikasjoner
Hytteorganisering er vår tolkning av enkel og kraftig applogging. Hovedpakken cabin
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 det gjennomtenkte API-et og plugin-systemet. Støttepakker som axe
for Express-mellomvare og parse-request
for HTTP-forespørselsparsing viser vår forpliktelse til komplette løsninger snarere enn isolerte verktøy.
Pakken bson-objectid
fortjener spesiell omtale, med over 1,7 millioner nedlastinger på bare to måneder[2]. Denne lette MongoDB ObjectID-implementeringen har blitt det foretrukne valget for utviklere som trenger ID-er uten fulle MongoDB-avhengigheter.
Spam-skanner: Bekjempelse av e-postmisbruk
Spam Scanner-organisasjon viser vår forpliktelse til å løse reelle problemer. Hovedpakken spamscanner
tilbyr avansert e-postspam-deteksjon, men det er url-regex-safe
-pakken som har fått utrolig stor utbredelse.
Med over 1,2 millioner nedlastinger på to måneder[3], fikser url-regex-safe
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 Gjør om-sårbarheter i URL-validering), lage en solid løsning og vedlikeholde den nøye.
Bree: Moderne jobbplanlegging med arbeidertråder
Bree-organisasjonen er vårt svar på en vanlig Node.js-utfordring: pålitelig jobbplanlegging. Hovedpakken bree
, med over 3100 GitHub-stjerner, tilbyr en moderne jobbplanlegger som bruker Node.js-arbeidstråder for bedre ytelse og pålitelighet.
Note
Bree ble opprettet etter at vi bidro til å vedlikeholde Dagsorden, og brukte lærdommene våre til å bygge en bedre jobbplanlegger. Våre bidrag til agendaen hjalp oss med å finne måter å forbedre jobbplanleggingen på.
Hva gjør Bree annerledes enn andre planleggere som Agenda:
- Ingen eksterne avhengigheter: I motsetning til Agenda, som trenger MongoDB, krever ikke Bree Redis eller MongoDB for å administrere jobbstatus.
- Arbeidertråder: Bree bruker Node.js-arbeidertråder for sandkasseprosesser, noe som gir bedre isolasjon og ytelse.
- Enkel API: Bree tilbyr detaljert kontroll med enkelhet, noe som gjør det enklere å implementere komplekse planleggingsbehov.
- Innebygd støtte: Ting som elegant omlasting, cron-jobber, datoer og brukervennlige klokkeslett er inkludert som standard.
Bree er en sentral del av forwardemail.net, og håndterer kritiske bakgrunnsoppgaver som e-postbehandling, opprydding og planlagt vedlikehold. Bruken av Bree i Videresendt e-post viser vår forpliktelse til å bruke våre egne verktøy i produksjon, og sikrer at de oppfyller høye pålitelighetsstandarder.
Vi bruker og setter også pris på andre gode arbeidstrådpakker som basseng og HTTP-klienter som elleve. Piscina bruker, i likhet med Bree, Node.js-arbeidstråder for effektiv oppgavebehandling. Vi takker Matthew Hill, som vedlikeholder både undici og piscina, for hans store bidrag til Node.js. Matteo sitter 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 e-posttjeneste med åpen kildekode som tilbyr videresending av e-post, lagring og API-tjenester. Hovedarkivet har over 1100 GitHub-stjerner[4], noe som viser at fellesskapet setter pris på dette alternativet til proprietære e-posttjenester.
preview-email
-pakken fra denne organisasjonen, med over 2,5 millioner nedlastinger på to måneder, 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 den et vanlig problem ved å bygge e-postaktiverte applikasjoner.
Gutt: Viktige Koa-verktøy og -verktøy
Gutteorganisasjon tilbyr en samling viktige verktøy og verktøy som primært fokuserer på å forbedre Koa-rammeverkets økosystem. Disse pakkene løser vanlige utfordringer innen webutvikling og er utformet for å fungere sømløst sammen samtidig som de forblir uavhengig 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, sørger denne pakken for at ctx.throw
produserer brukervennlige feilmeldinger samtidig som den adresserer flere begrensninger i Koas innebygde feilbehandler:
- Oppdager og håndterer Node.js DNS-feil, Mongoose-feil og Redis-feil på riktig måte
- Bruker Boom for å lage konsistente, velformaterte feilresponser
- Bevarer overskrifter (i motsetning til Koas innebygde behandler)
- Opprettholder passende statuskoder i stedet for å bruke 500 som standard
- Støtter flash-meldinger og bevaring av økter
- Gir HTML-feillister for valideringsfeil
- Støtter flere responstyper (HTML, JSON og ren tekst)
Denne pakken er spesielt verdifull når den brukes sammen med koa-404-handler
for omfattende feilhåndtering i Koa-applikasjoner.
pass: Autentisering for Lad
@ladjs/passport
utvider den populære Passport.js-autentiseringsmellomvaren med spesifikke forbedringer for moderne webapplikasjoner. Denne pakken støtter flere autentiseringsstrategier rett ut av boksen:
- Lokal autentisering med e-post
- Logg på med Apple
- GitHub-autentisering
- Google-autentisering
- Autentisering med engangspassord (OTP)
Pakken er svært tilpassbar, slik at utviklere kan justere feltnavn og -fraser slik at de samsvarer med applikasjonens krav. Den er designet for å integreres 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.
elegant: Elegant programavslutning
@ladjs/graceful
løser den kritiske utfordringen med å stenge av Node.js-applikasjoner på en elegant måte. Med over 70 GitHub-stjerner sikrer denne pakken at applikasjonen din kan avsluttes uten å miste data eller la tilkoblinger henge seg. Viktige funksjoner inkluderer:
- Støtte for elegant lukking av HTTP-servere (Express/Koa/Fastify)
- Ren avstengning av databasetilkoblinger (MongoDB/Mongoose)
- Riktig lukking av Redis-klienter
- Håndtering av Bree-jobbplanleggere
- Støtte for tilpassede avstengningsbehandlere
- Konfigurerbare tidsavbruddsinnstillinger
- Integrasjon med loggsystemer
Denne pakken er viktig for produksjonsapplikasjoner der uventede nedstengninger kan føre til datatap eller -korrupsjon. Ved å implementere riktige nedstengningsprosedyrer bidrar @ladjs/graceful
til å sikre påliteligheten og stabiliteten til applikasjonen din.
Oppetid: Overvåking av oppetid med åpen kildekode
Oppetidsorganisasjon representerer vår forpliktelse til transparent, åpen kildekode-overvåking. Hoveddepotet for upptime
har over 13 000 GitHub-stjerner, noe som gjør det til et av de mest populære prosjektene vi bidrar til. Upptime tilbyr en GitHub-drevet oppetidsmonitor og statusside som fungerer helt uten en server.
Vi bruker Uptime for vår egen statusside på https://status.forwardemail.net med kildekoden tilgjengelig på https://github.com/forwardemail/status.forwardemail.net.
Det som gjør Uptime spesiell er arkitekturen:
- 100 % åpen kildekode: Alle komponenter 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 kreves: I motsetning til tradisjonelle overvåkingsverktøy krever ikke Uptime at du kjører eller vedlikeholder en server.
- Automatisk statusside: Genererer en vakker statusside som kan hostes på GitHub Pages.
- Kraftige varsler: Integreres med ulike varslingskanaler, inkludert e-post, SMS og Slack.
For å forbedre brukeropplevelsen har vi integrert @octokit/core i forwardemail.net-kodebasen for å gjengi statusoppdateringer og hendelser i sanntid direkte på nettstedet vårt. Denne integrasjonen gir brukerne våre tydelig åpenhet i tilfelle problemer på tvers av hele stacken vår (nettsted, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree osv.) med umiddelbare toastvarsler, endringer av badge-ikoner, advarselsfarger og mer.
@octokit/core-biblioteket lar oss hente sanntidsdata fra vårt Upptime GitHub-repositorium, behandle dem og vise dem på en brukervennlig måte. Når en tjeneste har et driftsavbrudd eller redusert ytelse, blir brukerne umiddelbart varslet via 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 forbedrer åpenhet og tillit.
Uptime har blitt tatt i bruk av hundrevis av organisasjoner som leter etter en transparent og pålitelig måte å overvåke tjenestene sine 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
Selv om våre pakker med åpen kildekode brukes av utviklere over hele verden, danner de også grunnlaget for vår egen tjeneste for videresending av e-post. Denne doble rollen – som både skapere og brukere av disse verktøyene – gir oss et unikt perspektiv på deres praktiske anvendelse og driver kontinuerlig forbedring.
Fra pakker til produksjon
Reisen fra individuelle pakker til et helhetlig produksjonssystem innebærer nøye integrering og utvidelse. For videresendt e-post inkluderer denne prosessen:
-
Tilpassede utvidelser: Bygge spesifikke utvidelser for videresending av e-post til våre pakker med åpen kildekode som dekker våre unike behov.
-
Integrasjonsmønstre: Utvikle mønstre for hvordan disse pakkene samhandler i et produksjonsmiljø.
-
Ytelsesoptimaliseringer: Identifisere og håndtere ytelsesflaskehalser som bare oppstår i stor skala.
-
Sikkerhetsherding: Legge til ekstra sikkerhetslag spesifikt for e-posthåndtering og beskyttelse av brukerdata.
Dette arbeidet representerer tusenvis av timer med utvikling utover selve kjernepakkene, noe som resulterer i en robust og sikker e-posttjeneste som utnytter det beste av våre bidrag med åpen kildekode.
Tilbakemeldingssløyfen
Det kanskje mest verdifulle aspektet ved å bruke våre egne pakker i produksjon er tilbakemeldingssløyfen det skaper. Når vi støter på begrensninger eller kanttilfeller i Videresendt e-post, oppdaterer vi dem ikke bare lokalt – vi forbedrer de underliggende pakkene, noe som gagner både tjenesten vår og det bredere fellesskapet.
Denne tilnærmingen har ført til en rekke forbedringer:
- Brees elegante avslutning: Videresendt e-posts behov for null nedetid i implementeringer førte til forbedrede elegante avslutningsmuligheter i Bree.
- Spam Scanners mønstergjenkjenning: Spammønstre fra den virkelige verden som oppstår i videresendt e-post har informert Spam Scanners deteksjonsalgoritmer.
- Cabins ytelsesoptimaliseringer: Logging av store mengder i produksjonen avdekket optimaliseringsmuligheter i Cabin som gagner alle brukere.
Ved å opprettholde denne positive sirkelen mellom vårt arbeid med åpen kildekode og produksjonstjenesten, sørger vi for at pakkene våre forblir praktiske, velprøvde løsninger snarere enn teoretiske implementeringer.
Kjerneprinsippene for videresending av e-post: Et grunnlag for fortreffelighet
Videresendt e-post er utformet i henhold til et sett med kjerneprinsipper som veileder alle våre utviklingsbeslutninger. Disse prinsippene, som er beskrevet i nettside, sikrer at tjenesten vår forblir utviklervennlig, sikker og fokusert på brukerens personvern.
Alltid utviklervennlig, sikkerhetsfokusert og transparent
Vårt første og viktigste prinsipp er å lage programvare som er utviklervennlig, samtidig som vi opprettholder de høyeste standardene for sikkerhet og personvern. Vi mener at teknisk kvalitet aldri skal gå på bekostning av brukervennlighet, og at åpenhet bygger tillit i fellesskapet vårt.
Dette prinsippet gjenspeiles i vår detaljerte dokumentasjon, tydelige feilmeldinger og åpne kommunikasjon om både suksesser og utfordringer. Ved å gjøre hele kodebasen vår åpen kildekode, inviterer vi til gransking og samarbeid, noe som styrker både programvaren vår og det bredere økosystemet.
Overholdelse av velprøvde prinsipper for programvareutvikling
Vi følger flere etablerte programvareutviklingsprinsipper som har bevist sin verdi over flere tiår:
- MVC: Separerer bekymringer gjennom Model-View-Controller-mønsteret
- Unix-filosofi: Lager modulære komponenter som gjør én ting bra
- KISS: Holder det enkelt og greit
- DRY: Ikke gjenta deg selv, fremmer gjenbruk av kode
- YAGNI: Du kommer ikke til å trenge det, unngår for tidlig optimalisering
- Tolv faktor: Følger beste praksis for å bygge moderne, skalerbare applikasjoner
- Occams barberhøvel: Velger den enkleste løsningen som oppfyller kravene
- Dogfooding: Bruker våre egne produkter i stor grad
Disse prinsippene er ikke bare teoretiske konsepter – de er innebygd i vår daglige utviklingspraksis. For eksempel er vår overholdelse av Unix-filosofien tydelig i hvordan vi har strukturert våre npm-pakker: små, fokuserte moduler som kan settes sammen for å løse komplekse problemer.
Retter seg mot den useriøse, bootstrappede utvikleren
Vi retter oss spesielt mot scrappy-utviklere, bootstrappede utviklere og ramen-lønnsom-utviklere. Dette fokuset former alt fra prismodellen vår til de tekniske beslutningene våre. 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 tilnæ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 ressurser.
Prinsipper i praksis: Kodebasen for videresendt e-post
Disse prinsippene er tydelig synlige i kodebasen for videresending av e-post. Vår package.json-fil viser 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-*
-verktøyene fra Sindre Sørhus
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.
Personvern basert på design
Personvern er ikke en ettertanke eller markedsføringsfunksjon for videresending av 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-poster.
- Minimal datainnsamling: Vi samler kun inn dataene som er nødvendige for å tilby tjenesten vår, ikke noe mer.
- Gjennomsiktige retningslinjer: Personvernerklæringen vår er skrevet i et klart og forståelig språk uten juridisk sjargong.
- Verifisering av åpen kildekode: Vår kodebase med åpen kildekode lar sikkerhetsforskere bekrefte personvernpåstandene våre.
Denne forpliktelsen gjelder også våre pakker med åpen kildekode, som er utviklet med beste praksis for sikkerhet og personvern innebygd fra grunnen av.
Bærekraftig åpen kildekode
Vi mener at programvare med åpen kildekode 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 verktøy med åpen kildekode.
- Balansert lisensiering: Bruk av lisenser som beskytter både brukerfriheter og prosjektets bærekraft.
- Samfunnsengasjement: Aktivt engasjere seg med bidragsytere for å bygge et støttende fellesskap.
- Gjennomsiktige veikart: Dele utviklingsplanene våre slik at brukerne kan planlegge deretter.
Ved å fokusere på bærekraft sikrer vi at våre bidrag til åpen kildekode kan fortsette å vokse og forbedres over tid, i stedet for å bli forsømt.
Tallene lyver ikke: Vår svimlende npm-nedlastingsstatistikk
Når vi snakker om effekten av åpen kildekode-programvare, gir nedlastingsstatistikk et konkret mål på adopsjon og tillit. Mange av pakkene vi hjelper til med å vedlikeholde har nådd et omfang som få åpen kildekode-prosjekter noen gang oppnår, med samlede nedlastinger i milliardklassen.
Important
Selv om vi er stolte av å bidra til å vedlikeholde flere pakker med høy nedlasting 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 avgjørende for å forme Node.js-økosystemet.
Et fugleperspektiv på vår innvirkning
I løpet av bare tomånedersperioden fra februar til mars 2025, er de beste pakkene vi bidrar til og bidrar til å opprettholde rekordhøye nedlastingstall:
- superagent: 84 575 829 nedlastinger[5] (opprinnelig opprettet av TJ Holowaychuk)
- supertest: 76 432 591 nedlastinger[6] (opprinnelig opprettet av TJ Holowaychuk)
- også: 28 539 295 nedlastinger[7] (opprinnelig opprettet av TJ Holowaychuk)
- @koa/ruter: 11 007 327 nedlastinger[8]
- koa-ruter: 3 498 918 nedlastinger[9]
- url-regex: 2 819 520 nedlastinger[10]
- forhåndsvisnings-e-post: 2 500 000 nedlastinger[11]
- kabin: 1 800 000 nedlastinger[12]
- @breejs/senere: 1 709 938 nedlastinger[13]
- e-postmaler: 1 128 139 nedlastinger[14]
- __PROTECTED_LINK_259__0: 1 124 686 nedlastinger[15]
- __PROTECTED_LINK_259__1: 1 200 000 nedlastinger[16]
- __PROTECTED_LINK_259__2: 894 666 nedlastinger[17]
- __PROTECTED_LINK_259__3: 839 585 nedlastinger[18]
- __PROTECTED_LINK_259__4: 145 000 nedlastinger[19]
- __PROTECTED_LINK_259__5: 24 270 nedlastinger[20]
Note
Flere andre pakker vi hjelper til med å vedlikeholde, men ikke har laget, har enda høyere nedlastingtall, inkludert form-data
(738 millioner+ nedlastinger), toidentifier
(309 millioner+ nedlastinger), stackframe
(116 millioner+ nedlastinger) og error-stack-parser
(113 millioner+ nedlastinger). Vi er beæret over å kunne bidra til disse pakkene samtidig som vi respekterer arbeidet til de opprinnelige forfatterne.
Dette er ikke bare imponerende tall – de representerer ekte utviklere som løser ekte problemer med kode som vi hjelper til med å vedlikeholde. Hver nedlasting er et eksempel der disse pakkene har hjulpet noen med å bygge noe meningsfullt, fra hobbyprosjekter til bedriftsapplikasjoner som brukes av millioner.
Daglig påvirkning i stor skala
De daglige nedlastingsmønstrene viser jevn bruk med høyt volum, med topper som når millioner av nedlastinger per dag[21]. Denne konsistensen vitner om stabiliteten og påliteligheten til disse pakkene – utviklere prøver dem ikke bare ut; de integrerer dem i sine kjernearbeidsflyter og er avhengige av dem dag etter dag.
Ukentlige nedlastingsmønstre viser enda mer imponerende tall, og ligger konsekvent rundt titalls millioner nedlastinger per uke[22]. Dette representerer et enormt fotavtrykk i JavaScript-økosystemet, med disse pakkene som kjører i produksjonsmiljøer over hele verden.
Utover de rå tallene
Selv om nedlastingsstatistikken i seg selv er imponerende, forteller den en dypere historie om tilliten fellesskapet har til disse pakkene. Å vedlikeholde pakker i denne skalaen krever en urokkelig forpliktelse til:
- Bakomkompatibilitet: Endringer må vurderes nøye for å unngå å ødelegge eksisterende implementeringer.
- Sikkerhet: Med millioner av applikasjoner som er avhengige av disse pakkene, kan sikkerhetssårbarheter ha vidtrekkende konsekvenser.
- Ytelse: I denne skalaen kan selv mindre ytelsesforbedringer ha betydelige samlede fordeler.
- Dokumentasjon: Tydelig og omfattende dokumentasjon er viktig for pakker som brukes av utviklere på alle erfaringsnivåer.
Den jevne veksten i nedlastingstall over tid gjenspeiler suksessen med å oppfylle disse forpliktelsene, og bygge tillit med utviklermiljøet gjennom pålitelige og godt vedlikeholdte pakker.
Støtter økosystemet: Våre sponsoravtaler med åpen kildekode
Tip
Bærekraft med åpen kildekode 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 sponsoravtaler inkluderer:
Andris Reinman: Pioner innen e-postinfrastruktur
Andris Reinman er skaperen av Nodemailer, det mest populære e-postbiblioteket for Node.js med over 14 millioner ukentlige nedlastinger[23]. Arbeidet hans strekker seg til andre kritiske e-postinfrastrukturkomponenter som SMTP-server, E-postparser og Villand.
Vårt sponsorskap bidrar til å sikre fortsatt vedlikehold og utvikling av disse viktige verktøyene som driver e-postkommunikasjon for utallige Node.js-applikasjoner, inkludert vår egen tjeneste for videresending av e-post.
Sindre Sorhus: Utility Package Mastermind
Sindre Sorhus er en av de mest produktive bidragsyterne innen åpen kildekode i JavaScript-økosystemet, med over 1000 npm-pakker bak seg. Verktøyene hans som p-kart, p-forsøk 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 sponsoravtalene gjenspeiler vår forpliktelse til det bredere økosystemet med åpen kildekode. Vi erkjenner at vår egen suksess er bygget på grunnlaget lagt av disse og andre bidragsytere, og vi er dedikert til å sikre bærekraften til hele økosystemet.
Avdekking av sikkerhetsproblemer i JavaScript-økosystemet
Vår forpliktelse til åpen kildekode strekker seg utover funksjonsutvikling og inkluderer også å identifisere og håndtere sikkerhetssårbarheter som kan påvirke millioner av utviklere. Flere av våre viktigste bidrag til JavaScript-økosystemet har vært innen sikkerhet.
Koa-ruterredningen
I februar 2019 identifiserte Nick et kritisk problem med vedlikeholdet av den populære koa-router-pakken. Da han rapportert på Hacker News, hadde pakken blitt forlatt av den opprinnelige vedlikeholderen, noe som førte til at sikkerhetssårbarheter ikke ble adressert og fellesskapet uten oppdateringer.
Warning
Forlatte pakker med sikkerhetssårbarheter utgjør betydelig risiko for hele økosystemet, spesielt når de lastes ned millioner av ganger i uken.
Som svar opprettet Nick @koa/ruter og hjalp til med å varsle fellesskapet om situasjonen. Han har vedlikeholdt denne kritiske pakken siden den gang, og sørget for at Koa-brukere har en sikker og godt vedlikeholdt rutingsløsning.
Håndtering av ReDoS-sårbarheter
I 2020 identifiserte og adresserte Nick et kritisk Tjenestenektelse for regulært uttrykk (ReDoS)-sårbarhet i den mye brukte url-regex
-pakken. Dette sikkerhetsproblemet (SNYK-JS-URLREGEX-569472) kan tillate angripere å forårsake tjenestenekt ved å gi spesiallaget input som forårsaker katastrofal tilbakesporing i det regulære uttrykket.
I stedet for å bare oppdatere den eksisterende pakken, laget Nick url-regex-safe
, en fullstendig omskrevet implementering som adresserer sårbarheten samtidig som den opprettholder kompatibiliteten med det opprinnelige API-et. Han publiserte også en omfattende blogginnlegg som forklarer sårbarheten og hvordan man kan redusere den.
Dette arbeidet viser vår tilnærming til sikkerhet: ikke bare å løse problemer, men å utdanne samfunnet og tilby robuste alternativer som forhindrer lignende problemer i fremtiden.
Forkjemper for Node.js og Chromium-sikkerhet
Nick har også vært aktiv i arbeidet med å forbedre sikkerheten i det bredere økosystemet. I august 2020 identifiserte han et betydelig sikkerhetsproblem i Node.js knyttet til håndteringen av HTTP-overskrifter, noe som ble rapportert i Registeret.
Dette problemet, som stammet fra en oppdatering i Chromium, kunne potensielt tillate angripere å omgå sikkerhetstiltak. Nicks arbeid bidro til å sikre at problemet ble løst raskt, og dermed 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 e-postautentiseringsprotokollene DMARC, SPF og DKIM 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-postsikkerhet, og beskyttet 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
Videresendt e-post er bygget på flere kritiske åpen kildekode-prosjekter, inkludert Nodemailer, WildDuck og mailauth. Teamet vårt har gitt betydelige bidrag til disse prosjektene, og har bidratt til å identifisere og fikse dyptgående problemer som påvirker e-postlevering og -sikkerhet.
Forbedring av Nodemailers kjernefunksjonalitet
Nodemailer er ryggraden i e-postsending i Node.js, og våre bidrag har bidratt til å gjøre den mer robust:
- Forbedringer av SMTP-server: Vi har fikset parseringsfeil, problemer med strømhåndtering og TLS-konfigurasjonsproblemer i SMTP-serverkomponenten[24][25].
- Forbedringer av e-postparser: Vi har adressert feil med dekoding av tegnsekvenser og parserproblemer som kan forårsake feil i e-postbehandlingen[26][27].
Disse bidragene sikrer at Nodemailer forblir et pålitelig grunnlag for e-postbehandling i Node.js-applikasjoner, inkludert videresending av e-post.
Avanserte e-postautentiseringer med Mailauth
Mailauth tilbyr kritisk e-postautentiseringsfunksjonalitet, og våre bidrag har forbedret funksjonene betydelig:
- Forbedringer av DKIM-verifisering: Vi oppdaget og rapporterte at X/Twitter hadde DNS-cacheproblemer som forårsaket DKIM-feil for utgående meldinger, og rapporterte dette på Hacker One[28].
- Forbedringer av DMARC og ARC: Vi har løst problemer med DMARC- og ARC-verifisering som kan føre til feil autentiseringsresultater[29][30].
- Ytelsesoptimaliseringer: Vi har bidratt med optimaliseringer som forbedrer ytelsen til e-postautentiseringsprosesser[31][32][33][34].
Disse forbedringene bidrar til å sikre at e-postautentisering er nøyaktig og pålitelig, og beskytter brukere mot phishing- og forfalskningsangrep.
Forbedringer av nøkkeloppetid
Våre bidrag til Uptime inkluderer:
- Overvåking av SSL-sertifikat: Vi har lagt til funksjonalitet for å overvåke utløp av SSL-sertifikater, noe som forhindrer uventet nedetid på grunn av utløpte sertifikater[35].
- Støtte for flere SMS-numre: Vi har implementert støtte for å varsle flere teammedlemmer via SMS når hendelser oppstår, noe som forbedrer responstidene[36].
- Rettelser for IPv6-sjekk: Vi har løst problemer med IPv6-tilkoblingssjekker, noe som sikrer mer nøyaktig overvåking i moderne nettverksmiljøer[37].
- Støtte for mørk/lys modus: Vi har lagt til temastøtte for å forbedre brukeropplevelsen på statussider[38].
- Bedre TCP-Ping-støtte: Vi har forbedret TCP-ping-funksjonaliteten for å gi mer pålitelig tilkoblingstesting[39].
Disse forbedringene er ikke bare til fordel for statusovervåkingen av Forward Email, men de er også tilgjengelige for hele Uptime-brukerfellesskapet, noe som demonstrerer vår forpliktelse til å forbedre verktøyene vi er avhengige av.
Limet som holder alt sammen: Tilpasset kode i stor skala
Selv om våre npm-pakker og bidrag til eksisterende prosjekter er betydelige, er det den tilpassede koden som integrerer disse komponentene som virkelig viser frem vår tekniske ekspertise. Kodebasen for videresending av e-post representerer et tiår med utviklingsinnsats, som går tilbake til 2017 da prosjektet startet som gratis videresending av e-post før det ble slått sammen til et monorepo.
En massiv utviklingsinnsats
Omfanget av denne tilpassede integrasjonskoden er imponerende:
- Totale bidrag: Over 3217 commits
- Kodebasestørrelse: Over 421 545 kodelinjer 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 ingrediensen» som forvandler individuelle pakker til en sammenhengende og pålitelig tjeneste som brukes av tusenvis av kunder daglig.
Integrering av kjerneavhengigheter
Kodebasen for videresending av e-post integrerer en rekke avhengigheter til en sømløs helhet:
- E-postbehandling: Integrerer Nodemailer for sending, SMTP-server for mottak og Mailparser for parsing
- Autentisering: 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: Bruker Bree for pålitelig bakgrunnsoppgavebehandling med arbeidstråder
- Maler: Bruker e-postmaler for å gjenbruke stilark fra nettstedet i kundekommunikasjon
- E-postlagring: Implementerer individuelt krypterte SQLite-postbokser ved hjelp av better-sqlite3-multiple-chiffer med ChaCha20-Poly1305-kryptering for kvantesikker personvern, noe som sikrer fullstendig isolasjon mellom brukere og at bare brukeren har tilgang til postboksen sin
Hver av disse integrasjonene krever nøye vurdering av kanttilfeller, 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 statusoppdateringer i sanntid på tvers av infrastrukturen vår.
DNS-infrastruktur med Tangerine og mx-connect
En kritisk komponent i infrastrukturen for videresendt e-post er DNS-løsningssystemet vårt, bygget rundt to nøkkelpakker:
-
Mandarin: Vår Node.js DNS-over-HTTPS-implementering tilbyr en drop-in-erstatning for standard DNS-resolver, med innebygde nye forsøk, timeouts, smart serverrotasjon og støtte for mellomlagring.
-
mx-connect: Denne pakken oppretter TCP-tilkoblinger til MX-servere, tar et måldomene eller en e-postadresse, løser opp aktuelle MX-servere og kobler til dem i prioritert rekkefølge.
Vi har integrert Tangerine med mx-connect gjennom pull request #4, som sikrer DNS på applikasjonslaget over HTTP-forespørsler gjennom hele Videresendt e-post. Dette gir global hurtigbufring for DNS i skala med 1:1-konsistens på tvers av enhver region, app eller prosess – kritisk for pålitelig e-postlevering i et distribuert system.
Bedriftspåvirkning: Fra åpen kildekode til forretningskritiske løsninger
Kulminasjonen av vår tiår lange reise innen utvikling av åpen kildekode har gjort det mulig for Videresendt e-post å betjene ikke bare individuelle utviklere, men også store bedrifter og utdanningsinstitusjoner som danner ryggraden i selve åpen kildekode-bevegelsen.
Casestudier i forretningskritisk e-postinfrastruktur
Vår forpliktelse til pålitelighet, personvern og prinsipper for åpen kildekode har gjort Videresendt e-post til det pålitelige valget for organisasjoner med krevende e-postkrav:
-
Utdanningsinstitusjoner: Som beskrevet i vår [casestudie om videresending av e-post for alumner]](https://forwardemail.net/blog/docs/alumni-email-forwarding-university-case-study). Store universiteter er avhengige av infrastrukturen vår for å opprettholde livslange forbindelser med hundretusenvis av alumner gjennom pålitelige e-postvideresendingstjenester.
-
Linux-løsninger for bedrifter: Canonical Ubuntu e-post casestudie for bedrifter demonstrerer hvordan vår åpen kildekode-tilnærming samsvarer perfekt med behovene til leverandører av Linux for bedrifter, og gir dem den åpenheten og kontrollen de trenger.
-
Open Source Foundation: Det som kanskje er mest verdifullt er partnerskapet vårt med Linux Foundation, som dokumentert i Casestudie av e-post til bedrifter i Linux Foundation, der tjenesten vår driver kommunikasjonen for organisasjonen som forvalter Linux-utvikling.
Det er en vakker symmetri i hvordan våre åpne kildekode-pakker, vedlikeholdt med omhu over mange år, har gjort det mulig for oss å bygge en e-posttjeneste som nå støtter de samme lokalsamfunnene og organisasjonene som kjemper for åpen kildekode-programvare. Denne komplette reisen – fra å bidra med individuelle pakker til å drive e-postinfrastruktur i bedriftsklassen for ledere innen åpen kildekode – representerer den ultimate valideringen av vår tilnærming til programvareutvikling.
Et tiår med åpen kildekode: Et blikk fremover
Når vi ser tilbake på et tiår med bidrag fra åpen kildekode og frem mot de neste ti årene, er vi fylt med takknemlighet for fellesskapet som har støttet arbeidet vårt og begeistring for det som skal komme.
Vår reise fra individuelle pakkebidragsytere til vedlikeholdere av en omfattende e-postinfrastruktur som brukes av store bedrifter og åpen kildekode-stiftelser har vært bemerkelsesverdig. Det er et bevis på kraften i åpen kildekode-utvikling og den innvirkningen gjennomtenkt, godt vedlikeholdt programvare kan ha på det bredere økosystemet.
I årene som kommer er vi forpliktet til å:
- Vi fortsetter å vedlikeholde og forbedre våre eksisterende pakker, og sørger for at de forblir pålitelige verktøy for utviklere over hele verden.
- Vi utvider våre bidrag til kritiske infrastrukturprosjekter, spesielt innen e-post og sikkerhetsdomener.
- Vi forbedrer mulighetene for videresending av e-post, samtidig som vi opprettholder vår forpliktelse til personvern, sikkerhet og åpenhet.
- Vi støtter neste generasjon av åpen kildekode-bidragsytere gjennom veiledning, sponsing og samfunnsengasjement.
Vi tror at fremtiden for programvareutvikling er åpen, samarbeidsbasert og bygget på et fundament av tillit. Ved å fortsette å bidra med pakker av høy kvalitet med fokus på sikkerhet til JavaScript-økosystemet, håper vi å kunne spille en liten rolle i å bygge den fremtiden.
Takk til alle som har brukt pakkene våre, bidratt til prosjektene våre, rapportert problemer eller bare spredt ordet om arbeidet vårt. Deres støtte har gjort dette tiåret med innvirkning mulig, og vi gleder oss til å se hva vi kan oppnå sammen i løpet av de neste ti årene.
npm nedlastingsstatistikk for cabin, april 2025 ↩︎
npm nedlastingsstatistikk for bson-objectid, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for url-regex-safe, april 2025 ↩︎
GitHub-stjernetelling for forwardemail/forwardemail.net per april 2025 ↩︎
npm nedlastingsstatistikk for superagent, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for supertest, februar–mars 2025 ↩︎
npm-nedlastingsstatistikk for koa, februar-mars 2025 ↩︎
npm-nedlastingsstatistikk for @koa/router, februar-mars 2025 ↩︎
npm-nedlastingsstatistikk for koa-router, februar-mars 2025 ↩︎
npm nedlastingsstatistikk for url-regex, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for preview-email, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for cabin, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for @breejs/later, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for e-postmaler, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for get-paths, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for url-regex-safe, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for dotenv-parse-variabler, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for @koa/multer, februar–mars 2025 ↩︎
npm nedlastingsstatistikk for spamscanner, februar-mars 2025 ↩︎
npm-nedlastingsstatistikk for bree, februar-mars 2025 ↩︎
Daglige nedlastingsmønstre fra npm-statistikk, april 2025 ↩︎
Ukentlige nedlastingsmønstre fra npm-statistikk, april 2025 ↩︎
npm nedlastingsstatistikk for nodemailer, april 2025 ↩︎
https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min ↩︎
https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min0 ↩︎
Basert på GitHub-problemer i Upptime-repositoriet ↩︎
Basert på GitHub-problemer i Upptime-repositoriet ↩︎
Basert på GitHub-problemer i Upptime-repositoriet ↩︎
Basert på GitHub-pull-forespørsler til Upptime ↩︎
Basert på GitHub-pull-forespørsler til Upptime ↩︎