Dekáda dopadů: Jak naše balíčky npm dosáhly 1 miliardy stažení a tvarovaného JavaScriptu

V JavaScript a Node.js Ve světě jsou některé balíčky nezbytné – stahují se milionykrát denně a pohání 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 balíčky npm, které se staly klíčovými součástmi ekosystému JavaScriptu.

Průkopníci, kteří nám důvěřují: Isaac Z. Schlueter a přeposlání e-mailu

Jsme na to hrdí Isaac Z. Schlueter (GitHub: isaacs) jako uživatel. Izák vytvořil npm a pomáhal stavět Node.js. Jeho důvěra ve Forward Email ukazuje naše zaměření 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ěl potenciál Node.js, se kterým pracoval Ryan Dahl, který platformu vytvořil. Jak řekl Isaac v an rozhovor pro časopis Increment: "Uprostřed této velmi malé komunity hromady lidí, kteří se snaží přijít na to, jak vytvořit JS na straně serveru, přišel Ryan Dahl s Node, což byl prostě velmi jasně správný přístup. Hodil jsem do toho své žetony a zhruba v polovině roku 2009 jsem se do toho hodně zapojil."

[!POZNÁMKA] Pro zájemce o historii Node.js jsou k dispozici vynikající dokumenty, které zachycují jeho vývoj, včetně Příběh Node.js a 10 věcí, kterých na Node.js lituji - Ryan Dahl. Ryana Dahla osobní webové stránky obsahuje také cenné poznatky o jeho práci.

Od tvorby npm po vedení Node.js

Isaac vytvořil npm v září 2009, přičemž první použitelná verze byla vydána na začátku roku 2010. Tento správce balíčků naplnil klíčovou potřebu v Node.js a umožnil vývojářům snadno sdílet a znovu používat kód. Podle Wikipedická stránka Node.js, "V lednu 2010 byl představen správce balíčků pro prostředí Node.js s názvem npm. Správce balíčků umožňuje programátorům publikovat a sdílet balíčky Node.js spolu s doprovodným zdrojovým kódem a je navržen tak, aby zjednodušil instalaci, aktualizaci a odinstalaci balíčků."

Když Ryan Dahl v lednu 2012 odešel z Node.js, Isaac převzal vedení projektu. Jak je uvedeno na jeho shrnutí"Vedl vývoj několika základních rozhraní API Node.js, včetně modulového systému CommonJS, souborových systémů API a streamů" a "Po dobu 2 let působil jako BDFL (Benevolent Dictator For Life) projektu a zajistil stále se zvyšující kvalitu a spolehlivý proces sestavování Node.js verze v0.6 až v0.10."

Isaac provedl Node.js klíčovým obdobím růstu a stanovil standardy, které platformu formují dodnes. Později v roce 2014 založil společnost npm, Inc. na podporu registru npm, který předtím provozoval sám.

Děkujeme Isaacovi za jeho obrovské příspěvky k JavaScriptu 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

Srdcem našeho úspěchu open source je Nick Baugh, zakladatel a vlastník Forward Email. Jeho práce v JavaScriptu trvá téměř 20 let a ovlivnila způsob, jakým nespočet vývojářů vytváří aplikace. Jeho cesta open source ukazuje jak technické dovednosti, tak vedení komunity.

Expresní technický výbor a hlavní příspěvky

Nickova odbornost webového rámce mu vynesla místo na webu Expresní technický výbor, kde pomáhal s jedním z nejpoužívanějších frameworků Node.js. Nick je nyní uveden jako neaktivní člen na Expresní komunitní stránka.

[!DŮLEŽITÉ] Express byl původně vytvořen TJ Holowaychukem, plodným open source přispěvatelem, který formoval velkou část ekosystému Node.js. Jsme vděční za TJovu základní práci a respektujeme jeho rozhodnutí dát si pauzu z jeho rozsáhlých open source příspěvků.

Jako člen Expresní technický výborNick ukázal velkou pozornost k detailům v otázkách, jako je vyjasňování req.originalUrl dokumentace a oprava problémů se zpracováním vícedílných formulářů.

Rámcové příspěvky Koa

Nickova práce s Koa rámec—moderní, lehčí alternativa k Express, kterou rovněž vytvořil TJ Holowaychuk — dále ukazuje jeho oddanost lepším nástrojům pro vývoj webu. Jeho příspěvky Koa zahrnují problémy i kód prostřednictvím požadavků na stažení, řešení chyb, správu typů obsahu a vylepšení dokumentace.

Jeho práce napříč Express i Koa mu poskytuje jedinečný pohled na vývoj webu Node.js a pomáhá našemu týmu vytvářet balíčky, které dobře fungují s více rámcovými ekosystémy.

Od individuálního přispěvatele po vedoucího organizace

To, co začalo jako pomoc existujícím projektům, přerostlo ve vytváření a údržbu celých ekosystémů balíčku. Nick založil několik organizací GitHub – včetně Chata, Skener spamu, Přeposlat e-mail, Chlapeca Bree—každý řeší specifické potřeby v komunitě JavaScript.

Tento posun od přispěvatele k vedoucímu ukazuje Nickovu vizi dobře navrženého softwaru, který řeší skutečné problémy. Uspořádáním souvisejících balíčků pod zaměřenými organizacemi GitHub vybudoval ekosystémy nástrojů, které spolupracují a přitom zůstávají modulární a flexibilní pro širší komunitu vývojářů.

Naše organizace GitHub: Ekosystémy inovací

Svou práci s otevřeným zdrojovým kódem organizujeme kolem zaměřených organizací GitHub, z nichž každá řeší specifické potřeby v JavaScriptu. Tato struktura vytváří soudržné rodiny balíčků, které spolu dobře spolupracují a přitom zůstávají modulární.

Kabina: Strukturovaná těžba dřeva pro moderní aplikace

The Organizace kabiny je náš pohled na jednoduché a výkonné protokolování aplikací. Hlavní cabin balíček má téměř 900 hvězdiček GitHub a více než 100 000 stažení týdně[^1]. Cabin poskytuje strukturované protokolování, které funguje s oblíbenými službami, jako jsou Sentry, LogDNA a Papertrail.

Co dělá Cabin výjimečným, je jeho promyšlený systém API a pluginů. Podpůrné balíčky jako axe pro Express middleware a parse-request pro analýzu požadavků HTTP ukazují naši oddanost kompletním řešením spíše než izolovaným nástrojům.

The bson-objectid Zvláštní zmínku si zaslouží balíček s více než 1,7 miliony stažení za pouhé dva měsíce[^2]. Tato lehká implementace MongoDB ObjectID se stala cílem pro vývojáře, kteří potřebují ID bez úplných závislostí MongoDB.

Skener spamu: Boj proti zneužívání e-mailů

The Organizace Spam Scanneru ukazuje náš závazek řešit skutečné problémy. Hlavní spamscanner balíček poskytuje pokročilou detekci e-mailového spamu, ale je to url-regex-safe balíček, který zaznamenal úžasné přijetí.

S více než 1,2 milionu 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: nalezení společného problému (v tomto případě RedoS zranitelnosti při ověřování URL), vytvoření solidního řešení a jeho pečlivá údržba.

Bree: Moderní plánování práce s pracovními vlákny

The Organizace Bree je naší odpovědí na běžnou výzvu Node.js: spolehlivé plánování úloh. Hlavní bree balíček s více než 3 100 hvězdičkami GitHub poskytuje moderní plánovač úloh využívající pracovní vlákna Node.js pro lepší výkon a spolehlivost.

[!POZNÁMKA] Bree vznikla poté, co jsme pomáhali udržovat Agenda, použití získaných poznatků 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í práce.

Čím se Bree liší od jiných plánovačů, jako je Agenda:

  • Žádné externí závislosti: Na rozdíl od Agendy, která potřebuje MongoDB, Bree nevyžaduje Redis nebo MongoDB ke správě stavu úlohy.
  • Pracovní vlákna: Bree používá pracovní vlákna Node.js pro procesy v izolovaném prostoru, což poskytuje lepší izolaci a výkon.
  • Jednoduché API: Bree nabízí podrobné ovládání s jednoduchostí, což usnadňuje implementaci komplexních plánovacích potřeb.
  • Vestavěná podpora: Ve výchozím nastavení jsou zahrnuty věci, jako je elegantní opětovné načítání, úlohy cronu, data a časy vhodné pro lidi.

Bree je klíčovou součástí forwardemail.net, zpracování kritických úloh na pozadí, jako je zpracování e-mailů, čištění a plánovaná údržba. Používání Bree ve Forward Emailu ukazuje náš závazek používat naše vlastní nástroje ve výrobě a zajistit, aby splňovaly vysoké standardy spolehlivosti.

Také používáme a oceňujeme další skvělé balíčky pracovních vláken, jako je bazén a HTTP klienti jako jedenáct. Piscina, stejně jako Bree, používá pracovní vlákna Node.js pro efektivní zpracování úloh. děkujeme Matthew Hill, který spravuje undici i piscina, za jeho hlavní příspěvky do Node.js. Matteo slouží v technickém řídícím výboru Node.js a výrazně zlepšil možnosti klienta HTTP v Node.js.

Forward Email: Open Source Email Infrastructure

Náš nejambicióznější projekt je Přeposlat e-mail, e-mailová služba s otevřeným zdrojovým kódem, která poskytuje přesměrování e-mailů, úložiště a služby API. Hlavní úložiště má více než 1 100 hvězdiček GitHub[^4], což ukazuje, že komunita oceňuje tuto alternativu k proprietárním e-mailovým službám.

The preview-email balíček od této organizace s více než 2,5 miliony stažení za dva měsíce[^5] se stal základním nástrojem pro vývojáře pracující s e-mailovými šablonami. Tím, že poskytuje jednoduchý způsob náhledu e-mailů během vývoje, řeší společný problém při vytváření e-mailových aplikací.

Kluk: Základní nástroje a nástroje Koa

The Lad organizace poskytuje sbírku základních utilit a nástrojů primárně zaměřených na vylepšení ekosystému rámce Koa. Tyto balíčky řeší běžné problémy při vývoji webu a jsou navrženy tak, aby bezproblémově spolupracovaly a přitom zůstaly nezávisle užitečné.

koa-better-error-handler: Vylepšené zpracování chyb pro Koa

koa-better-error-handler nabízí lepší řešení pro řešení chyb pro aplikace Koa. Tento balíček má více než 50 hvězd GitHub ctx.throw vytvářet uživatelsky přívětivé chybové zprávy a zároveň řešit několik omezení vestavěného obslužného programu chyb Koa:

  • Zjišťuje a správně zpracovává chyby DNS Node.js, chyby Mongoose a chyby Redis
  • Použití Výložník pro vytváření konzistentních, dobře formátovaných chybových odpovědí
  • Zachovává záhlaví (na rozdíl od vestavěného ovladače Koa)
  • Udržuje vhodné stavové kódy spíše než výchozí 500
  • Podporuje flash zprávy a zachování relací
  • Poskytuje seznamy chyb HTML pro chyby ověření
  • Podporuje více typů odpovědí (HTML, JSON a prostý text)

Tento balíček je zvláště cenný, když se používá současně koa-404-handler pro komplexní správu chyb v aplikacích Koa.

pas: Autentizace pro Lad

@ladjs/passport rozšiřuje oblíbený autentizační middleware Passport.js o specifická vylepšení pro moderní webové aplikace. Tento balíček již po vybalení podporuje několik strategií ověřování:

  • Místní ověřování pomocí e-mailu
  • Přihlaste se pomocí Apple
  • Ověření GitHub
  • Ověření Google
  • Ověření jednorázovým heslem (OTP).

Balíček je vysoce přizpůsobitelný a 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 hladce integroval s Mongoose pro správu uživatelů, takže je ideálním řešením pro aplikace založené na Koa, které vyžadují robustní ověřování.

elegantní: Elegantní vypínání aplikací

@ladjs/graceful řeší kritický problém, kterým je elegantní vypínání aplikací Node.js. Tento balíček s více než 70 hvězdičkami GitHub zajišťuje, že vaše aplikace může být ukončena čistě bez ztráty dat nebo zablokování připojení. Mezi klíčové vlastnosti patří:

  • Podpora pro elegantní uzavření HTTP serverů (Express/Koa/Fastify)
  • Čisté vypnutí připojení k databázi (MongoDB/Mongoose)
  • Řádné uzavření klientů Redis
  • Manipulace s plánovači úloh Bree
  • Podpora vlastních ovladačů vypnutí
  • Konfigurovatelné nastavení časového limitu
  • Integrace s logovacími systémy

Tento balíček je nezbytný pro produkční aplikace, kde by neočekávané vypnutí mohlo vést ke ztrátě nebo poškození dat. Zavedením správných postupů odstavení, @ladjs/graceful pomáhá zajistit spolehlivost a stabilitu vaší aplikace.

Uptime: Open Source Uptime Monitoring

The Organizace provozuschopnosti představuje náš závazek k transparentnímu monitorování open source. Hlavní upptime úložiště má více než 13 000 hvězd GitHub, což z něj dělá jeden z nejoblíbenějších projektů, do kterých přispíváme. Upptime poskytuje monitor dostupnosti a stavovou stránku s podporou GitHub, která funguje zcela bez serveru.

Pro naši vlastní stavovou stránku na adrese používáme Upptime https://status.forwardemail.net se zdrojovým kódem dostupným na https://github.com/forwardemail/status.forwardemail.net.

Co dělá Upptime výjimečným, je jeho architektura:

  • 100% otevřený zdroj: Každá komponenta je plně open source a přizpůsobitelná.
  • Používá GitHub: Využívá akce, problémy a stránky GitHubu pro řešení monitorování bez serveru.
  • Není vyžadován žádný server: Na rozdíl od tradičních monitorovacích nástrojů nevyžaduje Upptime, abyste spouštěli nebo udržovali server.
  • Stránka automatického stavu: Vygeneruje krásnou stavovou stránku, kterou lze hostovat na stránkách GitHub.
  • Výkonná upozornění: Integruje se s různými oznamovacími kanály včetně e-mailu, SMS a Slack.

Abychom zlepšili uživatelský dojem, provedli jsme integraci @octokit/core do kódové základny forwardemail.net k vykreslování aktualizací stavu a incidentů v reálném čase přímo na našich webových stránkách. Tato integrace poskytuje našim uživatelům jasnou transparentnost v případě jakýchkoli problémů v celém našem zásobníku (Web, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree atd.) s okamžitými upozorněními na toasty, změnami ikon odznaků, barvami varování a dalšími.

Knihovna @octokit/core nám umožňuje získávat data v reálném čase z našeho úložiště GitHub Upptime, zpracovávat je a zobrazovat uživatelsky přívětivým způsobem. Když dojde k výpadku jakékoli služby nebo snížení výkonu, uživatelé jsou okamžitě informováni prostřednictvím vizuálních indikátorů, 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 přijaly stovky organizací, které hledají transparentní a spolehlivý způsob monitorování svých služeb a sdělování stavu uživatelům. Úspěch projektu ukazuje sílu budování nástrojů, které využívají stávají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 dopředných e-mailů

Zatímco naše balíčky s otevřeným zdrojovým kódem používají vývojáři po celém světě, tvoří také základ naší vlastní služby Forward Email. Tato dvojí role – jakožto tvůrců i uživatelů těchto nástrojů – nám poskytuje jedinečný pohled na jejich aplikaci v reálném světě a je hnacím motorem neustálého zlepšování.

Od balíčků po výrobu

Cesta od jednotlivých balení k soudržnému výrobnímu systému zahrnuje pečlivou integraci a rozšíření. Forward Email, tento proces zahrnuje:

  • Vlastní rozšíření: Vytváření e-mailových specifických rozšíření našich balíčků s otevřeným zdrojovým kódem, které odpovídají našim jedinečným požadavkům.
  • Integrační vzory: Vývoj vzorů pro interakci těchto balíčků v produkčním prostředí.
  • Optimalizace výkonu: Identifikace a řešení překážek výkonu, které se objevují pouze ve velkém měřítku.
  • Bezpečnostní zpevnění: 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ů, jehož výsledkem je robustní a bezpečná e-mailová služba, která využívá to nejlepší z našich příspěvků s otevřeným zdrojovým kódem.

Smyčka zpětné vazby

Snad nejcennějším aspektem používání našich vlastních balíčků ve výrobě je smyčka zpětné vazby, kterou vytváří. Když narazíme na omezení nebo okrajové případy v Forward Email, neopravujeme je pouze lokálně – vylepšujeme základní balíčky, což přináší užitek jak naší službě, tak širší komunitě.

Tento přístup vedl k řadě vylepšení:

  • Bree's Graceful Shutdown: Požadavek Forward Email na nasazení s nulovými prostoji vedl k lepším možnostem elegantního vypínání v Bree.
  • Rozpoznávání vzoru skeneru spamu: Vzorce spamu v reálném světě, s nimiž se setkáváme v přeposílání e-mailů, informovaly detekční algoritmy Spam Scanneru.
  • Optimalizace výkonu kabiny: Velkoobjemové protokolování v produkci odhalilo možnosti optimalizace v Cabin, které jsou přínosem pro všechny uživatele.

Udržováním tohoto ctnostného cyklu mezi naší prací s otevřeným zdrojovým kódem a produkčními službami zajišťujeme, že naše balíčky zůstanou praktickými, bitvami vyzkoušenými řešeními spíše než teoretickými implementacemi.

Základní principy Forward Email: Základ pro dokonalost

Forward Email je navržen podle souboru základních principů, kterými se řídí všechna naše rozhodnutí o vývoji. Tyto zásady jsou podrobně popsány na našem webu webové stránky, zajistí, že naše služba zůstane pro vývojáře přívětivá, bezpečná a zaměřená na soukromí uživatelů.

Vždy přívětivé pro vývojáře, zaměřené na bezpečnost a transparentní

Naší první a nejdůležitější zásadou je vytvářet software, který je přátelský pro vývojáře a zároveň zachovává nejvyšší standardy zabezpečení 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ší komunitě.

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 celou naši kódovou základnu vytvoříme jako open source, vyzýváme ke kontrole a spolupráci, čímž posílíme jak náš software, tak širší ekosystém.

Dodržování osvědčených zásad vývoje softwaru

Řídíme se několika zavedenými principy vývoje softwaru, které prokázaly svou hodnotu po desetiletí:

  • MVC: Oddělování problémů pomocí vzoru Model-View-Controller
  • Unixová filozofie: Vytváření modulárních komponent, které dělají jednu věc dobře
  • KISS: Udržujte to jednoduché a přímočaré
  • DRY: Neopakujte se, propagujte opětovné použití kódu
  • YAGNI: Nebudete to potřebovat, vyhnete se předčasné optimalizaci
  • Dvanáctý faktor: Dodržování osvědčených postupů pro vytváření moderních, škálovatelných aplikací
  • Occamova břitva: Výběr nejjednoduššího řešení, které splňuje požadavky
  • Interní testování: Rozsáhlé používání našich vlastních produktů

Tyto principy nejsou jen teoretické koncepty – jsou součástí našich každodenních vývojových postupů. Například naše dodržování filozofie Unixu je evidentní v tom, jak jsme strukturovali naše balíčky npm: malé, zaměřené moduly, které lze skládat dohromady a řešit složité problémy.

Cílení na Scrappy, Bootstrapped Developer

Zaměřujeme se konkrétně na odpadní, bootstrapped a ramen-výnosný vývojář. Toto zaměření utváří vše od našeho cenového modelu až po naše technická rozhodnutí. Rozumíme výzvám při vytváření produktů s omezenými zdroji, protože jsme tam byli sami.

Tento princip je zvláště důležitý v tom, jak přistupujeme k open source. Vytváříme a udržujeme balíčky, které řeší skutečné problémy pro vývojáře bez podnikových rozpočtů, čímž zpřístupňujeme výkonné nástroje všem bez ohledu na jejich zdroje.

Principy v praxi: The Forward Email Codebase

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á odpovídá našim základním hodnotám:

  • Balíčky zaměřené na bezpečnost jako mailauth pro ověření e-mailu
  • Vývojářské nástroje jako např preview-email pro snadnější ladění
  • Modulární komponenty jako různé p-* utility od Sindre Sorhus

Důsledným dodržováním těchto zásad v průběhu času jsme vytvořili službu, které mohou vývojáři důvěřovat se svou e-mailovou infrastrukturou – je bezpečná, spolehlivá a v souladu s hodnotami komunity s otevřeným zdrojovým kódem.

Privacy by Design

Ochrana osobních údajů není dodatečným nápadem nebo marketingovou funkcí pro přeposílání e-mailů – je to základní princip návrhu, který informuje o každém aspektu naší služby a kódu:

  • Šifrování s nulovým přístupem: Implementovali jsme systémy, které nám technicky znemožňují číst e-maily uživatelů.
  • Minimální sběr dat: Shromažďujeme pouze údaje nezbytné k poskytování našich služeb, nic víc.
  • Transparentní zásady: Naše zásady ochrany osobních údajů jsou napsány jasným a srozumitelným jazykem bez právního žargonu.
  • Ověření otevřeného zdroje: Naše kódová základna s otevřeným zdrojovým kódem umožňuje bezpečnostním výzkumníkům ověřit naše tvrzení o ochraně osobních údajů.

Tento závazek se vztahuje i na naše balíčky s otevřeným zdrojovým kódem, které jsou navrženy s osvědčenými postupy zabezpečení a ochrany soukromí zabudovanými od základů.

Udržitelný otevřený zdroj

Věříme, že software s otevřeným zdrojovým kódem potřebuje udržitelné modely, aby mohl dlouhodobě prosperovat. Náš přístup zahrnuje:

  • Komerční podpora: Nabídka prémiové podpory a služeb kolem našich nástrojů s otevřeným zdrojovým kódem.
  • Vyvážené licencování: Používání licencí, které chrání jak uživatelské svobody, tak udržitelnost projektu.
  • Zapojení komunity: Aktivní zapojení přispěvatelů k budování podpůrné komunity.
  • Transparentní cestovní mapy: Sdílení našich plánů vývoje, abychom uživatelům umožnili plánovat odpovídajícím způsobem.

Tím, že se zaměříme na udržitelnost, zajistíme, že naše příspěvky s otevřeným zdrojovým kódem mohou v průběhu času nadále růst a zlepšovat se, než aby upadly do zanedbání.

Čísla nelžou: Naše ohromující statistiky ke stažení npm

Když mluvíme o dopadu softwaru s otevřeným zdrojovým kódem, statistiky stahování poskytují hmatatelné měřítko přijetí a důvěry. Mnoho balíčků, které pomáháme udržovat, dosáhlo rozsahu, jakého kdy dosáhlo jen málo projektů s otevřeným zdrojovým kódem, s celkovým počtem stažení v miliardách.

Top npm Packages by Downloads

[!DŮLEŽITÉ] 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ů bylo původně vytvořeno jinými talentovanými vývojáři. Balíčky jako superagent a supertest původně vytvořil TJ Holowaychuk, jehož plodné příspěvky k open source byly zásadní pro utváření ekosystému Node.js.

Pohled na náš dopad z ptačí perspektivy

Pouze za dvouměsíční období od února do března 2025 nejlepší balíčky, do kterých přispíváme a které pomáhají udržovat zaznamenané ohromující počty stažení:

[!POZNÁMKA] 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 (+ 738 milionů stažení), toidentifier (více než 309 milionů stažení), stackframe (více než 116 milionů stažení) a error-stack-parser (více než 113 milionů stažení). Je nám ctí přispět do těchto balíčků a zároveň respektovat práci jejich původních autorů.

Nejsou to jen působivá čísla – představují skutečné vývojáře, kteří řeší skutečné problémy s kódem, který pomáháme udržovat. Každé stažení je příkladem, kdy tyto balíčky pomohly někomu vytvořit něco smysluplného, od amatérských projektů po podnikové aplikace používané miliony.

Package Categories Distribution

Denní dopad v měřítku

Vzorce každodenního stahování odhalují konzistentní, vysokoobjemové využití, přičemž vrcholy dosahují milionů stažení za den[^13]. Tato konzistence hovoří o stabilitě a spolehlivosti těchto balíčků – vývojáři je nejenom zkoušejí; integrují je do svých hlavních pracovních postupů a jsou na nich den co den závislí.

Týdenní vzory stahování vykazují ještě působivější čísla, trvale se pohybují kolem desítek milionů stažení za týden[^14]. 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ě.

Mimo hrubá čísla

I když jsou statistiky stahování působivé samy o sobě, vyprávějí hlubší příběh o důvěře, kterou komunita vkládá do těchto balíčků. Udržování balíčků v tomto rozsahu vyžaduje neochvějný závazek:

  • Zpětná kompatibilita: Změny je třeba pečlivě zvážit, aby nedošlo k porušení stávajících implementací.
  • Zabezpečení: S miliony aplikací závislých na těchto balíčcích mohou mít bezpečnostní zranitelnosti dalekosáhlé důsledky.
  • Výkon: V tomto měřítku mohou mít i drobná vylepšení výkonu významné souhrnné výhody.
  • Dokumentace: Jasná a komplexní dokumentace je nezbytná pro balíčky používané vývojáři všech úrovní zkušeností.

Trvalý růst počtu stažení v průběhu času odráží úspěch při plnění těchto závazků, budování důvěry s komunitou vývojářů prostřednictvím spolehlivých a dobře udržovaných balíčků.

Podpora ekosystému: Naše sponzorství s otevřeným zdrojem

[!TIP] Udržitelnost open source není jen o přispění kódu, ale také o podpoře vývojářů, kteří udržují kritickou infrastrukturu.

Kromě našich přímých příspěvků do ekosystému JavaScript jsme hrdí na to, že můžeme sponzorovat významné přispěvatele Node.js, jejichž práce tvoří základ mnoha moderních aplikací. Mezi naše sponzorské dary patří:

Andris Reinman: Průkopník e-mailové infrastruktury

Andris Reinman je tvůrcem Nodemailer, nejoblíbenější knihovna pro odesílání e-mailů pro Node.js s více než 14 miliony stažení týdně[^15]. Jeho práce se rozšiřuje na další důležité součásti e-mailové infrastruktury, jako je Server SMTP, Mailparsera Divoká kachna.

Naše sponzorství pomáhá zajistit nepřetržitou údržbu a vývoj těchto základních nástrojů, které podporují e-mailovou komunikaci pro nespočet aplikací Node.js, včetně naší vlastní služby Forward Email.

Sindre Sorhus: Utility Package Mastermind

Sindre Sorhus je jedním z nejplodnějších přispěvatelů open source v ekosystému JavaScriptu s více než 1 000 balíčky npm. Jeho pomůcky jako p-mapa, p-opakovata je-stream jsou základní stavební bloky používané v celém ekosystému Node.js.

Sponzorováním práce Sindre pomáháme udržovat vývoj těchto kritických nástrojů, díky nimž je vývoj JavaScriptu efektivnější a spolehlivější.

Tato sponzorství odrážejí náš závazek vůči širšímu open source ekosystému. Uvědomujeme si, že náš vlastní úspěch je postaven na základech, které položili tito a další přispěvatelé, a věnujeme se zajištění udržitelnosti celého ekosystému.

Odhalování bezpečnostních zranitelností v ekosystému JavaScriptu

Náš závazek k open source přesahuje vývoj funkcí a zahrnuje identifikaci a řešení bezpečnostních slabin, které by mohly mít dopad na miliony vývojářů. Několik našich nejvýznamnějších příspěvků do ekosystému JavaScriptu bylo v oblasti bezpečnosti.

Záchrana směrovače Koa

V únoru 2019 Nick identifikoval kritický problém s údržbou oblíbeného balíčku koa-router. Jako on Informoval o tom server Hacker News, balíček opustil jeho původní správce, takže bezpečnostní zranitelnost zůstala neřešená a komunita bez aktualizací.

[!VAROVÁNÍ] Opuštěné balíčky s chybami zabezpečení představují značná rizika pro celý ekosystém, zvláště když jsou stahovány milionykrát týdně.

V reakci na to Nick vytvořil @koa/router a pomohl upozornit komunitu na situaci. Od té doby tento kritický balíček udržuje a zajišť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 oslovil kritického Regular Expression Denial of Service (ReDoS) zranitelnost v široce používaných url-regex balík. Tato zranitelnost (SNYK-JS-URLREGEX-569472) by mohlo útočníkům umožnit způsobit odmítnutí služby poskytnutím speciálně vytvořeného vstupu, který způsobil katastrofální zpětné sledování regulárního výrazu.

Spíše než pouhé záplatování stávajícího balíčku Nick vytvořil url-regex-safe, kompletně přepsaná implementace, která řeší zranitelnost při zachování kompatibility s původním API. Vydal také a obsáhlý příspěvek na blogu vysvětlit 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é podobným problémům v budoucnu zabrání.

Obhajoba Node.js a Chromium Security

Nick byl také aktivní v prosazování bezpečnostních vylepšení 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 hlášen v Registr.

Tento problém, který pocházel z opravy v prohlížeči Chromium, by mohl útočníkům potenciálně umožnit obejít bezpečnostní opatření. Nickova obhajoba pomohla zajistit, že problém byl rychle vyřešen a ochránil miliony aplikací Node.js před potenciálním zneužitím.

Zabezpečení 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 je uvedeno v Registrnpm správně neimplementoval protokoly pro ověřování e-mailů DMARC, SPF a DKIM, což útočníkům potenciálně umožňovalo posílat phishingové e-maily, které vypadaly, že pocházejí z npm.

Nickova zpráva vedla ke zlepšení e-mailového zabezpečení npm, chránící miliony vývojářů, kteří spoléhají na npm pro správu balíčků, před potenciálními phishingovými útoky.

Naše příspěvky do ekosystému dopředných e-mailů

Forward Email je postaven na několika kritických open source projektech, včetně Nodemailer, WildDuck a mailauth. Náš tým významně přispěl k těmto projektům a pomohl identifikovat a opravit hluboké problémy, které ovlivňují doručování e-mailů a zabezpečení.

Vylepšení základní funkce Nodemaileru

Nodemailer je páteří odesílání e-mailů v Node.js a naše příspěvky přispěly k tomu, že je robustnější:

  • Vylepšení SMTP serveru: Opravili jsme chyby analýzy, problémy se zpracováním streamů a problémy s konfigurací TLS v komponentě serveru SMTP[^16][^17].
  • Vylepšení analyzátoru pošty: Vyřešili jsme chyby dekódování sekvence znaků a problémy s analyzátorem, které by mohly způsobit selhání zpracování e-mailu[^18][^19].

Tyto příspěvky zajišťují, že Nodemailer zůstane spolehlivým základem pro zpracování e-mailů v aplikacích Node.js, včetně Forward Email.

Pokročilé ověřování e-mailů pomocí Mailauth

Mailauth poskytuje kritickou funkci ověřování e-mailů a naše příspěvky výrazně zlepšily její možnosti:

  • Vylepšení ověřování DKIM: Zjistili jsme a nahlásili jsme, že X/Twitter měl problémy s mezipamětí DNS způsobující selhání DKIM u jejich odchozích zpráv, a nahlásili jsme to na Hacker One[^20].
  • Vylepšení DMARC a ARC: Opravili jsme problémy s ověřením DMARC a ARC, které mohly vést k nesprávným výsledkům ověření[^21][^22].
  • Optimalizace výkonu: Přispěli jsme k optimalizacím, které zlepšují výkon procesů ověřování e-mailů[^23][^24][^25][^26].

Tato vylepšení pomáhají zajistit, že ověřování e-mailů je přesné a spolehlivé a chrání uživatele před phishingovými a spoofingovými útoky.

Klíčová vylepšení doby provozuschopnosti

Mezi naše příspěvky do Upptime patří:

  • Monitorování SSL certifikátů: Přidali jsme funkci pro sledování vypršení platnosti certifikátu SSL, abychom zabránili neočekávanému výpadku kvůli vypršení platnosti certifikátů[^27].
  • Podpora více čísel SMS: Implementovali jsme podporu pro upozornění více členů týmu prostřednictvím SMS, když dojde k incidentům, čímž jsme zkrátili dobu odezvy[^28].
  • Opravy kontroly IPv6: Opravili jsme problémy s kontrolami připojení IPv6, což zajišťuje přesnější sledování v moderních síťových prostředích[^29].
  • Podpora tmavého/světlého režimu: Přidali jsme podporu motivu, abychom zlepšili uživatelský dojem ze stavových stránek[^31].
  • Lepší podpora TCP-Ping: Vylepšili jsme funkci TCP ping, abychom zajistili spolehlivější testování připojení[^32].

Tato vylepšení nejen prospívají monitorování stavu Forward Email, ale jsou dostupná celé komunitě uživatelů Uptime, což dokazuje náš závazek zlepšovat nástroje, na kterých jsme závislí.

Lepidlo, které to drží pohromadě: Vlastní kód v měřítku

Zatímco naše balíčky npm a příspěvky ke stávajícím projektům jsou významné, je to vlastní kód, který integruje tyto komponenty, co skutečně ukazuje naši technickou odbornost. Kódová základna Forward Email představuje desetiletí vývojového úsilí, které sahá až do roku 2017, kdy projekt začal jako bezplatné přeposílání e-mailů před sloučením do monorepa.

Masivní rozvojové úsilí

Rozsah tohoto vlastního integračního kódu je působivý:

  • Příspěvky celkem: Více než 3 217 závazků
  • 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í relací a optimalizací výkonu. Je to „tajná omáčka“, která přeměňuje jednotlivé balíčky v soudržnou a spolehlivou službu, kterou denně využívají tisíce zákazníků.

Integrace základních závislostí

Kódová základna Forward Email integruje četné závislosti do bezproblémového celku:

  • Zpracování e-mailu: Integruje Nodemailer pro odesílání, SMTP server pro příjem a Mailparser pro analýzu
  • Autentizace: Používá Mailauth pro ověření DKIM, SPF, DMARC a ARC
  • Rozlišení DNS: Využití Tangerine pro DNS-over-HTTPS s globálním ukládáním do mezipaměti
  • MX připojení: Využívá mx-connect s integrací Tangerine pro spolehlivé připojení k poštovnímu serveru
  • Plánování práce: Využívá Bree pro spolehlivé zpracování úloh na pozadí s pracovními vlákny
  • Šablony: Používá e-mailové šablony k opětovnému použití šablon stylů z webu v komunikaci se zákazníky
  • Úložiště e-mailů: Implementuje individuálně zašifrované poštovní schránky SQLite pomocí lepších sqlite3-multiple-ciphers se šifrováním ChaCha20-Poly1305 pro kvantově bezpečné soukromí, což zajišťuje úplnou izolaci mezi uživateli a to, že pouze uživatel má přístup ke své poštovní 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 problémů. Výsledkem je robustní systém, který spolehlivě zpracuje miliony e-mailových transakcí. Naše implementace SQLite také využívá msgpackr pro efektivní binární serializaci a WebSockets (přes ws) pro aktualizace stavu v reálném čase v naší infrastruktuře.

Infrastruktura DNS s Tangerine a mx-connect

Důležitou součástí infrastruktury Forward Email je náš systém pro rozlišení DNS, který je postaven na dvou klíčových balíčcích:

  • Mandarinka: Naše implementace Node.js DNS-over-HTTPS poskytuje náhradu za standardní DNS resolver s vestavěnými opakováními, časovými limity, inteligentní rotací serverů a podporou mezipaměti.

  • mx-connect: Tento balíček naváže připojení TCP k serverům MX, vezme cílovou doménu nebo e-mailovou adresu, vyřeší příslušné servery MX a připojí se k nim v pořadí podle priority.

Integrovali jsme Tangerine s mx-connect through vytáhnout požadavek #4zajišťující DNS na aplikační vrstvě přes HTTP požadavky v celém Forward Email. To poskytuje globální mezipaměť pro DNS v měřítku s konzistencí 1:1 napříč jakoukoli oblastí, aplikací nebo procesem, což je zásadní pro spolehlivé doručování e-mailů v distribuovaném systému.

Dopad na podnik: Od otevřeného zdroje k řešení kritickým pro misi

Vyvrcholení naší desetileté cesty ve vývoji open source umožnilo Forward Email sloužit 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 kritické e-mailové infrastruktuře

Náš závazek vůči spolehlivosti, soukromí a principům open source učinil Forward Email důvěryhodnou volbou pro organizace s náročnými požadavky na e-mail:

  • Vzdělávací instituce: Jak je podrobně uvedeno v našem případová studie přeposílá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řeposílání e-mailů.

  • Enterprise Linux řešení: The Canonical Ubuntu Enterprise Případová studie e-mailu ukazuje, jak se náš open source přístup dokonale shoduje s potřebami podnikových poskytovatelů Linuxu a nabízí jim transparentnost a kontrolu, kterou požadují.

  • Open Source Foundations: Snad nejvíce potvrzuje naše partnerství s Linux Foundation, jak je zdokumentováno v dokumentu Případová studie e-mailového podniku Linux Foundation, kde naše služba zajišťuje komunikaci pro samotnou organizaci, která řídí vývoj Linuxu.

V tom, jak nám naše balíčky s otevřeným zdrojovým kódem, pečlivě udržované po mnoho let, umožnily vybudovat e-mailovou službu, která nyní podporuje právě ty komunity a organizace, které propagují software s otevřeným zdrojovým kódem, je krásná symetrie. Tato komplexní cesta – od přispění jednotlivých balíčků po napájení podnikové e-mailové infrastruktury pro lídry s otevřeným zdrojovým kódem – představuje konečné ověření našeho přístupu k vývoji softwaru.

Dekáda otevřeného zdroje: výhled do budoucna

Když se ohlížíme za desetiletím příspěvků s otevřeným zdrojovým kódem a těšíme se na dalších deset let, jsme naplněni vděčností za komunitu, která podpořila naši práci, a nadšením pro to, co přijde.

Naše cesta od jednotlivých přispěvatelů balíčků k správcům komplexní e-mailové infrastruktury používané velkými podniky a nadacemi s otevřeným zdrojovým kódem byla pozoruhodná. Je to důkaz síly vývoje s otevřeným zdrojovým kódem a dopadu, který může mít promyšlený a dobře udržovaný software na širší ekosystém.

V příštích letech se zavazujeme:

  • Pokračujeme v udržování a vylepšování našich stávajících balíčků, což zajišťuje, že zůstanou spolehlivými nástroji pro vývojáře po celém světě.
  • Rozšíření našich příspěvků na projekty kritické infrastruktury, zejména v e-mailových a bezpečnostních doménách.
  • Vylepšení možností přeposílání e-mailů při zachování našeho závazku k ochraně soukromí, bezpečnosti a transparentnosti.
  • Podpora nové generace přispěvatelů open source prostřednictvím mentorství, sponzorství a zapojení komunity.

Věříme, že budoucnost vývoje softwaru je otevřená, spolupracující a postavená na základě důvěry. Doufáme, že tím, že budeme do ekosystému JavaScriptu nadále přispívat vysoce kvalitními balíčky zaměřenými na bezpečnost, budeme hrát malou roli při budování této budoucnosti.

Děkujeme všem, kteří využili naše balíčky, přispěli do našich projektů, nahlásili problémy nebo prostě jen rozšířili povědomí o naší práci. Vaše podpora umožnila toto desetiletí vlivu a my jsme nadšeni, že uvidíme, čeho můžeme společně dosáhnout v příštích deseti letech.

[^1]: Statistika stahování npm pro kabinu, duben 2025 [^2]: Statistika stahování npm pro bson-objectid, únor–březen 2025 [^3]: Statistiky stahování npm pro url-regex-safe, duben 2025 [^4]: Počet hvězdiček na GitHubu pro forwardemail/forwardemail.net od dubna 2025 [^5]: Statistika stahování npm pro náhledový e-mail, duben 2025 [^7]: Statistika stahování npm pro superagenta, únor–březen 2025 [^8]: Statistika stahování npm pro supertest, únor–březen 2025 [^9]: Statistika stahování npm pro náhledový e-mail, únor–březen 2025 [^10]: Statistika stahování npm pro kabinu, únor–březen 2025 [^11]: Statistiky stahování npm pro url-regex-safe, únor–březen 2025 [^12]: Statistika stahování npm pro spamscanner, únor–březen 2025 [^13]: Denní vzory stahování ze statistik npm, duben 2025 [^14]: Týdenní vzory stahování ze statistik npm, duben 2025 [^15]: Statistika stahování npm pro nodemailer, duben 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]: Na základě problémů GitHubu v úložišti Upptime [^28]: Na základě problémů GitHubu v úložišti Upptime [^29]: Na základě problémů GitHubu v úložišti Upptime [^30]: Statistika stahování npm pro Bree, únor–březen 2025 [^31]: Založeno na žádostech GitHubu o stažení do Uptime [^32]: Na základě požadavků GitHubu na aktualizace Uptime [^34]: Statistika stahování npm pro koa, únor–březen 2025 [^35]: Statistika stahování npm pro @koa/router, únor–březen 2025 [^36]: Statistika stahování npm pro koa-router, únor–březen 2025 [^37]: Statistika stahování npm pro url-regex, únor–březen 2025 [^38]: Statistika stahování npm pro @breejs/later, únor–březen 2025 [^39]: Statistika stahování npm pro e-mailové šablony, únor–březen 2025 [^40]: Statistika stahování npm pro get-paths, únor–březen 2025 [^41]: Statistika stahování npm pro dotenv-parse-variables, únor–březen 2025 [^42]: Statistika stahování npm pro @koa/multer, únor–březen 2025