Dekáda dopadu: Jak naše npm balíčky dosáhly 1 miliardy stažení a formovaly JavaScript
Předmluva
Ve světě JavaScriptu a Node.js jsou některé balíčky nezbytné – stahují se milionykrát denně a pohánějí aplikace po celém světě. Za těmito nástroji stojí vývojáři zaměření na kvalitu open source. Dnes ukazujeme, jak náš tým pomáhá vytvářet a udržovat npm balíčky, které se staly klíčovými součástmi ekosystému JavaScriptu.
Průkopníci, kteří nám důvěřují: Isaac Z. Schlueter a Forward Email
Jsme hrdí, že máme mezi uživateli Isaaca Z. Schluetera (GitHub: isaacs). Isaac vytvořil npm a pomáhal budovat Node.js. Jeho důvěra ve Forward Email ukazuje náš důraz na kvalitu a bezpečnost. Isaac používá Forward Email pro několik domén včetně izs.me.
Isaacův vliv na JavaScript je obrovský. V roce 2009 byl mezi prvními, kdo viděli potenciál Node.js, když spolupracoval s Ryanem Dahlem, který platformu vytvořil. Jak Isaac řekl v rozhovoru pro časopis Increment: „Uprostřed této velmi malé komunity lidí, kteří se snažili přijít na to, jak uskutečnit serverový JS, přišel Ryan Dahl s Node, což bylo jasně správné řešení. Vsadil jsem na to a velmi se zapojil někdy v polovině roku 2009.“
Note
Pro zájemce o historii Node.js jsou k dispozici vynikající dokumenty, které sledují jeho vývoj, včetně The Story of Node.js a 10 Things I Regret About Node.js - Ryan Dahl. Ryan Dahlův osobní web také obsahuje cenné poznatky o jeho práci.
Od vzniku npm k vedení Node.js
Isaac vytvořil npm v září 2009, přičemž první použitelná verze byla vydána začátkem roku 2010. Tento správce balíčků vyplnil klíčovou potřebu v Node.js, umožňující vývojářům snadno sdílet a znovu používat kód. Podle stránky Node.js na Wikipedii: „V lednu 2010 byl pro prostředí Node.js zaveden správce balíčků nazvaný npm. Správce balíčků umožňuje programátorům publikovat a sdílet Node.js balíčky spolu s přiloženým zdrojovým kódem a je navržen tak, aby usnadnil instalaci, aktualizaci a odinstalaci balíčků.“
Když se Ryan Dahl v lednu 2012 stáhl z Node.js, Isaac převzal vedení projektu. Jak je uvedeno v jeho životopise, „vedl vývoj několika základních Node.js core API, včetně systému modulů CommonJS, API pro souborový systém a streamů“ a „působil jako BDFL (Benevolent Dictator For Life) projektu po dobu 2 let, zajišťující stále rostoucí kvalitu a spolehlivý proces sestavení pro verze Node.js v0.6 až v0.10.“
Isaac vedl Node.js během klíčového období růstu a stanovil standardy, které platformu formují dodnes. Později v roce 2014 založil npm, Inc., aby podporoval npm registry, které dříve provozoval sám.
Děkujeme Isaacovi za jeho obrovský přínos pro JavaScript a nadále používáme mnoho balíčků, které vytvořil. Jeho práce změnila způsob, jakým vytváříme software a jak miliony vývojářů sdílejí kód po celém světě.
Architekt za kódem: cesta Nicka Baugha
V srdci našeho úspěchu v open source je Nick Baugh, zakladatel a majitel Forward Email. Jeho práce v JavaScriptu trvá téměř 20 let a ovlivnila, jak nespočet vývojářů vytváří aplikace. Jeho cesta v open source ukazuje jak technické dovednosti, tak vedení komunity.
Technický výbor Express a hlavní příspěvky
Nickova odbornost v oblasti webových frameworků mu zajistila místo v Technickém výboru Express, kde pomáhal s jedním z nejpoužívanějších Node.js frameworků. Nick je nyní uveden jako neaktivní člen na stránce komunity Express.
Important
Express byl původně vytvořen TJ Holowaychukem, plodným přispěvatelem do open source, který formoval velkou část ekosystému Node.js. Jsme vděční za TJho základní práci a respektujeme jeho rozhodnutí si dát pauzu od jeho rozsáhlých open source příspěvků.
Jako člen Technického výboru Express Nick prokázal velkou pozornost k detailům v otázkách jako je upřesnění dokumentace req.originalUrl a oprava problémů s manipulací multipart formulářů.
Příspěvky do frameworku Koa
Nickova práce s Koa frameworkem—moderní, lehčí alternativou k Express, kterou také vytvořil TJ Holowaychuk—dále ukazuje jeho závazek k lepším nástrojům pro webový vývoj. Jeho příspěvky do Koa zahrnují jak řešení problémů, tak kód prostřednictvím pull requestů, zaměřené na zpracování chyb, správu typů obsahu a zlepšení dokumentace.
Jeho práce napříč Express i Koa mu dává jedinečný pohled na webový vývoj v Node.js, což pomáhá našemu týmu vytvářet balíčky, které dobře fungují v rámci více frameworkových ekosystémů.
Od jednotlivého přispěvatele k lídrovi organizace
Co začalo jako pomoc existujícím projektům, vyrostlo v tvorbu a údržbu celých ekosystémů balíčků. Nick založil několik GitHub organizací—včetně Cabin, Spam Scanner, Forward Email, Lad a Bree—z nichž každá řeší specifické potřeby v JavaScript komunitě.
Tento přechod od přispěvatele k lídrovi ukazuje Nickovu vizi dobře navrženého softwaru, který řeší skutečné problémy. Organizováním souvisejících balíčků pod zaměřené GitHub organizace vybudoval nástrojové ekosystémy, které spolupracují, přitom zůstávají modulární a flexibilní pro širší vývojářskou komunitu.
Naše GitHub organizace: Ekosystémy inovací
Naši open source práci organizujeme kolem zaměřených GitHub organizací, z nichž každá řeší specifické potřeby v JavaScriptu. Tato struktura vytváří soudržné rodiny balíčků, které spolu dobře fungují a zároveň zůstávají modulární.
Cabin: Strukturované logování pro moderní aplikace
Organizace Cabin je náš pohled na jednoduché, výkonné logování aplikací. Hlavní balíček cabin má téměř 900 hvězdiček na GitHubu a přes 100 000 týdenních stažení[1]. Cabin poskytuje strukturované logování, které funguje s populárními službami jako Sentry, LogDNA a Papertrail.
Co dělá Cabin výjimečným, je jeho promyšlené API a systém pluginů. Podpůrné balíčky jako axe pro Express middleware a parse-request pro parsování HTTP požadavků ukazují náš závazek k úplným řešením místo izolovaných nástrojů.
Balíček bson-objectid si zaslouží zvláštní zmínku, s více než 1,7 miliony stažení za pouhé dva měsíce[2]. Tato lehká implementace MongoDB ObjectID se stala oblíbenou volbou pro vývojáře, kteří potřebují ID bez plných závislostí na MongoDB.
Spam Scanner: Boj proti zneužívání e-mailů
Organizace Spam Scanner ukazuje náš závazek řešit skutečné problémy. Hlavní balíček spamscanner poskytuje pokročilou detekci spamových e-mailů, ale balíček url-regex-safe zaznamenal úžasné přijetí.
S více než 1,2 miliony stažení za dva měsíce[3], url-regex-safe opravuje kritické bezpečnostní problémy v jiných regulárních výrazech pro detekci URL. Tento balíček ukazuje náš přístup k open source: najít běžný problém (v tomto případě ReDoS zranitelnosti v ověřování URL), vytvořit solidní řešení a pečlivě jej udržovat.
Bree: Moderní plánování úloh s pracovními vlákny
Organizace Bree je naší odpovědí na běžný problém v Node.js: spolehlivé plánování úloh. Hlavní balíček bree, s více než 3 100 hvězdami na GitHubu, poskytuje moderní plánovač úloh využívající pracovní vlákna Node.js pro lepší výkon a spolehlivost.
Note
Bree vzniklo poté, co jsme pomáhali udržovat Agenda, přičemž jsme aplikovali získané zkušenosti k vytvoření lepšího plánovače úloh. Naše příspěvky do Agendy nám pomohly najít způsoby, jak zlepšit plánování úloh.
Co dělá Bree odlišným od jiných plánovačů jako Agenda:
- Žádné externí závislosti: Na rozdíl od Agendy, která potřebuje MongoDB, Bree nevyžaduje Redis ani MongoDB pro správu stavu úloh.
- Pracovní vlákna: Bree používá pracovní vlákna Node.js pro sandboxované procesy, což poskytuje lepší izolaci a výkon.
- Jednoduché API: Bree nabízí podrobnou kontrolu s jednoduchostí, což usnadňuje implementaci složitých požadavků na plánování.
- Vestavěná podpora: Funkce jako plynulé přenačítání, cron úlohy, data a uživatelsky přívětivé časy jsou zahrnuty ve výchozím nastavení.
Bree je klíčovou součástí forwardemail.net, kde zajišťuje kritické úlohy na pozadí jako zpracování e-mailů, úklid a plánovanou údržbu. Použití Bree ve Forward Email ukazuje náš závazek používat vlastní nástroje v produkci a zajistit, že splňují vysoké standardy spolehlivosti.
Také používáme a oceňujeme další skvělé balíčky pro pracovní vlákna jako piscina a HTTP klienty jako undici. Piscina, stejně jako Bree, využívá pracovní vlákna Node.js pro efektivní zpracování úloh. Děkujeme Matteu Collinovi, který udržuje jak undici, tak piscina, za jeho významné příspěvky do Node.js. Matteo je členem Technického řídícího výboru Node.js a výrazně zlepšil schopnosti HTTP klientů v Node.js.
Forward Email: Open Source e-mailová infrastruktura
Náš nejambicióznější projekt je Forward Email, open source e-mailová služba, která poskytuje přeposílání e-mailů, úložiště a API služby. Hlavní repozitář má přes 1 100 hvězd na GitHubu[4], což ukazuje ocenění komunity pro tuto alternativu k proprietárním e-mailovým službám.
Balíček preview-email z této organizace, s více než 2,5 miliony stažení za dva měsíce[5], se stal nezbytným nástrojem pro vývojáře pracující s e-mailovými šablonami. Poskytuje jednoduchý způsob náhledu e-mailů během vývoje, čímž řeší běžný problém při tvorbě aplikací podporujících e-maily.
Lad: Základní nástroje a utility pro Koa
Organizace Lad poskytuje sbírku základních utilit a nástrojů zaměřených především na rozšíření ekosystému frameworku Koa. Tyto balíčky řeší běžné výzvy ve webovém vývoji a jsou navrženy tak, aby spolu hladce spolupracovaly a zároveň byly samostatně užitečné.
koa-better-error-handler: Vylepšené zpracování chyb pro Koa
koa-better-error-handler nabízí lepší řešení zpracování chyb pro aplikace Koa. S více než 50 hvězdami na GitHubu tento balíček umožňuje, aby ctx.throw produkovalo uživatelsky přívětivé chybové zprávy a zároveň řeší několik omezení vestavěného zpracování chyb v Koa:
- Detekuje a správně zpracovává chyby Node.js DNS, chyby Mongoose a chyby Redis
- Používá Boom pro vytváření konzistentních, dobře formátovaných chybových odpovědí
- Zachovává hlavičky (na rozdíl od vestavěného zpracování Koa)
- Udržuje vhodné stavové kódy místo výchozího 500
- Podporuje flash zprávy a zachování session
- Poskytuje HTML seznamy chyb pro validační chyby
- Podporuje více typů odpovědí (HTML, JSON a prostý text)
Tento balíček je obzvláště cenný při použití společně s
koa-404-handlerpro komplexní správu chyb v aplikacích Koa.
passport: Autentizace pro Lad
@ladjs/passport rozšiřuje populární middleware pro autentizaci Passport.js o specifická vylepšení pro moderní webové aplikace. Tento balíček podporuje více autentizačních strategií ihned po vybalení:
- Lokální autentizace pomocí e-mailu
- Přihlášení přes Apple
- Autentizace přes GitHub
- Autentizace přes Google
- Autentizace pomocí jednorázového hesla (OTP)
Balíček je vysoce přizpůsobitelný, umožňuje vývojářům upravit názvy polí a fráze tak, aby odpovídaly požadavkům jejich aplikace. Je navržen tak, aby se bezproblémově integroval s Mongoose pro správu uživatelů, což z něj činí ideální řešení pro aplikace založené na Koa, které potřebují robustní autentizaci.
graceful: Elegantní ukončení aplikace
@ladjs/graceful řeší kritický problém elegantního ukončení aplikací Node.js. S více než 70 hvězdami na GitHubu tento balíček zajišťuje, že vaše aplikace může být ukončena čistě, aniž by došlo ke ztrátě dat nebo ponechání otevřených spojení. Klíčové vlastnosti zahrnují:
- Podpora pro elegantní uzavření HTTP serverů (Express/Koa/Fastify)
- Čisté ukončení připojení k databázi (MongoDB/Mongoose)
- Správné uzavření Redis klientů
- Správa plánovačů úloh Bree
- Podpora vlastních handlerů pro ukončení
- Konfigurovatelná časová omezení
- Integrace se systémy logování
Tento balíček je nezbytný pro produkční aplikace, kde neočekávané ukončení může vést ke ztrátě nebo poškození dat. Implementací správných postupů ukončení pomáhá @ladjs/graceful zajistit spolehlivost a stabilitu vaší aplikace.
Upptime: Open Source monitorování dostupnosti
Organizace Upptime představuje náš závazek k transparentnímu, open source monitorování. Hlavní repozitář upptime má přes 13 000 hvězd na GitHubu, což z něj činí jeden z nejpopulárnějších projektů, na kterých přispíváme. Upptime poskytuje monitor dostupnosti a statusovou stránku poháněnou GitHubem, která funguje zcela bez serveru.
Upptime používáme pro naši vlastní statusovou stránku na https://status.forwardemail.net s dostupným zdrojovým kódem na https://github.com/forwardemail/status.forwardemail.net.
Co dělá Upptime výjimečným, je jeho architektura:
- 100% Open Source: Každá součást je plně open source a přizpůsobitelná.
- Poháněno GitHubem: Využívá GitHub Actions, Issues a Pages pro bezserverové monitorování.
- Není potřeba server: Na rozdíl od tradičních monitorovacích nástrojů Upptime nevyžaduje provoz nebo údržbu serveru.
- Automatická statusová stránka: Generuje krásnou statusovou stránku, kterou lze hostovat na GitHub Pages.
- Výkonná oznámení: Integruje se s různými kanály oznámení včetně e-mailu, SMS a Slacku.
Pro zlepšení uživatelského zážitku jsme integrovali @octokit/core do kódu forwardemail.net, aby zobrazoval aktualizace stavu a incidentů v reálném čase přímo na našem webu. Tato integrace poskytuje jasnou transparentnost našim uživatelům v případě jakýchkoli problémů napříč celým naším stackem (Web, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree atd.) s okamžitými toast notifikacemi, změnami ikon odznaků, varovnými barvami a dalšími.
Knihovna @octokit/core nám umožňuje získávat data v reálném čase z našeho Upptime GitHub repozitáře, zpracovávat je a zobrazovat uživatelsky přívětivým způsobem. Když má jakákoliv služba výpadek nebo snížený výkon, uživatelé jsou okamžitě upozorněni vizuálními indikátory, aniž by museli opustit hlavní aplikaci. Tato bezproblémová integrace zajišťuje, že naši uživatelé mají vždy aktuální informace o stavu našeho systému, což zvyšuje transparentnost a důvěru.
Upptime bylo přijato stovkami organizací, které hledají transparentní a spolehlivý způsob, jak monitorovat své služby a komunikovat stav uživatelům. Úspěch projektu ukazuje sílu vytváření nástrojů, které využívají existující infrastrukturu (v tomto případě GitHub) k řešení běžných problémů novými způsoby.
Naše příspěvky do ekosystému Forward Email
Zatímco naše open source balíčky používají vývojáři po celém světě, tvoří také základ naší vlastní služby Forward Email. Tato dvojí role – jako tvůrců i uživatelů těchto nástrojů – nám poskytuje jedinečný pohled na jejich reálné použití a pohání neustálé zlepšování.
Od balíčků k produkci
Cesta od jednotlivých balíčků k soudržnému produkčnímu systému zahrnuje pečlivou integraci a rozšíření. Pro Forward Email tento proces zahrnuje:
- Vlastní rozšíření: Vytváření rozšíření specifických pro Forward Email k našim open source balíčkům, která řeší naše jedinečné požadavky.
- Vzorce integrace: Vývoj vzorců, jak tyto balíčky spolupracují v produkčním prostředí.
- Optimalizace výkonu: Identifikace a řešení výkonových úzkých míst, která se projeví až ve velkém měřítku.
- Zesílení bezpečnosti: Přidání dalších bezpečnostních vrstev specifických pro zpracování e-mailů a ochranu uživatelských dat.
Tato práce představuje tisíce hodin vývoje nad rámec samotných základních balíčků, což vede k robustní a bezpečné e-mailové službě, která využívá to nejlepší z našich open source příspěvků.
Zpětná vazba
Možná nejcennějším aspektem používání našich vlastních balíčků v produkci je zpětná vazba, kterou to vytváří. Když narazíme na omezení nebo okrajové případy ve Forward Email, neřešíme je pouze lokálně – zlepšujeme základní balíčky, což prospívá jak naší službě, tak širší komunitě.
Tento přístup vedl k mnoha vylepšením:
- Graceful Shutdown v Bree: Potřeba Forward Email pro nasazení bez výpadků vedla k vylepšeným schopnostem elegantního ukončení v Bree.
- Rozpoznávání vzorů ve Spam Scanneru: Reálné spamové vzory zachycené ve Forward Email ovlivnily detekční algoritmy Spam Scanneru.
- Optimalizace výkonu v Cabinu: Vysoký objem logování v produkci odhalil možnosti optimalizace v Cabinu, které prospívají všem uživatelům.
Udržováním tohoto ctnostného cyklu mezi naší open source prací a produkční službou zajišťujeme, že naše balíčky zůstávají praktickými, v boji prověřenými řešeními, nikoli teoretickými implementacemi.
Základní principy Forward Email: Základ pro excelenci
Forward Email je navržen podle sady základních principů, které řídí všechna naše vývojová rozhodnutí. Tyto principy, podrobně popsány na naší webové stránce, zajišťují, že naše služba zůstává přívětivá pro vývojáře, bezpečná a zaměřená na ochranu soukromí uživatelů.
Vždy přívětivý pro vývojáře, zaměřený na bezpečnost a transparentní
Naším prvním a nejdůležitějším principem je vytvářet software, který je přívětivý pro vývojáře a zároveň udržuje nejvyšší standardy bezpečnosti a soukromí. Věříme, že technická dokonalost by nikdy neměla být na úkor použitelnosti a že transparentnost buduje důvěru v naší komunitu.
Tento princip se projevuje v naší podrobné dokumentaci, jasných chybových hlášeních a otevřené komunikaci o úspěších i výzvách. Tím, že celý náš kód zpřístupňujeme jako open source, zveme k přezkoumání a spolupráci, což posiluje jak náš software, tak širší ekosystém.
Dodržování osvědčených principů vývoje softwaru
Řídíme se několika zavedenými principy vývoje softwaru, které se osvědčily během desetiletí:
- MVC: Oddělení zodpovědností pomocí vzoru Model-View-Controller
- Unix filozofie: Vytváření modulárních komponent, které dělají jednu věc dobře
- KISS: Držet to jednoduché a přímočaré
- DRY: Nepřepisuj se, podporující opětovné použití kódu
- YAGNI: Nebudeš to potřebovat, vyhýbání se předčasné optimalizaci
- Twelve Factor: Dodržování osvědčených postupů pro tvorbu moderních, škálovatelných aplikací
- Occamova břitva: Volba nejjednoduššího řešení, které splňuje požadavky
- Dogfooding: Intenzivní používání vlastních produktů Tyto principy nejsou jen teoretické koncepty – jsou zakotveny v našich každodenních vývojových postupech. Například naše dodržování unixové filozofie je patrné v tom, jak jsme strukturovali naše npm balíčky: malé, zaměřené moduly, které lze složit dohromady k řešení složitých problémů.
Cílení na houževnatého, samofinancovaného vývojáře
Specificky cílíme na houževnatého, samofinancovaného a ramen-profitable vývojáře. Tento fokus formuje vše od našeho cenového modelu až po naše technická rozhodnutí. Rozumíme výzvám budování produktů s omezenými zdroji, protože jsme si tím sami prošli.
Tento princip je obzvlášť důležitý v našem přístupu k open source. Vytváříme a udržujeme balíčky, které řeší skutečné problémy vývojářů bez podnikových rozpočtů, čímž zpřístupňujeme výkonné nástroje všem bez ohledu na jejich zdroje.
Principy v praxi: Kódová základna Forward Email
Tyto principy jsou jasně viditelné v kódové základně Forward Email. Náš soubor package.json odhaluje promyšlený výběr závislostí, z nichž každá byla vybrána tak, aby odpovídala našim základním hodnotám:
- Bezpečnostně zaměřené balíčky jako
mailauthpro autentizaci e-mailů - Vývojářsky přívětivé nástroje jako
preview-emailpro snadnější ladění - Modulární komponenty jako různé utility
p-*od Sindre Sorhuse
Díky důslednému dodržování těchto principů v průběhu času jsme vybudovali službu, které vývojáři mohou důvěřovat se svou e-mailovou infrastrukturou – bezpečnou, spolehlivou a v souladu s hodnotami open source komunity.
Ochrana soukromí již v návrhu
Ochrana soukromí není pro Forward Email dodatečná myšlenka nebo marketingová funkce – je to základní princip návrhu, který ovlivňuje každý aspekt naší služby a kódu:
- Šifrování bez přístupu: Implementovali jsme systémy, které nám technicky znemožňují číst uživatelské e-maily.
- Minimální sběr dat: Sbíráme pouze data nezbytná pro poskytování naší služby, nic navíc.
- Transparentní zásady: Naše zásady ochrany soukromí jsou napsány jasným, srozumitelným jazykem bez právnického žargonu.
- Ověření open source: Naše open source kódová základna umožňuje bezpečnostním výzkumníkům ověřit naše tvrzení o ochraně soukromí.
Tento závazek se vztahuje i na naše open source balíčky, které jsou navrženy s bezpečnostními a soukromí podporujícími nejlepšími praktikami již od základu.
Udržitelný open source
Věříme, že open source software potřebuje udržitelné modely, aby mohl dlouhodobě prosperovat. Náš přístup zahrnuje:
- Komerční podpora: Nabízíme prémiovou podporu a služby kolem našich open source nástrojů.
- Vyvážené licencování: Používáme licence, které chrání jak svobody uživatelů, tak udržitelnost projektu.
- Zapojení komunity: Aktivně spolupracujeme s přispěvateli, abychom vybudovali podpůrnou komunitu.
- Transparentní plány vývoje: Sdílíme naše plány vývoje, aby uživatelé mohli plánovat dopředu.
Zaměřením na udržitelnost zajišťujeme, že naše open source příspěvky mohou nadále růst a zlepšovat se v průběhu času, místo aby upadly v zapomnění.
Čísla nelžou: Naše ohromující statistiky stažení npm
Když mluvíme o dopadu open source softwaru, statistiky stažení poskytují hmatatelnou míru adopce a důvěry. Mnoho balíčků, které pomáháme udržovat, dosáhlo rozsahu, kterého jen málo open source projektů kdy dosáhne, s celkovým počtem stažení v miliardách.
Important
I když jsme hrdí na to, že pomáháme udržovat několik vysoce stahovaných balíčků v ekosystému JavaScriptu, chceme uznat, že mnoho z těchto balíčků původně vytvořili jiní talentovaní vývojáři. Balíčky jako superagent a supertest původně vytvořil TJ Holowaychuk, jehož plodné příspěvky do open source byly zásadní pro formování ekosystému Node.js.
Přehled našeho dopadu
Za pouhé dvouměsíční období od února do března 2025 zaznamenaly nejvýznamnější balíčky, na kterých se podílíme a které pomáháme udržovat, ohromující počet stažení:
- superagent: 84 575 829 stažení[6] (původně vytvořil TJ Holowaychuk)
- supertest: 76 432 591 stažení[7] (původně vytvořil TJ Holowaychuk)
- koa: 28 539 295 stažení[8] (původně vytvořil TJ Holowaychuk)
- @koa/router: 11 007 327 stažení[9]
- koa-router: 3 498 918 stažení[10]
- url-regex: 2 819 520 stažení[11]
- preview-email: 2 500 000 stažení[12]
- cabin: 1 800 000 stažení[13]
- @breejs/later: 1 709 938 stažení[14]
- email-templates: 1 128 139 stažení[15]
- get-paths: 1 124 686 stažení[16]
- url-regex-safe: 1 200 000 stažení[17]
- dotenv-parse-variables: 894 666 stažení[18]
- @koa/multer: 839 585 stažení[19]
- spamscanner: 145 000 stažení[20]
- bree: 24 270 stažení[21]
Note
Několik dalších balíčků, které pomáháme udržovat, ale nevytvořili jsme je, má ještě vyšší počet stažení, včetně form-data (738M+ stažení), toidentifier (309M+ stažení), stackframe (116M+ stažení) a error-stack-parser (113M+ stažení). Je pro nás ctí přispívat do těchto balíčků a zároveň respektovat práci jejich původních autorů.
Nejde jen o působivá čísla — představují skutečné vývojáře řešící skutečné problémy s kódem, který pomáháme udržovat. Každé stažení je příležitostí, kdy tyto balíčky pomohly někomu vytvořit něco smysluplného, od hobby projektů až po podnikové aplikace používané miliony.
Denní dopad v rozsahu
Denní vzory stahování odhalují konzistentní, vysoký objem používání, s vrcholy dosahujícími milionů stažení za den[22]. Tato konzistence svědčí o stabilitě a spolehlivosti těchto balíčků — vývojáři je nejen zkouší; integrují je do svých hlavních pracovních postupů a spoléhají na ně den co den.
Týdenní vzory stahování ukazují ještě působivější čísla, která se stabilně pohybují kolem desítek milionů stažení týdně[23]. To představuje obrovskou stopu v ekosystému JavaScriptu, přičemž tyto balíčky běží v produkčních prostředích po celém světě.
Za hranicí čistých čísel
I když jsou statistiky stažení samy o sobě působivé, vyprávějí hlubší příběh o důvěře, kterou komunita těmto balíčkům věnuje. Údržba balíčků v takovém rozsahu vyžaduje neochvějný závazek k:
- Zpětné kompatibilitě: Změny musí být pečlivě zváženy, aby nedošlo k narušení stávajících implementací.
- Bezpečnosti: S miliony aplikací závislých na těchto balíčcích by bezpečnostní zranitelnosti mohly mít dalekosáhlé důsledky.
- Výkonu: V takovém rozsahu mohou i drobná zlepšení výkonu přinést významné kumulativní přínosy.
- Dokumentaci: Jasná, komplexní dokumentace je nezbytná pro balíčky používané vývojáři všech úrovní zkušeností.
Konzistentní růst počtu stažení v průběhu času odráží úspěch v plnění těchto závazků a budování důvěry s vývojářskou komunitou prostřednictvím spolehlivých, dobře udržovaných balíčků.
Podpora ekosystému: Naše sponzorství open source projektů
Tip
Udržitelnost open source není jen o přispívání kódu — je to také o podpoře vývojářů, kteří udržují kritickou infrastrukturu.
Kromě našich přímých příspěvků do JavaScriptového ekosystému jsme hrdí na to, že sponzorujeme významné přispěvatele do Node.js, jejichž práce tvoří základ mnoha moderních aplikací. Naše sponzorství zahrnují:
Andris Reinman: Průkopník e-mailové infrastruktury
Andris Reinman je tvůrcem Nodemailer, nejpopulárnější knihovny pro odesílání e-mailů v Node.js s více než 14 miliony týdenních stažení[24]. Jeho práce zahrnuje i další klíčové komponenty e-mailové infrastruktury jako SMTP Server, Mailparser a WildDuck.
Naše sponzorství pomáhá zajistit pokračující údržbu a vývoj těchto nezbytných nástrojů, které pohánějí e-mailovou komunikaci pro nespočet Node.js aplikací, včetně naší vlastní služby Forward Email.
Sindre Sorhus: Mistr utilitárních balíčků
Sindre Sorhus je jedním z nejplodnějších přispěvatelů do open source v JavaScriptovém ekosystému, s více než 1 000 balíčky na npm na svém kontě. Jeho utility jako p-map, p-retry a is-stream jsou základními stavebními kameny používanými v celém Node.js ekosystému.
Sponzorováním Sindrovy práce pomáháme udržet vývoj těchto klíčových utilit, které činí vývoj v JavaScriptu efektivnějším a spolehlivějším.
Tato sponzorství odrážejí náš závazek k širšímu open source ekosystému. Uvědomujeme si, že náš vlastní úspěch je postaven na základech položených těmito a dalšími přispěvateli, a jsme odhodláni zajistit udržitelnost celého ekosystému.
Odhalování bezpečnostních zranitelností v JavaScriptovém ekosystému
Náš závazek k open source přesahuje vývoj funkcí a zahrnuje identifikaci a řešení bezpečnostních zranitelností, které by mohly ovlivnit miliony vývojářů. Několik našich nejvýznamnějších příspěvků do JavaScriptového ekosystému bylo v oblasti bezpečnosti.
Záchrana Koa-Routeru
V únoru 2019 Nick identifikoval kritický problém s údržbou populárního balíčku koa-router. Jak ohlásil na Hacker News, balíček byl opuštěn svým původním správcem, což vedlo k neřešeným bezpečnostním zranitelnostem a komunitě bez aktualizací.
Warning
Opuštěné balíčky s bezpečnostními zranitelnostmi představují významná rizika pro celý ekosystém, zvláště když jsou stahovány miliony krát týdně.
Na reakci Nick vytvořil @koa/router a pomohl komunitě situaci oznámit. Od té doby tento kritický balíček udržuje, aby uživatelé Koa měli bezpečné a dobře udržované řešení směrování.
Řešení zranitelností ReDoS
V roce 2020 Nick identifikoval a vyřešil kritickou zranitelnost Regular Expression Denial of Service (ReDoS) v široce používaném balíčku url-regex. Tato zranitelnost (SNYK-JS-URLREGEX-569472) mohla umožnit útočníkům způsobit odmítnutí služby zadáním speciálně vytvořeného vstupu, který způsobil katastrofální zpětné sledování v regulárním výrazu.
Místo pouhého záplatu stávajícího balíčku Nick vytvořil url-regex-safe, zcela přepsanou implementaci, která řeší zranitelnost a zároveň zachovává kompatibilitu s původním API. Také publikoval komplexní blogový příspěvek, který vysvětluje zranitelnost a jak ji zmírnit.
Tato práce ukazuje náš přístup k bezpečnosti: nejen řešení problémů, ale také vzdělávání komunity a poskytování robustních alternativ, které zabraňují podobným problémům v budoucnu.
Prosazování bezpečnosti Node.js a Chromia
Nick byl také aktivní v prosazování zlepšení bezpečnosti v širším ekosystému. V srpnu 2020 identifikoval významný bezpečnostní problém v Node.js související s jeho zpracováním HTTP hlaviček, který byl popsán v The Register.
Tento problém, který vycházel z opravy v Chromiu, mohl potenciálně umožnit útočníkům obejít bezpečnostní opatření. Nickovo prosazování pomohlo zajistit, že byl problém rychle vyřešen, čímž ochránil miliony aplikací Node.js před možným zneužitím.
Zajištění infrastruktury npm
Později téhož měsíce Nick identifikoval další kritický bezpečnostní problém, tentokrát v e-mailové infrastruktuře npm. Jak bylo uvedeno v The Register, npm správně neimplementovalo autentizační protokoly DMARC, SPF a DKIM, což mohlo útočníkům umožnit odesílat phishingové e-maily, které vypadaly, že pocházejí od npm.
Nickova zpráva vedla ke zlepšení bezpečnostního postavení e-mailů npm, čímž ochránila miliony vývojářů, kteří spoléhají na npm pro správu balíčků, před možnými phishingovými útoky.
Naše příspěvky do ekosystému Forward Email
Forward Email je postaven na několika klíčových open source projektech, včetně Nodemailer, WildDuck a mailauth. Náš tým významně přispěl k těmto projektům, pomáhajíc identifikovat a opravit hluboké problémy, které ovlivňují doručování a bezpečnost e-mailů.
Vylepšení základní funkčnosti Nodemaileru
Nodemailer je páteří odesílání e-mailů v Node.js a naše příspěvky pomohly učinit jej robustnějším:
- Vylepšení SMTP serveru: Opravili jsme chyby v parsování, problémy se zpracováním streamů a konfigurací TLS v komponentě SMTP serveru[25][26].
- Vylepšení mail parseru: Řešili jsme chyby dekódování znakových sekvencí a problémy s parserem adres, které mohly způsobit selhání zpracování e-mailů[27][28].
Tyto příspěvky zajišťují, že Nodemailer zůstává spolehlivým základem pro zpracování e-mailů v aplikacích Node.js, včetně Forward Email.
Pokrok v autentizaci e-mailů s Mailauth
Mailauth poskytuje klíčovou funkčnost autentizace e-mailů a naše příspěvky výrazně zlepšily jeho schopnosti:
- Vylepšení ověřování DKIM: Objevili jsme a nahlásili jsme, že X/Twitter měl problémy s DNS cache, které způsobovaly selhání DKIM pro jejich odchozí zprávy, a nahlásili jsme to na Hacker One[29].
- Vylepšení DMARC a ARC: Opravili jsme problémy s ověřováním DMARC a ARC, které mohly vést k nesprávným výsledkům autentizace[30][31].
- Optimalizace výkonu: Přispěli jsme optimalizacemi, které zlepšují výkon procesů autentizace e-mailů[32][33][34][35].
Tato vylepšení pomáhají zajistit, že autentizace e-mailů je přesná a spolehlivá, čímž chrání uživatele před phishingem a spoofingem.
Klíčová vylepšení Upptime
Naše příspěvky do Upptime zahrnují:
- Monitorování SSL certifikátů: Přidali jsme funkci pro sledování expirace SSL certifikátů, čímž se zabránilo neočekávaným výpadkům kvůli expirovaným certifikátům[36].
- Podpora více SMS čísel: Implementovali jsme podporu pro upozornění více členů týmu přes SMS při výskytu incidentů, což zlepšuje reakční časy[37].
- Opravy kontroly IPv6: Opravili jsme problémy s kontrolou konektivity IPv6, čímž jsme zajistili přesnější monitorování v moderních síťových prostředích[38].
- Podpora tmavého/světlého režimu: Přidali jsme podporu témat pro zlepšení uživatelského zážitku na stránkách stavu[39].
- Lepší podpora TCP-Ping: Vylepšili jsme funkčnost TCP ping pro spolehlivější testování připojení[40]. Tyto vylepšení nejenže zlepšují monitorování stavu Forward Email, ale jsou k dispozici celé komunitě uživatelů Upptime, což demonstruje náš závazek ke zlepšování nástrojů, na kterých závisíme.
Lepidlo, které vše drží pohromadě: Vlastní kód v rozsahu
I když jsou naše npm balíčky a příspěvky do existujících projektů významné, právě vlastní kód, který tyto komponenty integruje, skutečně ukazuje naše technické znalosti. Kódová základna Forward Email představuje desetiletí vývojové práce, sahající až do roku 2017, kdy projekt začal jako free-email-forwarding, než byl sloučen do monorepa.
Obrovské vývojové úsilí
Rozsah tohoto vlastního integračního kódu je impozantní:
- Celkové příspěvky: Více než 3 217 commitů
- Velikost kódové základny: Více než 421 545 řádků kódu v souborech JavaScript, Pug, CSS a JSON[^33]
To představuje tisíce hodin vývojové práce, ladění a optimalizace výkonu. Je to „tajná přísada“, která proměňuje jednotlivé balíčky v soudržnou, spolehlivou službu, kterou denně používají tisíce zákazníků.
Integrace klíčových závislostí
Kódová základna Forward Email integruje řadu závislostí do bezproblémového celku:
- Zpracování e-mailů: Integruje Nodemailer pro odesílání, SMTP Server pro příjem a Mailparser pro parsování
- Autentizace: Používá Mailauth pro ověřování DKIM, SPF, DMARC a ARC
- DNS resoluce: Využívá Tangerine pro DNS-over-HTTPS s globálním cachováním
- MX připojení: Využívá mx-connect s integrací Tangerine pro spolehlivá připojení k mailovým serverům
- Plánování úloh: Používá Bree pro spolehlivé zpracování úloh na pozadí s worker threads
- Šablonování: Používá email-templates pro opětovné použití stylů z webu v komunikaci se zákazníky
- Ukládání e-mailů: Implementuje individuálně šifrované SQLite schránky pomocí better-sqlite3-multiple-ciphers s šifrováním ChaCha20-Poly1305 pro kvantově bezpečné soukromí, zajišťující úplnou izolaci mezi uživateli a že pouze uživatel má přístup ke své schránce
Každá z těchto integrací vyžaduje pečlivé zvážení okrajových případů, dopadů na výkon a bezpečnostních aspektů. Výsledkem je robustní systém, který spolehlivě zpracovává miliony e-mailových transakcí. Naše implementace SQLite také využívá msgpackr pro efektivní binární serializaci a WebSockets (pomocí ws) pro aktualizace stavu v reálném čase napříč naší infrastrukturou.
DNS infrastruktura s Tangerine a mx-connect
Klíčovou součástí infrastruktury Forward Email je náš systém DNS resoluce, postavený kolem dvou klíčových balíčků:
-
Tangerine: Naše Node.js implementace DNS-over-HTTPS poskytuje náhradu za standardní DNS resolver s vestavěnými opakováními, timeouty, chytrou rotací serverů a podporou cachování.
-
mx-connect: Tento balíček navazuje TCP spojení na MX servery, přijímá cílovou doménu nebo e-mailovou adresu, vyhledává vhodné MX servery a připojuje se k nim podle priority.
Tangerine jsme integrovali s mx-connect prostřednictvím pull requestu #4, čímž zajišťujeme DNS přes HTTP požadavky na aplikační vrstvě v celém Forward Email. To poskytuje globální cachování DNS v rozsahu s 1:1 konzistencí napříč jakýmkoli regionem, aplikací nebo procesem — což je klíčové pro spolehlivé doručování e-mailů v distribuovaném systému.
Dopad na podnikání: Od open source k řešením kritickým pro mise
Vyvrcholením našeho desetiletého vývoje v open source je to, že Forward Email slouží nejen jednotlivým vývojářům, ale také velkým podnikům a vzdělávacím institucím, které tvoří páteř samotného open source hnutí.
Případové studie v infrastruktuře e-mailů kritických pro mise
Naše závazek k spolehlivosti, ochraně soukromí a principům open source učinil z Forward Email důvěryhodnou volbu pro organizace s náročnými požadavky na e-mail:
-
Vzdělávací instituce: Jak je podrobně popsáno v naší případové studii přesměrování e-mailů absolventů, velké univerzity spoléhají na naši infrastrukturu, aby udržely celoživotní spojení se stovkami tisíc absolventů prostřednictvím spolehlivých služeb přesměrování e-mailů.
-
Podniková řešení Linuxu: Případová studie podnikových e-mailů Canonical Ubuntu ukazuje, jak náš open source přístup dokonale odpovídá potřebám poskytovatelů podnikových Linuxových řešení, nabízejíc jim transparentnost a kontrolu, kterou vyžadují.
-
Open Source nadace: Asi nejvíce potvrzující je naše partnerství s Linux Foundation, jak je zdokumentováno v případové studii podnikových e-mailů Linux Foundation, kde naše služba zajišťuje komunikaci pro samotnou organizaci, která spravuje vývoj Linuxu.
Existuje krásná symetrie v tom, jak naše open source balíčky, pečlivě udržované po mnoho let, umožnily vybudovat e-mailovou službu, která nyní podporuje právě ty komunity a organizace, které prosazují open source software. Tato cesta v plném kruhu – od přispívání jednotlivých balíčků až po napájení podnikové e-mailové infrastruktury pro lídry open source – představuje konečné potvrzení našeho přístupu k vývoji softwaru.
Deset let open source: Pohled do budoucna
Když se ohlížíme za deseti lety přispívání do open source a zároveň hledíme na dalších deset let, jsme plni vděčnosti za komunitu, která nás podporovala, a nadšení pro to, co přijde.
Naše cesta od přispěvatelů jednotlivých balíčků k správcům komplexní e-mailové infrastruktury používané velkými podniky a open source nadacemi byla pozoruhodná. Je to důkaz síly open source vývoje a dopadu, jaký může mít promyšlený, dobře udržovaný software na širší ekosystém.
V nadcházejících letech se zavazujeme:
- Pokračovat v údržbě a zlepšování našich stávajících balíčků, aby zůstaly spolehlivými nástroji pro vývojáře po celém světě.
- Rozšiřovat naše příspěvky do kritických infrastrukturních projektů, zejména v oblasti e-mailů a bezpečnosti.
- Zlepšovat schopnosti Forward Email při zachování našeho závazku k ochraně soukromí, bezpečnosti a transparentnosti.
- Podporovat další generaci open source přispěvatelů prostřednictvím mentorství, sponzorství a zapojení komunity.
Věříme, že budoucnost vývoje softwaru je otevřená, spolupracující a postavená na základech důvěry. Pokračováním v přispívání vysoce kvalitních balíčků zaměřených na bezpečnost do JavaScriptového ekosystému doufáme, že sehráváme malou roli při budování této budoucnosti.
Děkujeme všem, kteří používali naše balíčky, přispívali do našich projektů, hlásili problémy nebo jednoduše šířili povědomí o naší práci. Vaše podpora umožnila tento desetiletý dopad a těšíme se, co společně dokážeme v dalších deseti letech.
statistiky stažení npm pro cabin, duben 2025 ↩︎
statistiky stažení npm pro bson-objectid, únor-březen 2025 ↩︎
statistiky stažení npm pro url-regex-safe, duben 2025 ↩︎
počet hvězd na GitHubu pro forwardemail/forwardemail.net k dubnu 2025 ↩︎
statistiky stažení npm pro preview-email, duben 2025 ↩︎
statistiky stažení npm pro superagent, únor-březen 2025 ↩︎
statistiky stažení npm pro supertest, únor-březen 2025 ↩︎
statistiky stažení npm pro koa, únor-březen 2025 ↩︎
statistiky stažení npm pro @koa/router, únor-březen 2025 ↩︎
statistiky stažení npm pro koa-router, únor-březen 2025 ↩︎
statistiky stažení npm pro url-regex, únor-březen 2025 ↩︎
statistiky stažení npm pro preview-email, únor-březen 2025 ↩︎
statistiky stažení npm pro cabin, únor-březen 2025 ↩︎
statistiky stažení npm pro @breejs/later, únor-březen 2025 ↩︎
statistiky stažení npm pro email-templates, únor-březen 2025 ↩︎
statistiky stažení npm pro get-paths, únor-březen 2025 ↩︎
statistiky stažení npm pro url-regex-safe, únor-březen 2025 ↩︎
statistiky stažení npm pro dotenv-parse-variables, únor-březen 2025 ↩︎
statistiky stažení npm pro @koa/multer, únor-březen 2025 ↩︎
statistiky stažení npm pro spamscanner, únor-březen 2025 ↩︎
statistiky stažení npm pro bree, únor-březen 2025 ↩︎
denní vzory stahování ze statistik npm, duben 2025 ↩︎
týdenní vzory stahování ze statistik npm, duben 2025 ↩︎
statistiky stažení npm pro nodemailer, duben 2025 ↩︎
https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min ↩︎
Na základě GitHub issues v repozitáři Upptime ↩︎
Na základě GitHub issues v repozitáři Upptime ↩︎
Na základě GitHub issues v repozitáři Upptime ↩︎
Na základě GitHub pull requestů do Upptime ↩︎
Na základě GitHub pull requestů do Upptime ↩︎