Et årti med effekt: Hvordan vores npm-pakker ramte 1 milliard downloads og formede JavaScript
I JavaScript og Node.js verden, nogle pakker er essentielle – downloades millioner af gange dagligt og driver apps over hele verden. Bag disse værktøjer er udviklere fokuseret på open source-kvalitet. I dag viser vi, hvordan vores team hjælper med at bygge og vedligeholde npm-pakker, der er blevet vigtige dele af JavaScript-økosystemet.
Pionererne, der stoler på os: Isaac Z. Schlueter og videresend e-mail
Vi er stolte af at have Isaac Z. Schlueter (GitHub: isaacs) som bruger. Isak skabte npm og var med til at bygge Node.js. Hans tillid til Forward Email viser vores fokus på kvalitet og sikkerhed. Isaac bruger Videresend e-mail til flere domæner, herunder izs.me.
Isaacs indflydelse på JavaScript er enorm. I 2009 var han blandt de første til at se Node.js' potentiale, arbejde med Ryan Dahl, der har skabt platformen. Som Isak sagde i en interview med Increment magazine: "Midt i dette meget lille fællesskab af en flok mennesker, der forsøgte at finde ud af, hvordan man får server-side JS til at ske, kom Ryan Dahl ud med Node, hvilket bare meget tydeligt var den rigtige tilgang. Jeg kastede mine chips ind med det og blev meget involveret i omkring midten af 2009."
[!NOTE] For dem, der er interesseret i historien om Node.js, er der fremragende dokumentarer tilgængelige, som fortæller om udviklingen af det, bl.a. Historien om Node.js og 10 ting, jeg fortryder ved Node.js - Ryan Dahl. Ryan Dahls personlig hjemmeside rummer også værdifuld indsigt i hans arbejde.
Fra npm's oprettelse til Node.js ledelse
Isaac oprettede npm i september 2009, hvor den første brugbare version blev udgivet i begyndelsen af 2010. Denne pakkehåndtering udfyldte et centralt behov i Node.js, hvilket gjorde det nemt for udviklere at dele og genbruge kode. Ifølge Node.js Wikipedia-side, "I januar 2010 blev en pakkehåndtering introduceret til Node.js-miljøet kaldet npm. Pakkehåndteringen giver programmører mulighed for at udgive og dele Node.js-pakker sammen med den medfølgende kildekode og er designet til at forenkle installation, opdatering og afinstallation af pakker."
Da Ryan Dahl trådte tilbage fra Node.js i januar 2012, overtog Isaac som projektleder. Som nævnt på hans resumé, han "Ledede udviklingen af flere grundlæggende Node.js kerne API'er, herunder CommonJS modulsystem, filsystem API'er og streams" og "Fungerede som BDFL (Benevolent Dictator For Life) af projektet i 2 år, hvilket sikrede stadigt stigende kvalitet og pålidelig byggeproces for Node.js versioner v0.6 til v0.10."
Isaac guidede Node.js gennem en vigtig vækstperiode og satte standarder, der stadig former platformen i dag. Han startede senere npm, Inc. i 2014 for at støtte npm-registret, som han før havde drevet på egen hånd.
Vi takker Isaac for hans enorme bidrag til JavaScript og fortsætter med at bruge mange pakker, han har oprettet. Hans arbejde har ændret, hvordan vi bygger software, og hvordan millioner af udviklere deler kode verden over.
Arkitekten bag koden: Nick Baughs rejse
Kernen i vores open source-succes er Nick Baugh, Forward Emails grundlægger og ejer. Hans arbejde med JavaScript strækker sig over næsten 20 år og har formet, hvordan utallige udviklere bygger apps. Hans open source-rejse viser både tekniske færdigheder og fællesskabslederskab.
Ekspres teknisk udvalg og kernebidrag
Nicks web framework ekspertise gav ham en plads på Express Teknisk Udvalg, hvor han hjalp med et af de mest brugte Node.js frameworks. Nick er nu opført som et inaktivt medlem på Express community-side.
[!VIGTIG] Express blev oprindeligt skabt af TJ Holowaychuk, en produktiv open source-bidragyder, som har formet meget af Node.js-økosystemet. Vi er taknemmelige for TJ's grundlæggende arbejde og respekterer hans beslutning om at holde pause fra hans omfattende open source-bidrag.
Som medlem af Express Teknisk Udvalg, Nick viste stor opmærksomhed på detaljer i spørgsmål som afklaring req.originalUrl
dokumentation og løsning af flerdelt formularhåndteringsproblemer.
Koa Framework Bidrag
Nicks arbejde med Koa ramme-et moderne, lettere alternativ til Express også skabt af TJ Holowaychuk - viser yderligere hans engagement i bedre webudviklingsværktøjer. Hans Koa-bidrag omfatter både problemer og kode gennem pull-anmodninger, adressering af fejlhåndtering, indholdstypestyring og dokumentationsforbedringer.
Hans arbejde på tværs af både Express og Koa giver ham et unikt overblik over Node.js-webudvikling, og hjælper vores team med at skabe pakker, der fungerer godt med flere framework-økosystemer.
Fra individuel bidragyder til organisationsleder
Det, der startede som at hjælpe eksisterende projekter, voksede til at skabe og vedligeholde hele pakkens økosystemer. Nick grundlagde flere GitHub-organisationer - inklusiv Kabine, Spam scanner, Videresend e-mail, Drenge, og Bree— hver løser specifikke behov i JavaScript-fællesskabet.
Dette skift fra bidragyder til leder viser Nicks vision for veldesignet software, der løser reelle problemer. Ved at organisere relaterede pakker under fokuserede GitHub-organisationer har han bygget værktøjsøkosystemer, der arbejder sammen, mens de forbliver modulære og fleksible for det bredere udviklerfællesskab.
Vores GitHub-organisationer: Ecosystems of Innovation
Vi organiserer vores open source-arbejde omkring fokuserede GitHub-organisationer, der hver især løser specifikke behov i JavaScript. Denne struktur skaber sammenhængende pakkefamilier, der fungerer godt sammen, mens de forbliver modulære.
Kabine: Struktureret logning til moderne applikationer
Det Kahyts organisation er vores bud på enkel, kraftfuld app-logning. Det vigtigste cabin
pakken har næsten 900 GitHub-stjerner og over 100.000 ugentlige downloads[^1]. Cabin leverer struktureret logning, der fungerer med populære tjenester som Sentry, LogDNA og Papertrail.
Det, der gør Cabin speciel, er dens gennemtænkte API og plugin-system. Støttepakker som axe
til Express middleware og parse-request
til HTTP-anmodningsparsing viser vores forpligtelse til komplette løsninger frem for isolerede værktøjer.
Det bson-objectid
pakken fortjener særlig omtale med over 1,7 millioner downloads på kun to måneder[^2]. Denne lette MongoDB ObjectID-implementering er blevet go-to for udviklere, der har brug for ID'er uden fulde MongoDB-afhængigheder.
Spamscanner: Bekæmpelse af e-mailmisbrug
Det Spam Scanner organisation viser vores forpligtelse til at løse reelle problemer. Det vigtigste spamscanner
pakken giver avanceret e-mail spam detektion, men det er url-regex-safe
pakke, der har set fantastisk adoption.
Med over 1,2 millioner downloads på to måneder[^3], url-regex-safe
løser kritiske sikkerhedsproblemer i andre regulære URL-genkendelsesudtryk. Denne pakke viser vores tilgang til open source: at finde et almindeligt problem (i dette tilfælde, RedoS sårbarheder i URL-validering), skabe en solid løsning og vedligeholde den omhyggeligt.
Bree: Moderne jobplanlægning med arbejdstråde
Det Bree organisation er vores svar på en almindelig Node.js-udfordring: pålidelig jobplanlægning. Det vigtigste bree
pakke med over 3.100 GitHub-stjerner giver en moderne jobplanlægger, der bruger Node.js-arbejdertråde for bedre ydeevne og pålidelighed.
[!NOTE] Bree blev skabt, efter at vi hjalp med at vedligeholde Dagsorden, anvender erfaringer til at opbygge en bedre jobplanlægger. Vores Agenda-bidrag hjalp os med at finde måder at forbedre jobplanlægningen på.
Hvad gør Bree anderledes end andre planlæggere som Agenda:
- Ingen eksterne afhængigheder: I modsætning til Agenda, som har brug for MongoDB, kræver Bree ikke Redis eller MongoDB for at administrere jobstatus.
- Arbejdstråde: Bree bruger Node.js-arbejdertråde til sandkasseprocesser, hvilket giver bedre isolation og ydeevne.
- Simpel API: Bree tilbyder detaljeret kontrol med enkelhed, hvilket gør det nemmere at implementere komplekse planlægningsbehov.
- Indbygget support: Ting som yndefuld genindlæsning, cron-job, datoer og menneskevenlige tidspunkter er inkluderet som standard.
Bree er en central del af forwardemail.net, håndtering af kritiske baggrundsopgaver som e-mailbehandling, oprydning og planlagt vedligeholdelse. Brug af Bree i Forward Email viser vores forpligtelse til at bruge vores egne værktøjer i produktionen, hvilket sikrer, at de opfylder høje pålidelighedsstandarder.
Vi bruger og værdsætter også andre gode trådpakker som f.eks pool og HTTP-klienter kan lide elleve. Piscina bruger ligesom Bree Node.js-arbejdertråde til effektiv opgavebehandling. Vi takker Matthew Hill, der opretholder både undici og piscina, for sine store bidrag til Node.js. Matteo tjener i Node.js Technical Steering Committee og har i høj grad forbedret HTTP-klientfunktionerne i Node.js.
Videresend e-mail: Open Source e-mail-infrastruktur
Vores mest ambitiøse projekt er Videresend e-mail, en open source e-mail-tjeneste, der leverer e-mail-videresendelse, -lagring og API-tjenester. Hovedlageret har over 1.100 GitHub-stjerner[^4], hvilket viser fællesskabets påskønnelse af dette alternativ til proprietære e-mail-tjenester.
Det preview-email
pakke fra denne organisation, med over 2,5 millioner downloads på to måneder[^5], er blevet et vigtigt værktøj for udviklere, der arbejder med e-mailskabeloner. Ved at give en enkel måde at få vist e-mails på under udviklingen, løser det et almindeligt problem ved at bygge e-mail-aktiverede applikationer.
Lad: Essential Koa Utilities and Tools
Det Drenge organisation leverer en samling af væsentlige værktøjer og værktøjer, der primært er fokuseret på at forbedre Koa-ramme-økosystemet. Disse pakker løser almindelige udfordringer inden for webudvikling og er designet til at arbejde problemfrit sammen, mens de forbliver uafhængige nyttige.
koa-better-error-handler: Improved Error Handling for Koa
koa-better-error-handler
tilbyder en bedre fejlhåndteringsløsning til Koa-applikationer. Med over 50 GitHub-stjerner gør denne pakke ctx.throw
producere brugervenlige fejlmeddelelser, mens du adresserer adskillige begrænsninger ved Koas indbyggede fejlbehandler:
- Registrerer og håndterer Node.js DNS-fejl, Mongoose-fejl og Redis-fejl korrekt
- Bruger Bom til at skabe konsistente, velformaterede fejlsvar
- Bevarer overskrifter (i modsætning til Koas indbyggede handler)
- Vedligeholder passende statuskoder i stedet for at indstille til 500 som standard
- Understøtter flash-beskeder og sessionsbevaring
- Leverer HTML-fejllister for valideringsfejl
- Understøtter flere svartyper (HTML, JSON og almindelig tekst)
Denne pakke er særlig værdifuld, når den bruges ved siden af koa-404-handler
til omfattende fejlhåndtering i Koa-applikationer.
pas: Autentificering for Lad
@ladjs/passport
udvider den populære Passport.js-godkendelses-middleware med specifikke forbedringer til moderne webapplikationer. Denne pakke understøtter flere godkendelsesstrategier ud af boksen:
- Lokal godkendelse med e-mail
- Log ind med Apple
- GitHub-godkendelse
- Google-godkendelse
- Engangskodeord (OTP) godkendelse
Pakken er meget tilpasselig, hvilket giver udviklere mulighed for at justere feltnavne og sætninger, så de matcher deres applikations krav. Den er designet til at integreres problemfrit med Mongoose til brugeradministration, hvilket gør den til en ideel løsning til Koa-baserede applikationer, der har brug for robust godkendelse.
yndefuld: Elegant programnedlukning
@ladjs/graceful
løser den kritiske udfordring med yndefuldt at lukke Node.js-applikationer ned. Med over 70 GitHub-stjerner sikrer denne pakke, at din applikation kan afsluttes rent uden at miste data eller lade forbindelser hænge. Nøglefunktioner omfatter:
- Understøttelse af elegant lukning af HTTP-servere (Express/Koa/Fastify)
- Ren nedlukning af databaseforbindelser (MongoDB/Mongoose)
- Korrekt lukning af Redis kunder
- Håndtering af Bree jobplanlæggere
- Support til brugerdefinerede shutdown-handlere
- Konfigurerbare timeout-indstillinger
- Integration med logningssystemer
Denne pakke er vigtig for produktionsapplikationer, hvor uventede nedlukninger kan føre til datatab eller korruption. Ved at implementere korrekte nedlukningsprocedurer, @ladjs/graceful
hjælper med at sikre pålideligheden og stabiliteten af din applikation.
Upptime: Open Source Oppetidsovervågning
Det Upptime organisation repræsenterer vores forpligtelse til gennemsigtig, open source-overvågning. Det vigtigste upptime
repository har over 13.000 GitHub-stjerner, hvilket gør det til et af de mest populære projekter, vi bidrager til. Upptime giver en GitHub-drevet oppetidsmonitor og statusside, der fungerer helt uden en server.
Vi bruger Upptime til vores egen statusside på https://status.forwardemail.net med kildekoden tilgængelig på https://github.com/forwardemail/status.forwardemail.net.
Det, der gør Upptime speciel, er dens arkitektur:
- 100% Open Source: Hver komponent er fuldt open source og kan tilpasses.
- Drevet af GitHub: Udnytter GitHub-handlinger, -problemer og -sider til en serverløs overvågningsløsning.
- Ingen server påkrævet: I modsætning til traditionelle overvågningsværktøjer kræver Upptime ikke, at du kører eller vedligeholder en server.
- Automatisk statusside: Genererer en smuk statusside, der kan hostes på GitHub-sider.
- Kraftige meddelelser: Integreres med forskellige notifikationskanaler, herunder e-mail, SMS og Slack.
For at forbedre vores brugeres oplevelse har vi integreret @octokit/kerne ind i forwardemail.net-kodebasen for at gengive statusopdateringer og hændelser i realtid direkte på vores hjemmeside. Denne integration giver klar gennemsigtighed til vores brugere i tilfælde af problemer på tværs af hele vores stak (hjemmeside, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree osv.) med øjeblikkelige toast-notifikationer, ændringer af badge-ikoner, advarselsfarver og mere.
@octokit/core-biblioteket giver os mulighed for at hente realtidsdata fra vores Upptime GitHub-lager, behandle dem og vise dem på en brugervenlig måde. Når en tjeneste har udfald eller forringet ydeevne, bliver brugerne straks underrettet via visuelle indikatorer uden at skulle forlade hovedapplikationen. Denne problemfri integration sikrer, at vores brugere altid har opdateret information om vores systemstatus, hvilket øger gennemsigtigheden og tilliden.
Upptime er blevet vedtaget af hundredvis af organisationer, der leder efter en gennemsigtig, pålidelig måde at overvåge deres tjenester og kommunikere status til brugerne. Projektets succes viser styrken ved at bygge værktøjer, der udnytter eksisterende infrastruktur (i dette tilfælde GitHub) til at løse almindelige problemer på nye måder.
Vores bidrag til Forward Email Ecosystem
Mens vores open source-pakker bruges af udviklere over hele verden, danner de også grundlaget for vores egen Forward Email-tjeneste. Denne dobbelte rolle – som både skabere og brugere af disse værktøjer – giver os et unikt perspektiv på deres anvendelse i den virkelige verden og driver løbende forbedringer.
Fra pakker til produktion
Rejsen fra individuelle pakker til et sammenhængende produktionssystem involverer omhyggelig integration og udvidelse. For videresend e-mail inkluderer denne proces:
- Brugerdefinerede udvidelser: Opbygning af e-mail-specifikke udvidelser til vores open source-pakker, der opfylder vores unikke krav.
- Integrationsmønstre: Udvikling af mønstre for, hvordan disse pakker interagerer i et produktionsmiljø.
- Ydeevneoptimeringer: Identificering og adressering af ydeevneflaskehalse, der kun opstår i stor skala.
- Sikkerhedshærdning: Tilføjelse af yderligere sikkerhedslag, der er specifikke for e-mail-håndtering og beskyttelse af brugerdata.
Dette arbejde repræsenterer tusindvis af timers udvikling ud over selve kernepakkerne, hvilket resulterer i en robust, sikker e-mail-tjeneste, der udnytter det bedste fra vores open source-bidrag.
Feedback-løkken
Det måske mest værdifulde aspekt ved at bruge vores egne pakker i produktionen er feedback-loopet, det skaber. Når vi støder på begrænsninger eller kantsager i Videresend e-mail, patcher vi dem ikke kun lokalt – vi forbedrer de underliggende pakker, hvilket gavner både vores service og det bredere fællesskab.
Denne tilgang har ført til adskillige forbedringer:
- Bree's yndefulde nedlukning: Videresend e-mails behov for implementeringer uden nedetid førte til forbedrede yndefulde nedlukningsmuligheder i Bree.
- Spamscannerens mønstergenkendelse: Spammønstre i den virkelige verden, der er fundet i Videresend e-mail, har informeret Spam Scanners detektionsalgoritmer.
- Kabinens ydeevneoptimeringer: Stor-volumen logning i produktionen afslørede optimeringsmuligheder i Cabin, som gavner alle brugere.
Ved at opretholde denne dydige cyklus mellem vores open source-arbejde og produktionsservice sikrer vi, at vores pakker forbliver praktiske, kamptestede løsninger frem for teoretiske implementeringer.
Videresend e-mails kerneprincipper: Et fundament for ekspertise
Videresend e-mail er designet efter et sæt kerneprincipper, der styrer alle vores udviklingsbeslutninger. Disse principper, detaljeret på vores hjemmeside, sikre, at vores tjeneste forbliver udviklervenlig, sikker og fokuseret på brugernes privatliv.
Altid udviklervenlig, sikkerhedsfokuseret og gennemsigtig
Vores første og fremmeste princip er at skabe software, der er udviklervenlig og samtidig opretholde de højeste standarder for sikkerhed og privatliv. Vi mener, at teknisk ekspertise aldrig bør gå på bekostning af brugervenlighed, og at gennemsigtighed skaber tillid til vores samfund.
Dette princip viser sig i vores detaljerede dokumentation, klare fejlmeddelelser og åben kommunikation om både succeser og udfordringer. Ved at gøre hele vores kodebase open source inviterer vi til undersøgelse og samarbejde, hvilket styrker både vores software og det bredere økosystem.
Overholdelse af tidstestede softwareudviklingsprincipper
Vi følger flere etablerede softwareudviklingsprincipper, som har bevist deres værdi gennem årtier:
- MVC: Adskille bekymringer gennem Model-View-Controller-mønsteret
- Unix filosofi: At skabe modulære komponenter, der gør én ting godt
- KISS: At holde det enkelt og ligetil
- DRY: Gentag ikke dig selv, fremme genbrug af kode
- YAGNI: Du har ikke brug for det, og undgår for tidlig optimering
- Tolv Faktor: Følger bedste praksis for at bygge moderne, skalerbare applikationer
- Occams barbermaskine: Valg af den enkleste løsning, der opfylder kravene
- Dogfooding: Bruger vores egne produkter i udstrakt grad
Disse principper er ikke kun teoretiske begreber – de er indlejret i vores daglige udviklingspraksis. For eksempel er vores tilslutning til Unix-filosofien tydelig i, hvordan vi har struktureret vores npm-pakker: små, fokuserede moduler, der kan sammensættes for at løse komplekse problemer.
Målrettet mod den skrappede, bootstrappede udvikler
Vi målretter specifikt mod de skrappede, støvlebeskyttede og ramen-rentabel udvikler. Dette fokus former alt fra vores prismodel til vores tekniske beslutninger. Vi forstår udfordringerne ved at bygge produkter med begrænsede ressourcer, fordi vi selv har været der.
Dette princip er særligt vigtigt i, hvordan vi griber open source an. Vi skaber og vedligeholder pakker, der løser reelle problemer for udviklere uden virksomhedsbudgetter, hvilket gør kraftfulde værktøjer tilgængelige for alle uanset deres ressourcer.
Principper i praksis: Videresend e-mail-kodebasen
Disse principper er tydeligt synlige i kodebasen Videresend e-mail. Vores package.json-fil afslører et gennemtænkt udvalg af afhængigheder, som hver er valgt for at tilpasse sig vores kerneværdier:
- Sikkerhedsfokuserede pakker som
mailauth
til e-mail-godkendelse - Udviklervenlige værktøjer som
preview-email
for nemmere fejlfinding - Modulære komponenter som de forskellige
p-*
forsyninger fra Sindre Sorhus
Ved at følge disse principper konsekvent over tid har vi bygget en tjeneste, som udviklere kan stole på med deres e-mail-infrastruktur – sikker, pålidelig og tilpasset værdierne i open source-fællesskabet.
Privacy by Design
Privatliv er ikke en eftertanke eller markedsføringsfunktion for Videresend e-mail – det er et grundlæggende designprincip, der informerer om alle aspekter af vores service og kode:
- Nul adgangskryptering: Vi har implementeret systemer, der gør det teknisk umuligt for os at læse brugernes e-mails.
- Minimal dataindsamling: Vi indsamler kun de data, der er nødvendige for at levere vores service, intet mere.
- Gennemsigtige politikker: Vores privatlivspolitik er skrevet i et klart, forståeligt sprog uden juridisk jargon.
- Open Source-bekræftelse: Vores open source-kodebase giver sikkerhedsforskere mulighed for at verificere vores påstande om privatliv.
Denne forpligtelse omfatter vores open source-pakker, som er designet med bedste praksis for sikkerhed og privatliv indbygget fra bunden.
Bæredygtig Open Source
Vi mener, at open source-software har brug for bæredygtige modeller for at trives på lang sigt. Vores tilgang omfatter:
- Kommerciel support: Tilbyder premium support og tjenester omkring vores open source-værktøjer.
- Balanceret licensering: Brug af licenser, der beskytter både brugerfrihed og projektets bæredygtighed.
- Samfundsengagement: Aktivt engageret med bidragydere for at opbygge et støttende fællesskab.
- Gennemsigtige køreplaner: Deler vores udviklingsplaner for at give brugerne mulighed for at planlægge i overensstemmelse hermed.
Ved at fokusere på bæredygtighed sikrer vi, at vores open source-bidrag kan fortsætte med at vokse og forbedres over tid i stedet for at forsømme.
Tallene lyver ikke: Vores forbløffende npm-downloadstatistikker
Når vi taler om virkningen af open source-software, giver downloadstatistikker et håndgribeligt mål for adoption og tillid. Mange af de pakker, vi hjælper med at vedligeholde, har nået en skala, som få open source-projekter nogensinde opnår, med kombinerede downloads på milliarder.
[!VIGTIG] Selvom vi er stolte af at hjælpe med at vedligeholde flere meget downloadede pakker i JavaScript-økosystemet, vil vi gerne erkende, at mange af disse pakker oprindeligt blev skabt af andre talentfulde udviklere. Pakker som superagent og supertest blev oprindeligt skabt af TJ Holowaychuk, hvis produktive bidrag til open source har været medvirkende til at forme Node.js-økosystemet.
Et fugleperspektiv af vores indvirkning
I løbet af blot den to-måneders periode fra februar til marts 2025 er de bedste pakker, vi bidrager til og hjælper med at opretholde registrerede svimlende download-numre:
- superagent: 84.575.829 downloads[^7] (oprindeligt oprettet af TJ Holowaychuk)
- super test: 76.432.591 downloads[^8] (oprindeligt oprettet af TJ Holowaychuk)
- også: 28.539.295 downloads[^34] (oprindeligt oprettet af TJ Holowaychuk)
- @koa/router: 11.007.327 downloads[^35]
- koa-router: 3.498.918 downloads[^36]
- url-regex: 2.819.520 downloads[^37]
- preview-e-mail: 2.500.000 downloads[^9]
- kabine: 1.800.000 downloads[^10]
- @breejs/senere: 1.709.938 downloads[^38]
- e-mail-skabeloner: 1.128.139 downloads[^39]
- få-stier: 1.124.686 downloads[^40]
- url-regex-safe: 1.200.000 downloads[^11]
- dotenv-parse-variabler: 894.666 downloads[^41]
- @koa/multer: 839.585 downloads[^42]
- spam scanner: 145.000 downloads[^12]
- bree: 24.270 downloads[^30]
[!NOTE] Adskillige andre pakker, vi hjælper med at vedligeholde, men som ikke har oprettet, har endnu højere downloadantal, bl.a
form-data
(+738 mio. downloads),toidentifier
(309M+ downloads),stackframe
(116M+ downloads), ogerror-stack-parser
(113M+ downloads). Vi er beærede over at bidrage til disse pakker, mens vi respekterer deres originale forfatteres arbejde.
Dette er ikke kun imponerende tal – de repræsenterer rigtige udviklere, der løser virkelige problemer med kode, som vi hjælper med at vedligeholde. Hver download er et tilfælde, hvor disse pakker har hjulpet nogen med at bygge noget meningsfuldt, fra hobbyprojekter til virksomhedsapplikationer brugt af millioner.
Daglig påvirkning i skala
De daglige downloadmønstre afslører ensartet brug i høj volumen, med toppe, der når millioner af downloads om dagen[^13]. Denne sammenhæng taler om stabiliteten og pålideligheden af disse pakker – udviklere prøver dem ikke bare; de integrerer dem i deres kernearbejdsgange og er afhængige af dem dag efter dag.
Ugentlige downloadmønstre viser endnu mere imponerende tal, der konsekvent svæver omkring titusindvis af millioner af downloads om ugen[^14]. Dette repræsenterer et massivt fodaftryk i JavaScript-økosystemet, hvor disse pakker kører i produktionsmiljøer over hele kloden.
Ud over de rå tal
Mens downloadstatistikkerne er imponerende i sig selv, fortæller de en dybere historie om den tillid, fællesskabet har til disse pakker. Vedligeholdelse af pakker i denne skala kræver en urokkelig forpligtelse til:
- Bagudkompatibilitet: Ændringer skal overvejes nøje for at undgå at bryde eksisterende implementeringer.
- Sikkerhed: Med millioner af applikationer afhængigt af disse pakker kan sikkerhedssårbarheder have vidtrækkende konsekvenser.
- Præstation: På denne skala kan selv mindre ydeevneforbedringer have betydelige samlede fordele.
- Dokumentation: Klar, omfattende dokumentation er afgørende for pakker, der bruges af udviklere på alle erfaringsniveauer.
Den konsekvente vækst i downloadtal over tid afspejler succesen med at opfylde disse forpligtelser, opbygge tillid til udviklerfællesskabet gennem pålidelige, velholdte pakker.
Støtte til økosystemet: Vores Open Source-sponsorater
[!TIP] Open source-bæredygtighed handler ikke kun om at bidrage med kode – det handler også om at støtte de udviklere, der vedligeholder kritisk infrastruktur.
Ud over vores direkte bidrag til JavaScript-økosystemet er vi stolte af at sponsorere fremtrædende Node.js-bidragydere, hvis arbejde danner grundlaget for mange moderne applikationer. Vores sponsorater omfatter:
Andris Reinman: Email Infrastructure Pioneer
Andris Reinman er skaberen af Notat mailer, det mest populære e-mail-afsendelsesbibliotek for Node.js med over 14 millioner ugentlige downloads[^15]. Hans arbejde strækker sig til andre kritiske e-mail-infrastrukturkomponenter som SMTP-server, Mailparser, og Vildænd.
Vores sponsorat hjælper med at sikre den fortsatte vedligeholdelse og udvikling af disse væsentlige værktøjer, der driver e-mail-kommunikation til utallige Node.js-applikationer, inklusive vores egen Forward Email-tjeneste.
Sindre Sorhus: Brugspakke Mastermind
Sindre Sorhus er en af de mest produktive open source-bidragydere i JavaScript-økosystemet med over 1.000 npm-pakker til sit navn. Hans hjælpeprogrammer som p-kort, prøv igen, og er-strøm er grundlæggende byggesten, der bruges i hele Node.js-økosystemet.
Ved at sponsorere Sindres arbejde hjælper vi med at opretholde udviklingen af disse kritiske hjælpeprogrammer, der gør JavaScript-udvikling mere effektiv og pålidelig.
Disse sponsorater afspejler vores engagement i det bredere open source-økosystem. Vi anerkender, at vores egen succes er bygget på det grundlag, der er lagt af disse og andre bidragydere, og vi er dedikerede til at sikre bæredygtigheden af hele økosystemet.
Afdækning af sikkerhedssårbarheder i JavaScript-økosystemet
Vores forpligtelse til open source strækker sig ud over funktionsudvikling og omfatter identifikation og håndtering af sikkerhedssårbarheder, der kan påvirke millioner af udviklere. Flere af vores vigtigste bidrag til JavaScript-økosystemet har været inden for sikkerhed.
Koa-routerens redning
I februar 2019 identificerede Nick et kritisk problem med vedligeholdelsen af den populære koa-router-pakke. Som han rapporteret på Hacker News, var pakken blevet forladt af dens oprindelige vedligeholder, hvilket efterlod sikkerhedssårbarheder uadresserede og fællesskabet uden opdateringer.
[!ADVARSEL] Forladte pakker med sikkerhedssårbarheder udgør betydelige risici for hele økosystemet, især når de downloades millioner af gange ugentligt.
Som svar oprettede Nick @koa/router og hjalp med at advare samfundet om situationen. Han har vedligeholdt denne kritiske pakke lige siden for at sikre, at Koa-brugere har en sikker, velholdt routingløsning.
Håndtering af ReDoS-sårbarheder
I 2020 identificerede og adresserede Nick en kritisk Regular Expression Denial of Service (ReDoS) sårbarhed i det meget udbredte url-regex
pakke. Denne sårbarhed (SNYK-JS-URLREGEX-569472) kunne tillade angribere at forårsage lammelsesangreb ved at levere specielt udformet input, der forårsagede katastrofal backtracking i det regulære udtryk.
I stedet for blot at lappe den eksisterende pakke, skabte Nick url-regex-safe
, en fuldstændig omskrevet implementering, der adresserer sårbarheden og samtidig bibeholder kompatibiliteten med den originale API. Han udgav også en omfattende blogindlæg forklare sårbarheden, og hvordan man kan afbøde den.
Dette arbejde viser vores tilgang til sikkerhed: ikke kun at løse problemer, men at uddanne fællesskabet og levere robuste alternativer, der forhindrer lignende problemer i fremtiden.
Fortaler for Node.js og Chromium Security
Nick har også været aktiv i at slå til lyd for sikkerhedsforbedringer i det bredere økosystem. I august 2020 identificerede han et væsentligt sikkerhedsproblem i Node.js relateret til dets håndtering af HTTP-headere, som blev rapporteret i Registeret.
Dette problem, som stammede fra en patch i Chromium, kunne potentielt tillade angribere at omgå sikkerhedsforanstaltninger. Nicks fortalervirksomhed hjalp med at sikre, at problemet blev løst omgående, og beskyttede millioner af Node.js-applikationer mod potentiel udnyttelse.
Sikring af npm-infrastruktur
Senere samme måned identificerede Nick et andet kritisk sikkerhedsproblem, denne gang i npms e-mail-infrastruktur. Som rapporteret i Registeret, implementerede npm ikke korrekt DMARC-, SPF- og DKIM-e-mail-godkendelsesprotokoller, hvilket potentielt tillod angribere at sende phishing-e-mails, der så ud til at komme fra npm.
Nicks rapport førte til forbedringer i npms e-mail-sikkerhedsposition, der beskyttede de millioner af udviklere, der er afhængige af npm til pakkehåndtering mod potentielle phishing-angreb.
Vores bidrag til Forward Email Ecosystem
Forward Email er bygget oven på flere kritiske open source-projekter, herunder Nodemailer, WildDuck og mailauth. Vores team har ydet betydelige bidrag til disse projekter og hjulpet med at identificere og løse dybe problemer, der påvirker e-mail-levering og sikkerhed.
Forbedring af Nodemailers kernefunktionalitet
Notat mailer er rygraden i e-mail-afsendelse i Node.js, og vores bidrag har været med til at gøre det mere robust:
- SMTP-serverforbedringer: Vi har rettet parsing-fejl, problemer med strømhåndtering og TLS-konfigurationsproblemer i SMTP-serverkomponenten[^16][^17].
- Mail Parser Enhancements: Vi har behandlet tegnsekvensafkodningsfejl og adresseret parserproblemer, der kan forårsage e-mailbehandlingsfejl[^18][^19].
Disse bidrag sikrer, at Nodemailer forbliver et pålideligt grundlag for e-mail-behandling i Node.js-applikationer, herunder Videresend e-mail.
Fremme e-mail-godkendelse med Mailauth
Mailauth leverer kritisk e-mail-godkendelsesfunktionalitet, og vores bidrag har forbedret dens muligheder væsentligt:
- DKIM Verifikationsforbedringer: Vi opdagede og rapporterede, at X/Twitter havde problemer med DNS-cache, der forårsagede DKIM-fejl for deres udgående meddelelser, og rapporterede det på Hacker One[^20].
- DMARC og ARC Enhancements: Vi har rettet problemer med DMARC- og ARC-bekræftelse, der kan føre til forkerte godkendelsesresultater[^21][^22].
- Ydeevneoptimeringer: Vi har bidraget med optimeringer, der forbedrer ydeevnen af e-mail-godkendelsesprocesser[^23][^24][^25][^26].
Disse forbedringer hjælper med at sikre, at e-mail-godkendelse er nøjagtig og pålidelig, og beskytter brugere mod phishing- og spoofingangreb.
Key Uptime Enhancements
Vores bidrag til Upptime inkluderer:
- SSL-certifikatovervågning: Vi tilføjede funktionalitet til at overvåge SSL-certifikatudløb, hvilket forhindrer uventet nedetid på grund af udløbne certifikater[^27].
- Support til flere SMS-numre: Vi implementerede support til at advare flere teammedlemmer via SMS, når der opstår hændelser, hvilket forbedrede svartider[^28].
- IPv6 Tjek rettelser: Vi løste problemer med IPv6-forbindelsestjek, hvilket sikrede mere nøjagtig overvågning i moderne netværksmiljøer[^29].
- Understøttelse af mørk/lys tilstand: Vi tilføjede temaunderstøttelse for at forbedre brugeroplevelsen af statussider[^31].
- Bedre TCP-Ping-understøttelse: Vi forbedrede TCP-ping-funktionaliteten for at give mere pålidelig forbindelsestest[^32].
Disse forbedringer gavner ikke kun Forward Emails statusovervågning, men er tilgængelige for hele fællesskabet af Upptime-brugere, hvilket viser vores forpligtelse til at forbedre de værktøjer, vi er afhængige af.
Limen, der holder det hele sammen: tilpasset kode i skala
Selvom vores npm-pakker og bidrag til eksisterende projekter er betydelige, er det den tilpassede kode, der integrerer disse komponenter, der virkelig viser vores tekniske ekspertise. Forward Email-kodebasen repræsenterer et årti med udviklingsindsats, der går tilbage til 2017, hvor projektet startede som gratis-e-mail-videresendelse før de fusioneres til en monorepo.
En massiv udviklingsindsats
Skalaen af denne tilpassede integrationskode er imponerende:
- Samlede bidrag: Over 3.217 commits
- Kodebase størrelse: Over 421.545 linjer kode på tværs af JavaScript-, Pug-, CSS- og JSON-filer[^33]
Dette repræsenterer tusindvis af timers udviklingsarbejde, fejlfindingssessioner og ydeevneoptimeringer. Det er den "hemmelige sauce", der forvandler individuelle pakker til en sammenhængende, pålidelig service, der bruges af tusindvis af kunder dagligt.
Integration af kerneafhængigheder
Videresend e-mail-kodebasen integrerer adskillige afhængigheder i en problemfri helhed:
- Email behandling: Integrerer Nodemailer til afsendelse, SMTP-server til modtagelse og Mailparser til parsing
- Godkendelse: Bruger Mailauth til DKIM-, SPF-, DMARC- og ARC-verifikation
- DNS-opløsning: Udnytter Tangerine til DNS-over-HTTPS med global caching
- MX-forbindelse: Bruger mx-connect med Tangerine-integration til pålidelige mailserverforbindelser
- Jobplanlægning: Ansætter Bree til pålidelig baggrundsopgavebehandling med arbejdertråde
- Skabelon: Bruger e-mail-skabeloner til at genbruge stylesheets fra hjemmesiden i kundekommunikation
- Opbevaring af e-mail: Implementerer individuelt krypterede SQLite-postkasser ved hjælp af better-sqlite3-multiple-ciphers med ChaCha20-Poly1305-kryptering for kvantesikkert privatliv, hvilket sikrer fuldstændig isolation mellem brugere, og at kun brugeren har adgang til deres postkasse
Hver af disse integrationer kræver omhyggelig overvejelse af edge cases, præstationsimplikationer og sikkerhedsproblemer. Resultatet er et robust system, der håndterer millioner af e-mail-transaktioner pålideligt. Vores SQLite-implementering udnytter også msgpackr til effektiv binær serialisering og WebSockets (via ws) til realtidsstatusopdateringer på tværs af vores infrastruktur.
DNS-infrastruktur med Tangerine og mx-connect
En kritisk komponent i Forward Emails infrastruktur er vores DNS-opløsningssystem, bygget op omkring to nøglepakker:
-
Mandarin: Vores Node.js DNS-over-HTTPS-implementering giver en drop-in-erstatning for standard DNS-resolveren med indbyggede genforsøg, timeouts, smart serverrotation og caching-understøttelse.
-
mx-connect: Denne pakke etablerer TCP-forbindelser til MX-servere, tager et måldomæne eller e-mail-adresse, løser passende MX-servere og opretter forbindelse til dem i prioriteret rækkefølge.
Vi har integreret Tangerine med mx-connect through pull anmodning #4, der sikrer applikationslag DNS over HTTP-anmodninger i hele Videresend e-mail. Dette giver global caching til DNS i skala med 1:1-konsistens på tværs af enhver region, app eller proces – afgørende for pålidelig e-mail-levering i et distribueret system.
Enterprise Impact: Fra Open Source til Mission-Critical Solutions
Kulminationen på vores årti lange rejse inden for open source-udvikling har gjort det muligt for Forward Email at tjene ikke kun individuelle udviklere, men også større virksomheder og uddannelsesinstitutioner, der udgør rygraden i selve open source-bevægelsen.
Casestudier i missionskritisk e-mail-infrastruktur
Vores forpligtelse til pålidelighed, privatliv og open source-principper har gjort Forward Email til det pålidelige valg for organisationer med krævende e-mailkrav:
-
Uddannelsesinstitutioner: Som beskrevet i vores alumni e-mail videresendelse casestudie, er større universiteter afhængige af vores infrastruktur til at opretholde livslange forbindelser med hundredtusindvis af alumner gennem pålidelige e-mail-videresendelsestjenester.
-
Enterprise Linux-løsninger: Den Canonical Ubuntu email enterprise case study demonstrerer, hvordan vores open source-tilgang passer perfekt til behovene hos Linux-virksomheder, og giver dem den gennemsigtighed og kontrol, de kræver.
-
Open Source Foundations: Det mest validerende er måske vores partnerskab med Linux Foundation, som dokumenteret i Linux Foundation email enterprise case study, hvor vores service driver kommunikationen til netop den organisation, der varetager Linux-udviklingen.
Der er en smuk symmetri i, hvordan vores open source-pakker, vedligeholdt med omhu i mange år, har gjort det muligt for os at opbygge en e-mail-tjeneste, der nu understøtter netop de fællesskaber og organisationer, der kæmper for open source-software. Denne fuldcirkelrejse – fra at bidrage med individuelle pakker til at drive e-mail-infrastruktur i virksomhedskvalitet for ledere af open source-kilder – repræsenterer den ultimative validering af vores tilgang til softwareudvikling.
Et årti med Open Source: Ser fremad
Når vi ser tilbage på et årti med open source-bidrag og frem til de næste ti år, er vi fyldt med taknemmelighed for det fællesskab, der har støttet vores arbejde og begejstring for det, der kommer.
Vores rejse fra individuelle pakkebidragydere til vedligeholdere af en omfattende e-mail-infrastruktur, der bruges af større virksomheder og open source-fonde, har været bemærkelsesværdig. Det er et vidnesbyrd om kraften i open source-udvikling og den indvirkning, som tankevækkende, velholdt software kan have på det bredere økosystem.
I de kommende år er vi forpligtet til at:
- Fortsætter med at vedligeholde og forbedre vores eksisterende pakker, hvilket sikrer, at de forbliver pålidelige værktøjer for udviklere over hele verden.
- Udvidelse af vores bidrag til kritiske infrastrukturprojekter, især i e-mail- og sikkerhedsdomænerne.
- Forbedring af videresend e-mails muligheder samtidig med at vi bevarer vores forpligtelse til privatliv, sikkerhed og gennemsigtighed.
- Understøtter den næste generation af open source-bidragydere gennem mentorskab, sponsorering og samfundsengagement.
Vi tror på, at fremtiden for softwareudvikling er åben, samarbejdende og bygget på et grundlag af tillid. Ved at fortsætte med at bidrage med sikkerhedsfokuserede pakker af høj kvalitet til JavaScript-økosystemet håber vi at kunne spille en lille rolle i opbygningen af denne fremtid.
Tak til alle, der har brugt vores pakker, bidraget til vores projekter, rapporteret problemer eller blot spredt budskabet om vores arbejde. Jeres støtte har gjort dette årti med indflydelse muligt, og vi er spændte på at se, hvad vi kan udrette sammen i de næste ti år.
[^1]: npm-downloadstatistikker for kabine, april 2025 [^2]: npm-downloadstatistikker for bson-objectid, februar-marts 2025 [^3]: npm download-statistikker for url-regex-safe, april 2025 [^4]: GitHub-stjerner tæller for forwardemail/forwardemail.net fra april 2025 [^5]: npm-downloadstatistikker for forhåndsvisnings-e-mail, april 2025 [^7]: npm download-statistikker for superagent, februar-marts 2025 [^8]: npm download-statistikker for supertest, februar-marts 2025 [^9]: npm-downloadstatistikker for forhåndsvisnings-e-mail, februar-marts 2025 [^10]: npm-downloadstatistikker for kabine, februar-marts 2025 [^11]: npm-downloadstatistikker for url-regex-safe, februar-marts 2025 [^12]: npm-downloadstatistikker for spamscanner, februar-marts 2025 [^13]: Daglige downloadmønstre fra npm-statistikker, april 2025 [^14]: Ugentlige downloadmønstre fra npm-statistikker, april 2025 [^15]: npm-downloadstatistikker 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]: Baseret på GitHub-problemer i Upptime-lageret [^28]: Baseret på GitHub-problemer i Upptime-lageret [^29]: Baseret på GitHub-problemer i Upptime-lageret [^30]: npm download-statistikker for bree, februar-marts 2025 [^31]: Baseret på GitHub pull-anmodninger til Upptime [^32]: Baseret på GitHub pull-anmodninger til Upptime [^34]: npm download-statistikker for koa, februar-marts 2025 [^35]: npm download-statistikker for @koa/router, februar-marts 2025 [^36]: npm download-statistikker for koa-router, februar-marts 2025 [^37]: npm download-statistikker for url-regex, februar-marts 2025 [^38]: npm download-statistikker for @breejs/later, februar-marts 2025 [^39]: npm download-statistikker for e-mail-skabeloner, februar-marts 2025 [^40]: npm-downloadstatistikker for get-paths, februar-marts 2025 [^41]: npm download-statistikker for dotenv-parse-variables, februar-marts 2025 [^42]: npm download-statistikker for @koa/multer, februar-marts 2025