Un decennio di impatto: come i nostri pacchetti npm hanno raggiunto 1 miliardo di download e hanno plasmato JavaScript

Nel javascript e Nodo.js mondo, alcuni pacchetti sono essenziali, scaricati milioni di volte al giorno e alimentano app in tutto il mondo. Dietro questi strumenti ci sono sviluppatori concentrati sulla qualità open source. Oggi, mostriamo come il nostro team aiuta a creare e gestire pacchetti npm che sono diventati parti fondamentali dell'ecosistema JavaScript.

I pionieri che si fidano di noi: Isaac Z. Schlueter e Forward Email

Siamo orgogliosi di avere di Isaac Z. Schlueter (GitHub: isaacs) come utente. Isaac ha creato sopra il livello del mare e ha contribuito a costruire Nodo.js. La sua fiducia in Forward Email dimostra la nostra attenzione alla qualità e alla sicurezza. Isaac usa Forward Email per diversi domini, tra cui izs.me.

L'impatto di Isaac su JavaScript è enorme. Nel 2009, è stato tra i primi a vedere il potenziale di Node.js, lavorando con Scritto da Ryan Dahl, che ha creato la piattaforma. Come ha detto Isaac in un intervista con la rivista Increment: "In mezzo a questa piccolissima comunità di un gruppo di persone che cercava di capire come realizzare JS lato server, Ryan Dahl ha lanciato Node, che era chiaramente l'approccio giusto. Ho buttato le mie fiches e mi sono impegnato molto verso la metà del 2009."

[!NOTE] Per coloro interessati alla storia di Node.js, sono disponibili eccellenti documentari che ne raccontano lo sviluppo, tra cui La storia di Node.js e 10 cose di cui mi pento di Node.js - Ryan DahlDi Ryan Dahl sito web personale contiene anche preziosi spunti sul suo lavoro.

Dalla creazione di npm alla leadership di Node.js

Isaac ha creato npm nel settembre 2009, con la prima versione utilizzabile rilasciata all'inizio del 2010. Questo gestore di pacchetti ha soddisfatto un'esigenza fondamentale in Node.js, consentendo agli sviluppatori di condividere e riutilizzare facilmente il codice. Secondo Pagina Wikipedia di Node.js, "Nel gennaio 2010, è stato introdotto un gestore di pacchetti per l'ambiente Node.js chiamato npm. Il gestore di pacchetti consente ai programmatori di pubblicare e condividere pacchetti Node.js, insieme al codice sorgente di accompagnamento, ed è progettato per semplificare l'installazione, l'aggiornamento e la disinstallazione dei pacchetti."

Quando Ryan Dahl si è ritirato da Node.js nel gennaio 2012, Isaac ha assunto il ruolo di project leader. Come notato su il suo riassunto, ha "guidato lo sviluppo di diverse API fondamentali di Node.js, tra cui il sistema di moduli CommonJS, le API del file system e i flussi" e "ha svolto il ruolo di BDFL (Benevolent Dictator For Life) del progetto per 2 anni, garantendo una qualità sempre maggiore e un processo di compilazione affidabile per le versioni di Node.js dalla v0.6 alla v0.10".

Isaac ha guidato Node.js attraverso un periodo di crescita chiave, stabilendo standard che ancora oggi caratterizzano la piattaforma. In seguito ha fondato npm, Inc. nel 2014 per supportare il registro npm, che in precedenza aveva gestito da solo.

Ringraziamo Isaac per il suo enorme contributo a JavaScript e continuiamo a usare molti pacchetti da lui creati. Il suo lavoro ha cambiato il modo in cui realizziamo software e il modo in cui milioni di sviluppatori condividono codice in tutto il mondo.

L'architetto dietro il codice: il viaggio di Nick Baugh

Al centro del nostro successo open source c'è Nick Baugh, fondatore e proprietario di Forward Email. Il suo lavoro in JavaScript dura da quasi 20 anni e ha plasmato il modo in cui innumerevoli sviluppatori creano app. Il suo percorso open source dimostra sia abilità tecnica che leadership nella comunità.

Comitato tecnico espresso e contributi fondamentali

La competenza di Nick nel framework web gli è valsa un posto su Comitato tecnico espresso, dove ha aiutato con uno dei framework Node.js più utilizzati. Nick è ora elencato come membro inattivo su Pagina della comunità Express.

[!IMPORTANTE] Express è stato originariamente creato da TJ Holowaychuk, un prolifico collaboratore open source che ha plasmato gran parte dell'ecosistema Node.js. Siamo grati per il lavoro fondamentale di TJ e rispettiamo il suo decisione di prendersi una pausa grazie ai suoi ampi contributi open source.

Come membro del Comitato tecnico espresso, Nick ha mostrato grande attenzione ai dettagli in questioni come la chiarificazione req.originalUrl documentazione e risoluzione dei problemi di gestione dei moduli multiparte.

Contributi al framework Koa

Il lavoro di Nick con il Struttura Koa—un'alternativa moderna e leggera a Express, creata anch'essa da TJ Holowaychuk—mostra ulteriormente il suo impegno per migliori strumenti di sviluppo web. I suoi contributi a Koa includono sia problemi che codice tramite pull request, affrontando la gestione degli errori, la gestione dei tipi di contenuto e i miglioramenti della documentazione.

Il suo lavoro sia con Express che con Koa gli ha fornito una visione unica dello sviluppo web con Node.js, aiutando il nostro team a creare pacchetti che funzionano bene con più ecosistemi framework.

Da collaboratore individuale a leader dell'organizzazione

Ciò che è iniziato come un aiuto a progetti esistenti è cresciuto fino a creare e mantenere interi ecosistemi di pacchetti. Nick ha fondato diverse organizzazioni GitHub, tra cui Cabina, Scanner antispam, Inoltra email, Permettere, e Brezza—ognuno dei quali risolve esigenze specifiche della comunità JavaScript.

Questo passaggio da collaboratore a leader mostra la visione di Nick per un software ben progettato che risolve problemi reali. Organizzando pacchetti correlati in organizzazioni GitHub mirate, ha creato ecosistemi di strumenti che funzionano insieme pur rimanendo modulari e flessibili per la più ampia comunità di sviluppatori.

Le nostre organizzazioni GitHub: ecosistemi di innovazione

Organizziamo il nostro lavoro open source attorno a organizzazioni GitHub mirate, ciascuna delle quali risolve esigenze specifiche in JavaScript. Questa struttura crea famiglie di pacchetti coese che funzionano bene insieme pur rimanendo modulari.

Cabin: registrazione strutturata per applicazioni moderne

IL Organizzazione della cabina è la nostra interpretazione di un logging semplice e potente delle app. Il principale cabin il pacchetto ha quasi 900 stelle GitHub e oltre 100.000 download settimanali[^1]. Cabin fornisce una registrazione strutturata che funziona con servizi popolari come Sentry, LogDNA e Papertrail.

Ciò che rende Cabin speciale è il suo sistema di API e plugin ben studiato. Supportando pacchetti come axe per il middleware Express e parse-request per l'analisi delle richieste HTTP dimostrano il nostro impegno nel fornire soluzioni complete piuttosto che strumenti isolati.

IL bson-objectid merita una menzione speciale, con oltre 1,7 milioni di download in soli due mesi[^2]. Questa implementazione leggera di MongoDB ObjectID è diventata la scelta ideale per gli sviluppatori che necessitano di ID senza dipendenze complete da MongoDB.

Spam Scanner: combattere l'abuso della posta elettronica

IL Organizzazione Spam Scanner dimostra il nostro impegno nel risolvere problemi reali. Il principale spamscanner il pacchetto fornisce un rilevamento avanzato dello spam via e-mail, ma è il url-regex-safe pacchetto che ha riscontrato un'adozione sorprendente.

Con oltre 1,2 milioni di download in due mesi[^3], url-regex-safe risolve problemi di sicurezza critici in altre espressioni regolari di rilevamento URL. Questo pacchetto mostra il nostro approccio all'open source: trovare un problema comune (in questo caso, Rifare vulnerabilità nella convalida degli URL), creando una soluzione solida e mantenendola con attenzione.

Bree: Pianificazione moderna dei lavori con thread di lavoro

IL Organizzazione Bree è la nostra risposta a una sfida comune di Node.js: la pianificazione affidabile dei lavori. Il principale bree Il pacchetto, con oltre 3.100 stelle su GitHub, fornisce un moderno pianificatore di attività che utilizza thread di lavoro Node.js per prestazioni e affidabilità migliori.

[!NOTE] Bree è stata creata dopo che abbiamo contribuito a mantenere Ordine del giorno, applicando le lezioni apprese per creare un migliore pianificatore di lavoro. I nostri contributi all'Agenda ci hanno aiutato a trovare modi per migliorare la pianificazione dei lavori.

Cosa differenzia Bree da altri scheduler come Agenda:

  • Nessuna dipendenza esterna: A differenza di Agenda che necessita di MongoDB, Bree non necessita di Redis o MongoDB per gestire lo stato dei job.
  • Thread di lavoro: Bree utilizza i thread di lavoro di Node.js per i processi sandbox, garantendo un isolamento e prestazioni migliori.
  • API semplice: Bree offre un controllo dettagliato con semplicità, semplificando l'implementazione di esigenze di pianificazione complesse.
  • Supporto integrato: Funzioni come il ricaricamento corretto, i cron job, le date e gli orari intuitivi sono inclusi di default.

Bree è una parte fondamentale di forwardemail.net, gestendo attività di background critiche come elaborazione e-mail, pulizia e manutenzione programmata. L'utilizzo di Bree in Forward Email dimostra il nostro impegno nell'utilizzare i nostri strumenti in produzione, assicurandoci che soddisfino elevati standard di affidabilità.

Utilizziamo e apprezziamo anche altri fantastici pacchetti di thread di lavoro come piscina e client HTTP come undici. Piscina, come Bree, usa i thread worker di Node.js per un'elaborazione efficiente delle attività. Ringraziamo Matteo Collina, che gestisce sia undici che piscina, per i suoi importanti contributi a Node.js. Matteo fa parte del comitato direttivo tecnico di Node.js e ha notevolmente migliorato le capacità del client HTTP in Node.js.

Inoltra e-mail: infrastruttura di posta elettronica open source

Il nostro progetto più ambizioso è Inoltra email, un servizio di posta elettronica open source che fornisce servizi di inoltro, archiviazione e API di posta elettronica. Il repository principale ha oltre 1.100 stelle GitHub[^4], a dimostrazione dell'apprezzamento della comunità per questa alternativa ai servizi di posta elettronica proprietari.

IL preview-email pacchetto di questa organizzazione, con oltre 2,5 milioni di download in due mesi[^5], è diventato uno strumento essenziale per gli sviluppatori che lavorano con modelli di posta elettronica. Fornendo un modo semplice per visualizzare in anteprima le e-mail durante lo sviluppo, risolve un comune punto dolente nella creazione di applicazioni abilitate per la posta elettronica.

Lad: Utilità e strumenti essenziali Koa

IL Organizzazione dei ragazzi fornisce una raccolta di utilità e strumenti essenziali, focalizzati principalmente sul potenziamento dell'ecosistema del framework Koa. Questi pacchetti risolvono le sfide comuni nello sviluppo web e sono progettati per funzionare insieme senza problemi, pur rimanendo utili in modo indipendente.

koa-better-error-handler: gestione degli errori migliorata per Koa

koa-better-error-handler offre una soluzione di gestione degli errori migliore per le applicazioni Koa. Con oltre 50 stelle GitHub, questo pacchetto rende ctx.throw produrre messaggi di errore di facile utilizzo, affrontando al contempo diverse limitazioni del gestore degli errori integrato in Koa:

  • Rileva e gestisce correttamente gli errori DNS di Node.js, gli errori Mongoose e gli errori Redis
  • Usi Boom per creare risposte di errore coerenti e ben formattate
  • Conserva le intestazioni (a differenza del gestore integrato di Koa)
  • Mantiene i codici di stato appropriati anziché utilizzare il valore predefinito 500
  • Supporta i messaggi flash e la conservazione della sessione
  • Fornisce elenchi di errori HTML per errori di convalida
  • Supporta più tipi di risposta (HTML, JSON e testo normale)

Questo pacchetto è particolarmente prezioso se utilizzato insieme koa-404-handler per una gestione completa degli errori nelle applicazioni Koa.

passaporto: Autenticazione per ragazzo

@ladjs/passport estende il famoso middleware di autenticazione Passport.js con miglioramenti specifici per le applicazioni web moderne. Questo pacchetto supporta più strategie di autenticazione pronte all'uso:

  • Autenticazione locale con e-mail
  • Accedi con Apple
  • Autenticazione GitHub
  • Autenticazione Google
  • Autenticazione tramite password monouso (OTP)

Il pacchetto è altamente personalizzabile, consentendo agli sviluppatori di adattare i nomi dei campi e le frasi per soddisfare i requisiti della loro applicazione. È progettato per integrarsi perfettamente con Mongoose per la gestione degli utenti, rendendolo una soluzione ideale per le applicazioni basate su Koa che necessitano di un'autenticazione robusta.

grazioso: elegante spegnimento dell'applicazione

@ladjs/graceful risolve la sfida critica di chiudere con eleganza le applicazioni Node.js. Con oltre 70 stelle GitHub, questo pacchetto assicura che la tua applicazione possa terminare in modo pulito senza perdere dati o lasciare connessioni in sospeso. Le caratteristiche principali includono:

  • Supporto per la chiusura corretta dei server HTTP (Express/Koa/Fastify)
  • Chiusura pulita delle connessioni al database (MongoDB/Mongoose)
  • Chiusura corretta dei client Redis
  • Gestione dei pianificatori di lavoro Bree
  • Supporto per gestori di arresto personalizzati
  • Impostazioni di timeout configurabili
  • Integrazione con sistemi di registrazione

Questo pacchetto è essenziale per le applicazioni di produzione in cui arresti imprevisti potrebbero causare perdita o corruzione dei dati. Implementando le corrette procedure di arresto, @ladjs/graceful aiuta a garantire l'affidabilità e la stabilità della tua applicazione.

Upptime: monitoraggio dei tempi di attività open source

IL Organizzazione Upptime rappresenta il nostro impegno per un monitoraggio trasparente e open source. Il principale upptime repository ha oltre 13.000 stelle GitHub, il che lo rende uno dei progetti più popolari a cui contribuiamo. Upptime fornisce un monitor di uptime e una pagina di stato basati su GitHub che funziona interamente senza un server.

Utilizziamo Upptime per la nostra pagina di stato su https://status.forwardemail.net con il codice sorgente disponibile su https://github.com/forwardemail/status.forwardemail.net.

Ciò che rende speciale Upptime è la sua architettura:

  • 100% Open Source: Ogni componente è completamente open source e personalizzabile.
  • Alimentato da GitHub: sfrutta le azioni, i problemi e le pagine di GitHub per una soluzione di monitoraggio senza server.
  • Nessun server richiesto:A differenza degli strumenti di monitoraggio tradizionali, Upptime non richiede l'esecuzione o la manutenzione di un server.
  • Pagina di stato automatico: Genera una splendida pagina di stato che può essere ospitata su GitHub Pages.
  • Notifiche potenti: Si integra con vari canali di notifica, tra cui e-mail, SMS e Slack.

Per migliorare l'esperienza dei nostri utenti, abbiamo integrato @octokit/core nel codice base di forwardemail.net per rendere aggiornamenti di stato e incidenti in tempo reale direttamente sul nostro sito web. Questa integrazione fornisce una chiara trasparenza ai nostri utenti in caso di problemi nell'intero stack (sito web, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree, ecc.) con notifiche istantanee di tipo toast, modifiche alle icone dei badge, colori di avviso e altro ancora.

La libreria @octokit/core ci consente di recuperare dati in tempo reale dal nostro repository GitHub Upptime, elaborarli e visualizzarli in modo intuitivo. Quando un servizio subisce un'interruzione o prestazioni degradate, gli utenti vengono immediatamente avvisati tramite indicatori visivi senza dover abbandonare l'applicazione principale. Questa integrazione fluida garantisce che i nostri utenti abbiano sempre informazioni aggiornate sullo stato del nostro sistema, migliorando la trasparenza e la fiducia.

Upptime è stato adottato da centinaia di organizzazioni alla ricerca di un modo trasparente e affidabile per monitorare i propri servizi e comunicare lo stato agli utenti. Il successo del progetto dimostra la potenza della creazione di strumenti che sfruttano l'infrastruttura esistente (in questo caso, GitHub) per risolvere problemi comuni in nuovi modi.

I nostri contributi all'ecosistema di posta elettronica in avanti

Sebbene i nostri pacchetti open source siano utilizzati da sviluppatori in tutto il mondo, costituiscono anche la base del nostro servizio Forward Email. Questo duplice ruolo, sia come creatori che come utenti di questi strumenti, ci offre una prospettiva unica sulla loro applicazione nel mondo reale e stimola un miglioramento continuo.

Dai pacchetti alla produzione

Il percorso dai singoli pacchetti a un sistema di produzione coeso implica un'attenta integrazione ed estensione. Per Forward Email, questo processo include:

  • Estensioni personalizzate: Sviluppo di estensioni specifiche per la posta elettronica in avanti nei nostri pacchetti open source che soddisfano i nostri requisiti esclusivi.
  • Modelli di integrazione: Sviluppo di modelli per l'interazione di questi pacchetti in un ambiente di produzione.
  • Ottimizzazioni delle prestazioni: Identificare e risolvere i colli di bottiglia nelle prestazioni che emergono solo su larga scala.
  • Rafforzamento della sicurezza: Aggiunta di ulteriori livelli di sicurezza specifici per la gestione della posta elettronica e la protezione dei dati degli utenti.

Questo lavoro rappresenta migliaia di ore di sviluppo che vanno oltre i pacchetti base stessi, dando vita a un servizio di posta elettronica sicuro e affidabile che sfrutta il meglio dei nostri contributi open source.

Il ciclo di feedback

Forse l'aspetto più prezioso dell'utilizzo dei nostri pacchetti in produzione è il ciclo di feedback che crea. Quando incontriamo limitazioni o casi limite in Forward Email, non ci limitiamo ad applicare patch localmente, ma miglioriamo i pacchetti sottostanti, a vantaggio sia del nostro servizio che della comunità più ampia.

Questo approccio ha portato a numerosi miglioramenti:

  • La chiusura aggraziata di Bree: L'esigenza di Forward Email di implementazioni senza tempi di inattività ha portato a funzionalità di arresto graduale migliorate in Bree.
  • Riconoscimento dei pattern dello Spam Scanner:I modelli di spam reali riscontrati in Forward Email hanno influenzato gli algoritmi di rilevamento di Spam Scanner.
  • Ottimizzazioni delle prestazioni della cabina: La registrazione di grandi volumi in produzione ha evidenziato opportunità di ottimizzazione in Cabin che vanno a vantaggio di tutti gli utenti.

Mantenendo questo circolo virtuoso tra il nostro lavoro open source e il servizio di produzione, garantiamo che i nostri pacchetti rimangano soluzioni pratiche e collaudate piuttosto che implementazioni teoriche.

I principi fondamentali di Forward Email: una base per l'eccellenza

Forward Email è progettato secondo una serie di principi fondamentali che guidano tutte le nostre decisioni di sviluppo. Questi principi, dettagliati sul nostro sito web, garantiamo che il nostro servizio rimanga intuitivo, sicuro e incentrato sulla privacy degli utenti.

Sempre amichevole per gli sviluppatori, incentrato sulla sicurezza e trasparente

Il nostro primo e più importante principio è creare software che sia adatto agli sviluppatori, mantenendo al contempo i più alti standard di sicurezza e privacy. Crediamo che l'eccellenza tecnica non debba mai andare a discapito dell'usabilità e che la trasparenza crei fiducia nella nostra comunità.

Questo principio si manifesta nella nostra documentazione dettagliata, nei messaggi di errore chiari e nella comunicazione aperta su successi e sfide. Rendendo open source l'intera base di codice, invitiamo all'esame e alla collaborazione, rafforzando sia il nostro software che l'ecosistema più ampio.

Rispetto dei principi di sviluppo software collaudati

Seguiamo diversi principi consolidati nello sviluppo software che hanno dimostrato il loro valore nel corso di decenni:

  • MVC: Separazione delle preoccupazioni attraverso il modello Model-View-Controller
  • Filosofia Unix: Creare componenti modulari che fanno bene una cosa
  • KISS: Mantenere le cose semplici e dirette
  • DRY: Non ripeterti, promuovendo il riutilizzo del codice
  • YAGNI: Non ne avrai bisogno, evitando un'ottimizzazione prematura
  • Dodici fattori: Seguire le best practice per creare applicazioni moderne e scalabili
  • rasoio di Occam: Scegliere la soluzione più semplice che soddisfi i requisiti
  • Cibo per cani:Utilizzando ampiamente i nostri prodotti

Questi principi non sono solo concetti teorici, sono incorporati nelle nostre pratiche di sviluppo quotidiane. Ad esempio, la nostra adesione alla filosofia Unix è evidente nel modo in cui abbiamo strutturato i nostri pacchetti npm: piccoli moduli mirati che possono essere composti insieme per risolvere problemi complessi.

Prendere di mira lo sviluppatore combattivo e autofinanziato

Ci rivolgiamo specificatamente a coloro che sono combattivi, autonomi e ramen-redditizio sviluppatore. Questa attenzione plasma tutto, dal nostro modello di prezzo alle nostre decisioni tecniche. Comprendiamo le sfide della creazione di prodotti con risorse limitate perché ci siamo passati noi stessi.

Questo principio è particolarmente importante nel modo in cui ci avviciniamo all'open source. Creiamo e manteniamo pacchetti che risolvono problemi reali per sviluppatori senza budget aziendali, rendendo strumenti potenti accessibili a tutti, indipendentemente dalle loro risorse.

Principi in pratica: il codice base di posta elettronica in avanti

Questi principi sono chiaramente visibili nel codice base di Forward Email. Il nostro file package.json rivela una selezione ponderata di dipendenze, ciascuna scelta per allinearsi ai nostri valori fondamentali:

  • Pacchetti incentrati sulla sicurezza come mailauth per l'autenticazione e-mail
  • Strumenti di facile utilizzo per gli sviluppatori come preview-email per un debug più semplice
  • Componenti modulari come i vari p-* utilità da Sindre Sorhus

Seguendo questi principi in modo coerente nel tempo, abbiamo creato un servizio di cui gli sviluppatori possono fidarsi per la loro infrastruttura di posta elettronica: sicuro, affidabile e in linea con i valori della comunità open source.

Privacy by Design

Per Forward Email la privacy non è un ripensamento o una caratteristica di marketing, ma un principio di progettazione fondamentale che informa ogni aspetto del nostro servizio e del nostro codice:

  • Crittografia ad accesso zero: Abbiamo implementato sistemi che ci rendono tecnicamente impossibile leggere le email degli utenti.
  • Raccolta dati minima: Raccogliamo solo i dati necessari per fornire il nostro servizio, niente di più.
  • Politiche trasparenti: La nostra informativa sulla privacy è redatta in un linguaggio chiaro e comprensibile, privo di termini legali.
  • Verifica Open Source: Il nostro codice sorgente open source consente ai ricercatori di sicurezza di verificare le nostre affermazioni sulla privacy.

Questo impegno si estende ai nostri pacchetti open source, progettati sin dalle fondamenta con le migliori pratiche di sicurezza e privacy.

Open Source sostenibile

Crediamo che il software open source abbia bisogno di modelli sostenibili per prosperare a lungo termine. Il nostro approccio include:

  • Supporto commerciale: Offriamo supporto e servizi premium per i nostri strumenti open source.
  • Licenze bilanciate:Utilizzo di licenze che proteggano sia le libertà degli utenti sia la sostenibilità del progetto.
  • Impegno della comunità: Coinvolgere attivamente i collaboratori per creare una comunità solidale.
  • Roadmap trasparenti: Condividere i nostri piani di sviluppo per consentire agli utenti di pianificare di conseguenza.

Concentrandoci sulla sostenibilità, garantiamo che i nostri contributi open source possano continuare a crescere e migliorare nel tempo anziché cadere nell'oblio.

I numeri non mentono: le nostre incredibili statistiche di download di npm

Quando parliamo dell'impatto del software open source, le statistiche di download forniscono una misura tangibile di adozione e fiducia. Molti dei pacchetti che aiutiamo a mantenere hanno raggiunto una scala che pochi progetti open source raggiungono mai, con download combinati che ammontano a miliardi.

Top npm Packages by Downloads

[!IMPORTANTE] Sebbene siamo orgogliosi di contribuire a mantenere diversi pacchetti molto scaricati nell'ecosistema JavaScript, vogliamo riconoscere che molti di questi pacchetti sono stati originariamente creati da altri sviluppatori di talento. Pacchetti come superagent e supertest sono stati originariamente creati da TJ Holowaychuk, i cui prolifici contributi all'open source sono stati determinanti nel dare forma all'ecosistema Node.js.

Una panoramica del nostro impatto

Solo nel periodo di due mesi da febbraio a marzo 2025, i principali pacchetti a cui contribuiamo e che aiutiamo a mantenere hanno registrato numeri di download sbalorditivi:

[!NOTE] Molti altri pacchetti che aiutiamo a mantenere ma che non abbiamo creato hanno conteggi di download ancora più alti, tra cui form-data (oltre 738 milioni di download), toidentifier (oltre 309 milioni di download), stackframe (oltre 116 milioni di download) e error-stack-parser (oltre 113 milioni di download). Siamo onorati di contribuire a questi pacchetti rispettando il lavoro dei loro autori originali.

Questi non sono solo numeri impressionanti, rappresentano veri sviluppatori che risolvono problemi reali con il codice che aiutiamo a gestire. Ogni download è un esempio in cui questi pacchetti hanno aiutato qualcuno a creare qualcosa di significativo, da progetti amatoriali ad applicazioni aziendali utilizzate da milioni di persone.

Package Categories Distribution

Impatto quotidiano su larga scala

I modelli di download giornalieri rivelano un utilizzo costante e ad alto volume, con picchi che raggiungono milioni di download al giorno[^13]. Questa coerenza testimonia la stabilità e l'affidabilità di questi pacchetti: gli sviluppatori non si limitano a provarli, ma li integrano nei loro flussi di lavoro principali e dipendono da loro giorno dopo giorno.

I modelli di download settimanali mostrano numeri ancora più impressionanti, che si aggirano costantemente intorno a decine di milioni di download a settimana[^14]. Ciò rappresenta un'impronta enorme nell'ecosistema JavaScript, con questi pacchetti in esecuzione in ambienti di produzione in tutto il mondo.

Oltre i numeri grezzi

Sebbene le statistiche di download siano impressionanti di per sé, raccontano una storia più profonda sulla fiducia che la comunità ripone in questi pacchetti. Mantenere pacchetti su questa scala richiede un impegno incrollabile per:

  • Compatibilità con le versioni precedenti: Le modifiche devono essere attentamente valutate per evitare di compromettere le implementazioni esistenti.
  • Sicurezza:Con milioni di applicazioni che dipendono da questi pacchetti, le vulnerabilità della sicurezza potrebbero avere conseguenze di vasta portata.
  • Prestazione: A questa scala, anche piccoli miglioramenti delle prestazioni possono comportare notevoli vantaggi complessivi.
  • Documentazione: Una documentazione chiara e completa è essenziale per i pacchetti utilizzati dagli sviluppatori di tutti i livelli di esperienza.

La crescita costante nel tempo del numero di download riflette il successo nel rispettare questi impegni, creando fiducia nella comunità degli sviluppatori attraverso pacchetti affidabili e ben gestiti.

Supportare l'ecosistema: le nostre sponsorizzazioni open source

[!TIP] La sostenibilità open source non riguarda solo il contributo al codice, ma anche il supporto agli sviluppatori che gestiscono l'infrastruttura critica.

Oltre ai nostri contributi diretti all'ecosistema JavaScript, siamo orgogliosi di sponsorizzare importanti collaboratori di Node.js il cui lavoro costituisce la base di molte applicazioni moderne. Le nostre sponsorizzazioni includono:

Andris Reinman: pioniere dell'infrastruttura di posta elettronica

Andris Reinman è il creatore di Nota mailer, la libreria di invio email più popolare per Node.js con oltre 14 milioni di download settimanali[^15]. Il suo lavoro si estende ad altri componenti critici dell'infrastruttura email come Server SMTP, Parser di posta, e Anatra selvatica.

La nostra sponsorizzazione contribuisce a garantire la manutenzione e lo sviluppo continui di questi strumenti essenziali che supportano la comunicazione via e-mail per innumerevoli applicazioni Node.js, incluso il nostro servizio Forward Email.

Sindre Sorhus: mente del pacchetto di utilità

Sindre Sorhus è uno dei più prolifici contributori open source nell'ecosistema JavaScript, con oltre 1.000 pacchetti npm a suo nome. Le sue utility come p-mappa, pre-riprova, e è-flusso sono elementi costitutivi fondamentali utilizzati nell'intero ecosistema Node.js.

Sponsorizzando il lavoro di Sindre, contribuiamo a sostenere lo sviluppo di queste utilità fondamentali che rendono lo sviluppo JavaScript più efficiente e affidabile.

Queste sponsorizzazioni riflettono il nostro impegno verso l'ecosistema open source più ampio. Riconosciamo che il nostro successo è costruito sulle fondamenta gettate da questi e altri contributori e ci impegniamo a garantire la sostenibilità dell'intero ecosistema.

Scoprire le vulnerabilità di sicurezza nell'ecosistema JavaScript

Il nostro impegno verso l'open source si estende oltre lo sviluppo delle funzionalità, includendo l'identificazione e la risoluzione delle vulnerabilità di sicurezza che potrebbero avere un impatto su milioni di sviluppatori. Molti dei nostri contributi più significativi all'ecosistema JavaScript sono stati nel campo della sicurezza.

Il salvataggio di Koa-Router

Nel febbraio 2019, Nick ha identificato un problema critico con la manutenzione del popolare pacchetto koa-router. Mentre segnalato su Hacker News, il pacchetto era stato abbandonato dal suo responsabile originale, lasciando le vulnerabilità di sicurezza irrisolte e la comunità senza aggiornamenti.

[!WARNING] I pacchetti abbandonati con vulnerabilità di sicurezza rappresentano rischi significativi per l'intero ecosistema, soprattutto quando vengono scaricati milioni di volte alla settimana.

In risposta, Nick ha creato @koa/router e ha contribuito ad avvisare la comunità della situazione. Da allora si occupa della manutenzione di questo pacchetto fondamentale, assicurando che gli utenti di Koa abbiano una soluzione di routing sicura e ben mantenuta.

Affrontare le vulnerabilità ReDoS

Nel 2020, Nick ha identificato e affrontato un problema critico Negazione del servizio tramite espressione regolare (ReDoS) vulnerabilità nel ampiamente utilizzato url-regex pacchetto. Questa vulnerabilità (SNYK-JS-URLREGEX-569472) potrebbe consentire agli aggressori di causare un diniego di servizio fornendo un input appositamente creato che ha causato un backtracking catastrofico nell'espressione regolare.

Invece di applicare semplicemente una patch al pacchetto esistente, Nick ha creato url-regex-safe, un'implementazione completamente riscritta che affronta la vulnerabilità mantenendo la compatibilità con l'API originale. Ha anche pubblicato un post di blog completo spiegando la vulnerabilità e come mitigarla.

Questo lavoro mostra il nostro approccio alla sicurezza: non limitarci a risolvere i problemi, ma anche istruire la comunità e fornire valide alternative che prevengano il ripetersi di problemi simili in futuro.

Sostenere la sicurezza di Node.js e Chromium

Nick è stato anche attivo nel sostenere i miglioramenti della sicurezza nell'ecosistema più ampio. Ad agosto 2020, ha identificato un problema di sicurezza significativo in Node.js relativo alla sua gestione delle intestazioni HTTP, che è stato segnalato in Il registro.

Questo problema, che derivava da una patch in Chromium, potrebbe potenzialmente consentire agli aggressori di aggirare le misure di sicurezza. L'advocacy di Nick ha contribuito a garantire che il problema venisse affrontato tempestivamente, proteggendo milioni di applicazioni Node.js da potenziali sfruttamenti.

Protezione dell'infrastruttura npm

Più tardi, nello stesso mese, Nick ha identificato un altro problema di sicurezza critico, questa volta nell'infrastruttura di posta elettronica di npm. Come riportato in Il registronpm non implementava correttamente i protocolli di autenticazione e-mail DMARC, SPF e DKIM, consentendo potenzialmente agli aggressori di inviare e-mail di phishing che sembravano provenire da npm.

Il report di Nick ha portato a miglioramenti nella sicurezza della posta elettronica di npm, proteggendo i milioni di sviluppatori che si affidano a npm per la gestione dei pacchetti da potenziali attacchi di phishing.

I nostri contributi all'ecosistema di posta elettronica in avanti

Forward Email è basato su diversi progetti open source critici, tra cui Nodemailer, WildDuck e mailauth. Il nostro team ha apportato contributi significativi a questi progetti, aiutando a identificare e risolvere problemi profondi che influiscono sulla consegna e sulla sicurezza delle email.

Miglioramento delle funzionalità principali di Nodemailer

Nota mailer è la spina dorsale dell'invio di e-mail in Node.js e i nostri contributi hanno contribuito a renderlo più robusto:

  • Miglioramenti del server SMTP: Abbiamo risolto bug di analisi, problemi di gestione dello streaming e problemi di configurazione TLS nel componente del server SMTP[^16][^17].
  • Miglioramenti del parser di posta: Abbiamo risolto gli errori di decodifica della sequenza di caratteri e risolto i problemi del parser che potevano causare errori nell'elaborazione delle email[^18][^19].

Questi contributi garantiscono che Nodemailer rimanga una base affidabile per l'elaborazione delle email nelle applicazioni Node.js, tra cui Forward Email.

Migliorare l'autenticazione e-mail con Mailauth

Autorizzazione Mail fornisce funzionalità di autenticazione e-mail critiche e i nostri contributi ne hanno migliorato notevolmente le capacità:

  • Miglioramenti della verifica DKIM:Abbiamo scoperto e segnalato che X/Twitter aveva problemi con la cache DNS che causavano errori DKIM per i loro messaggi in uscita, segnalandolo su Hacker One[^20].
  • Miglioramenti DMARC e ARC: Abbiamo risolto i problemi con la verifica DMARC e ARC che potevano portare a risultati di autenticazione errati[^21][^22].
  • Ottimizzazioni delle prestazioni: Abbiamo contribuito a migliorare le prestazioni dei processi di autenticazione e-mail[^23][^24][^25][^26].

Questi miglioramenti contribuiscono a garantire che l'autenticazione e-mail sia accurata e affidabile, proteggendo gli utenti da attacchi di phishing e spoofing.

Miglioramenti chiave di Upptime

I nostri contributi a Upptime includono:

  • Monitoraggio del certificato SSL:Abbiamo aggiunto una funzionalità per monitorare la scadenza del certificato SSL, prevenendo tempi di inattività imprevisti dovuti a certificati scaduti[^27].
  • Supporto per più numeri SMS:Abbiamo implementato il supporto per avvisare più membri del team tramite SMS quando si verificano incidenti, migliorando i tempi di risposta[^28].
  • Correzioni di controllo IPv6: Abbiamo risolto i problemi con i controlli di connettività IPv6, garantendo un monitoraggio più accurato negli ambienti di rete moderni[^29].
  • Supporto modalità scura/chiara: Abbiamo aggiunto il supporto per i temi per migliorare l'esperienza utente delle pagine di stato[^31].
  • Miglior supporto TCP-Ping: Abbiamo migliorato la funzionalità ping TCP per fornire test di connessione più affidabili[^32].

Questi miglioramenti non solo migliorano il monitoraggio dello stato di Forward Email, ma sono disponibili all'intera community di utenti Upptime, a dimostrazione del nostro impegno nel migliorare gli strumenti da cui dipendiamo.

La colla che tiene tutto insieme: codice personalizzato su larga scala

Sebbene i nostri pacchetti npm e i contributi ai progetti esistenti siano significativi, è il codice personalizzato che integra questi componenti a mettere veramente in mostra la nostra competenza tecnica. La base di codice di Forward Email rappresenta un decennio di sforzi di sviluppo, risalenti al 2017, quando il progetto è iniziato come inoltro-e-mail-gratuito prima di essere uniti in un monorepo.

Uno sforzo di sviluppo enorme

La portata di questo codice di integrazione personalizzato è impressionante:

  • Contributi totali: Oltre 3.217 commit
  • Dimensione della base di codice: Oltre 421.545 linee di codice tra file JavaScript, Pug, CSS e JSON[^33]

Ciò rappresenta migliaia di ore di lavoro di sviluppo, sessioni di debug e ottimizzazioni delle prestazioni. È la "salsa segreta" che trasforma i singoli pacchetti in un servizio coeso e affidabile utilizzato da migliaia di clienti ogni giorno.

Integrazione delle dipendenze principali

Il codice di base di Forward Email integra numerose dipendenze in un insieme fluido:

  • Elaborazione e-mail: Integra Nodemailer per l'invio, SMTP Server per la ricezione e Mailparser per l'analisi
  • Autenticazione: Utilizza Mailauth per la verifica DKIM, SPF, DMARC e ARC
  • Risoluzione DNS: Sfrutta Tangerine per DNS-over-HTTPS con memorizzazione nella cache globale
  • Connessione MX: Utilizza mx-connect con l'integrazione di Tangerine per connessioni affidabili al server di posta
  • Pianificazione del lavoro: Utilizza Bree per l'elaborazione affidabile delle attività in background con thread di lavoro
  • Creazione di modelli: Utilizza modelli di posta elettronica per riutilizzare i fogli di stile dal sito Web nelle comunicazioni con i clienti
  • Archiviazione della posta elettronica: Implementa caselle di posta SQLite crittografate individualmente utilizzando better-sqlite3-multiple-ciphers con crittografia ChaCha20-Poly1305 per la privacy sicura quantistica, garantendo un isolamento completo tra gli utenti e che solo l'utente abbia accesso alla propria casella di posta

Ognuna di queste integrazioni richiede un'attenta considerazione dei casi limite, delle implicazioni sulle prestazioni e delle preoccupazioni sulla sicurezza. Il risultato è un sistema robusto che gestisce milioni di transazioni e-mail in modo affidabile. La nostra implementazione SQLite sfrutta anche msgpackr per un'efficiente serializzazione binaria e WebSocket (tramite ws) per aggiornamenti di stato in tempo reale nella nostra infrastruttura.

Infrastruttura DNS con Tangerine e mx-connect

Una componente fondamentale dell'infrastruttura di Forward Email è il nostro sistema di risoluzione DNS, basato su due pacchetti chiave:

  • mandarino: La nostra implementazione DNS-over-HTTPS di Node.js fornisce una sostituzione immediata per il risolutore DNS standard, con nuovi tentativi integrati, timeout, rotazione intelligente del server e supporto per la memorizzazione nella cache.

  • mx-connetti: Questo pacchetto stabilisce connessioni TCP ai server MX, prendendo un dominio di destinazione o un indirizzo email, risolvendo i server MX appropriati e connettendosi ad essi in ordine di priorità.

Abbiamo integrato Tangerine con mx-connect tramite richiesta di pull n. 4, assicurando il DNS a livello di applicazione su richieste HTTP in Forward Email. Ciò fornisce caching globale per DNS su larga scala con coerenza 1:1 in qualsiasi regione, app o processo, fondamentale per una consegna affidabile delle e-mail in un sistema distribuito.

Impatto aziendale: dall'open source alle soluzioni mission-critical

Il culmine del nostro viaggio decennale nello sviluppo open source ha consentito a Forward Email di servire non solo singoli sviluppatori, ma anche grandi aziende e istituti scolastici che costituiscono la spina dorsale del movimento open source stesso.

Casi di studio in infrastrutture di posta elettronica mission-critical

Il nostro impegno verso l'affidabilità, la privacy e i principi open source ha reso Forward Email la scelta di fiducia per le organizzazioni con requisiti di posta elettronica esigenti:

  • Istituzioni educative: Come dettagliato nel nostro studio caso inoltro e-mail alumni, le principali università si affidano alla nostra infrastruttura per mantenere contatti duraturi con centinaia di migliaia di ex studenti attraverso affidabili servizi di inoltro e-mail.

  • Soluzioni Linux aziendali: IL Caso di studio aziendale di posta elettronica Canonical Ubuntu dimostra come il nostro approccio open source si allinei perfettamente alle esigenze dei provider Linux aziendali, offrendo loro la trasparenza e il controllo di cui hanno bisogno.

  • Fondamenti Open Source: Forse la cosa più convalidante è la nostra partnership con la Linux Foundation, come documentato nel Caso di studio aziendale sulla posta elettronica della Linux Foundation, dove il nostro servizio potenzia la comunicazione per l'organizzazione stessa che gestisce lo sviluppo di Linux.

C'è una bella simmetria nel modo in cui i nostri pacchetti open source, mantenuti con cura per molti anni, ci hanno permesso di creare un servizio di posta elettronica che ora supporta le stesse comunità e organizzazioni che sostengono il software open source. Questo viaggio a tutto tondo, dal contributo di pacchetti individuali all'alimentazione di infrastrutture di posta elettronica di livello aziendale per i leader open source, rappresenta la convalida definitiva del nostro approccio allo sviluppo software.

Un decennio di Open Source: uno sguardo al futuro

Ripensando a un decennio di contributi open source e guardando al futuro dei prossimi dieci, siamo pieni di gratitudine per la comunità che ha supportato il nostro lavoro e di entusiasmo per ciò che ci aspetta.

Il nostro percorso da singoli contributori di pacchetti a manutentori di un'infrastruttura di posta elettronica completa utilizzata da grandi aziende e fondazioni open source è stato notevole. È una testimonianza della potenza dello sviluppo open source e dell'impatto che un software ponderato e ben mantenuto può avere sull'ecosistema più ampio.

Nei prossimi anni ci impegniamo a:

  • Continuiamo a mantenere e migliorare i nostri pacchetti esistenti, garantendo che rimangano strumenti affidabili per gli sviluppatori di tutto il mondo.
  • Ampliare i nostri contributi ai progetti infrastrutturali critici, in particolare nei settori della posta elettronica e della sicurezza.
  • Miglioramento delle capacità di Forward Email mantenendo il nostro impegno verso la privacy, la sicurezza e la trasparenza.
  • Supportare la prossima generazione di collaboratori open source attraverso il tutoraggio, la sponsorizzazione e il coinvolgimento della comunità.

Crediamo che il futuro dello sviluppo software sia aperto, collaborativo e costruito su una base di fiducia. Continuando a contribuire con pacchetti di alta qualità e incentrati sulla sicurezza all'ecosistema JavaScript, speriamo di svolgere una piccola parte nella costruzione di quel futuro.

Grazie a tutti coloro che hanno utilizzato i nostri pacchetti, contribuito ai nostri progetti, segnalato problemi o semplicemente diffuso la voce sul nostro lavoro. Il vostro supporto ha reso possibile questo decennio di impatto e siamo emozionati di vedere cosa potremo realizzare insieme nei prossimi dieci anni.

[^1]: statistiche di download npm per cabin, aprile 2025 [^2]: statistiche di download npm per bson-objectid, febbraio-marzo 2025 [^3]: statistiche di download npm per url-regex-safe, aprile 2025 [^4]: conteggio stelle GitHub per forwardemail/forwardemail.net ad aprile 2025 [^5]: statistiche di download npm per preview-email, aprile 2025 [^7]: statistiche di download npm per superagent, febbraio-marzo 2025 [^8]: statistiche di download npm per supertest, febbraio-marzo 2025 [^9]: statistiche di download npm per preview-email, febbraio-marzo 2025 [^10]: statistiche di download npm per cabin, febbraio-marzo 2025 [^11]: statistiche di download npm per url-regex-safe, febbraio-marzo 2025 [^12]: statistiche di download npm per spamscanner, febbraio-marzo 2025 [^13]: modelli di download giornalieri dalle statistiche npm, aprile 2025 [^14]: modelli di download settimanali dalle statistiche npm, aprile 2025 [^15]: statistiche di download npm per nodemailer, aprile 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]: In base ai problemi di GitHub nel repository Upptime [^28]: In base ai problemi di GitHub nel repository Upptime [^29]: In base ai problemi di GitHub nel repository Upptime [^30]: Statistiche di download di npm per bree, febbraio-marzo 2025 [^31]: In base alle pull request di GitHub su Upptime [^32]: In base alle pull request di GitHub su Upptime [^34]: Statistiche di download di npm per koa, febbraio-marzo 2025 [^35]: Statistiche di download di npm per @koa/router, febbraio-marzo 2025 [^36]: Statistiche di download di npm per koa-router, febbraio-marzo 2025 [^37]: Statistiche di download di npm per url-regex, febbraio-marzo 2025 [^38]: Statistiche di download di npm per @breejs/later, febbraio-marzo 2025 [^39]: statistiche di download di npm per email-templates, febbraio-marzo 2025 [^40]: statistiche di download di npm per get-paths, febbraio-marzo 2025 [^41]: statistiche di download di npm per dotenv-parse-variables, febbraio-marzo 2025 [^42]: statistiche di download di npm per @koa/multer, febbraio-marzo 2025