Uma década de impacto: como nossos pacotes npm atingiram 1 bilhão de downloads e moldaram o JavaScript
No Javascript e Node.js mundo, alguns pacotes são essenciais — baixados milhões de vezes diariamente e alimentando aplicativos no mundo todo. Por trás dessas ferramentas estão desenvolvedores focados na qualidade do código aberto. Hoje, estamos mostrando como nossa equipe ajuda a construir e manter pacotes npm que se tornaram partes essenciais do ecossistema JavaScript.
Os pioneiros que confiam em nós: Isaac Z. Schlueter e Forward Email
Estamos orgulhosos de ter Isaac Z. Schlueter (GitHub: isaacs) como um usuário. Isaac criou acima do nível do mar e ajudou a construir Node.js. Sua confiança no Forward Email mostra nosso foco em qualidade e segurança. Isaac usa o Forward Email para vários domínios, incluindo izs.me.
O impacto de Isaac no JavaScript é enorme. Em 2009, ele foi um dos primeiros a ver o potencial do Node.js, trabalhando com Ryan Dahl, que criou a plataforma. Como Isaac disse em um entrevista com a revista Increment: "No meio dessa comunidade muito pequena de um grupo de pessoas tentando descobrir como fazer o JS do lado do servidor acontecer, Ryan Dahl lançou o Node, que era claramente a abordagem certa. Eu joguei minhas fichas nisso e me envolvi muito em meados de 2009."
[!NOTA] Para aqueles interessados na história do Node.js, há excelentes documentários disponíveis que registram seu desenvolvimento, incluindo A história do Node.js e 10 coisas que lamento sobre o Node.js - Ryan Dahl. Ryan Dahl de site pessoal também contém informações valiosas sobre seu trabalho.
Da criação do npm à liderança do Node.js
Isaac criou o npm em setembro de 2009, com a primeira versão utilizável lançada no início de 2010. Este gerenciador de pacotes preencheu uma necessidade fundamental no Node.js, permitindo que os desenvolvedores compartilhem e reutilizem o código facilmente. De acordo com o Página da Wikipédia sobre Node.js, "Em janeiro de 2010, um gerenciador de pacotes foi introduzido para o ambiente Node.js chamado npm. O gerenciador de pacotes permite que os programadores publiquem e compartilhem pacotes Node.js, junto com o código-fonte que os acompanha, e foi projetado para simplificar a instalação, atualização e desinstalação de pacotes."
Quando Ryan Dahl se afastou do Node.js em janeiro de 2012, Isaac assumiu como líder do projeto. Conforme observado em seu resumo, ele "Liderou o desenvolvimento de diversas APIs fundamentais do Node.js, incluindo o sistema de módulos CommonJS, APIs de sistema de arquivos e fluxos" e "Atuou como BDFL (Benevolent Dictator For Life) do projeto por 2 anos, garantindo qualidade cada vez maior e processo de construção confiável para as versões v0.6 a v0.10 do Node.js."
Isaac guiou o Node.js por um período de crescimento essencial, definindo padrões que ainda moldam a plataforma hoje. Mais tarde, ele fundou a npm, Inc. em 2014 para dar suporte ao registro npm, que ele havia administrado por conta própria antes.
Agradecemos a Isaac por suas enormes contribuições ao JavaScript e continuamos a usar muitos pacotes que ele criou. Seu trabalho mudou a forma como construímos software e como milhões de desenvolvedores compartilham código no mundo todo.
O arquiteto por trás do código: a jornada de Nick Baugh
No centro do nosso sucesso de código aberto está Nick Baugh, fundador e proprietário da Forward Email. Seu trabalho em JavaScript abrange quase 20 anos e moldou como inúmeros desenvolvedores criam aplicativos. Sua jornada de código aberto mostra tanto habilidade técnica quanto liderança comunitária.
Comitê Técnico Expresso e Contribuições Essenciais
A experiência de Nick com a estrutura da web lhe rendeu uma vaga no Comitê Técnico Expresso, onde ajudou com um dos frameworks Node.js mais usados. Nick agora está listado como um membro inativo no Página da comunidade Express.
[!IMPORTANTE] O Express foi criado originalmente por TJ Holowaychuk, um prolífico contribuidor de código aberto que moldou grande parte do ecossistema Node.js. Somos gratos pelo trabalho fundamental de TJ e respeitamos sua decisão de fazer uma pausa de suas extensas contribuições de código aberto.
Como membro do Comitê Técnico Expresso, Nick demonstrou grande atenção aos detalhes em questões como esclarecimento req.originalUrl
documentação e correção de problemas de manuseio de formulários multipartes.
Contribuições do Koa Framework
O trabalho de Nick com o Estrutura Koa—uma alternativa moderna e mais leve ao Express também criada por TJ Holowaychuk—mostra ainda mais seu comprometimento com melhores ferramentas de desenvolvimento web. Suas contribuições para o Koa incluem problemas e código por meio de solicitações de pull, abordando tratamento de erros, gerenciamento de tipo de conteúdo e melhorias na documentação.
Seu trabalho na Express e na Koa lhe dá uma visão única do desenvolvimento web em Node.js, ajudando nossa equipe a criar pacotes que funcionam bem com diversos ecossistemas de framework.
De colaborador individual a líder organizacional
O que começou como ajudar projetos existentes cresceu para criar e manter ecossistemas de pacotes inteiros. Nick fundou várias organizações do GitHub, incluindo Cabine, Verificador de spam, Encaminhar email, Deixei, e Brisa—cada um resolvendo necessidades específicas na comunidade JavaScript.
Essa mudança de colaborador para líder mostra a visão de Nick para um software bem projetado que resolve problemas reais. Ao organizar pacotes relacionados em organizações focadas do GitHub, ele construiu ecossistemas de ferramentas que funcionam juntos, ao mesmo tempo em que permanecem modulares e flexíveis para a comunidade de desenvolvedores mais ampla.
Nossas Organizações GitHub: Ecossistemas de Inovação
Organizamos nosso trabalho de código aberto em torno de organizações focadas do GitHub, cada uma resolvendo necessidades específicas em JavaScript. Essa estrutura cria famílias de pacotes coesas que funcionam bem juntas, mas permanecem modulares.
Cabine: Registro estruturado para aplicações modernas
O Organização da cabine é a nossa abordagem sobre registro de aplicativos simples e poderoso. O principal cabin
pacote tem quase 900 estrelas no GitHub e mais de 100.000 downloads semanais[^1]. O Cabin fornece registro estruturado que funciona com serviços populares como Sentry, LogDNA e Papertrail.
O que torna o Cabin especial é seu sistema de API e plugin bem pensado. Pacotes de suporte como axe
para middleware Express e parse-request
para análise de solicitações HTTP mostramos nosso comprometimento com soluções completas em vez de ferramentas isoladas.
O bson-objectid
pacote merece menção especial, com mais de 1,7 milhões de downloads em apenas dois meses[^2]. Esta implementação leve do MongoDB ObjectID se tornou a escolha certa para desenvolvedores que precisam de IDs sem dependências completas do MongoDB.
Verificador de Spam: Combatendo o Abuso de E-mail
O Organização do Spam Scanner demonstra nosso comprometimento em resolver problemas reais. O principal spamscanner
O pacote fornece detecção avançada de spam de e-mail, mas é o url-regex-safe
pacote que teve uma adoção incrível.
Com mais de 1,2 milhões de downloads em dois meses[^3], url-regex-safe
corrige problemas críticos de segurança em outras expressões regulares de detecção de URL. Este pacote mostra nossa abordagem para código aberto: encontrar um problema comum (neste caso, RefazerS vulnerabilidades na validação de URL), criando uma solução sólida e mantendo-a cuidadosamente.
Bree: Agendamento de tarefas moderno com threads de trabalho
O Organização Bree é a nossa resposta a um desafio comum do Node.js: agendamento de tarefas confiável. O principal bree
O pacote, com mais de 3.100 estrelas no GitHub, fornece um agendador de tarefas moderno usando threads de trabalho do Node.js para melhor desempenho e confiabilidade.
[!NOTA] Bree foi criada depois que ajudamos a manter Agenda, aplicando lições aprendidas para construir um melhor agendador de tarefas. Nossas contribuições da Agenda nos ajudaram a encontrar maneiras de melhorar o agendamento de tarefas.
O que torna o Bree diferente de outros agendadores como o Agenda:
- Sem dependências externas: Ao contrário do Agenda, que precisa do MongoDB, o Bree não precisa do Redis ou do MongoDB para gerenciar o estado do trabalho.
- Tópicos de Trabalhadores: Bree usa threads de trabalho do Node.js para processos em sandbox, proporcionando melhor isolamento e desempenho.
- API simples: Bree oferece controle detalhado com simplicidade, facilitando a implementação de necessidades complexas de agendamento.
- Suporte Integrado: Coisas como recarregamento elegante, tarefas cron, datas e horários amigáveis são incluídos por padrão.
Bree é uma parte fundamental de forwardemail.net, lidando com tarefas críticas de segundo plano, como processamento de e-mail, limpeza e manutenção programada. Usar o Bree no Forward Email mostra nosso comprometimento em usar nossas próprias ferramentas na produção, garantindo que elas atendam a altos padrões de confiabilidade.
Também usamos e apreciamos outros excelentes pacotes de threads de trabalho como piscina e clientes HTTP como onze. Piscina, como Bree, usa threads de trabalho do Node.js para processamento eficiente de tarefas. Agradecemos Colina de Mateus, que mantém undici e piscina, por suas principais contribuições ao Node.js. Matteo atua no Comitê de Direção Técnica do Node.js e melhorou muito os recursos do cliente HTTP no Node.js.
Encaminhar e-mail: Infraestrutura de e-mail de código aberto
Nosso projeto mais ambicioso é Encaminhar email, um serviço de e-mail de código aberto que fornece encaminhamento de e-mail, armazenamento e serviços de API. O repositório principal tem mais de 1.100 estrelas GitHub[^4], mostrando a apreciação da comunidade por essa alternativa aos serviços de e-mail proprietários.
O preview-email
pacote desta organização, com mais de 2,5 milhões de downloads em dois meses[^5], tornou-se uma ferramenta essencial para desenvolvedores que trabalham com modelos de e-mail. Ao fornecer uma maneira simples de visualizar e-mails durante o desenvolvimento, ele resolve um ponto problemático comum na construção de aplicativos habilitados para e-mail.
Lad: Utilitários e ferramentas essenciais do Koa
O Organização de rapazes fornece uma coleção de utilitários e ferramentas essenciais focadas principalmente em aprimorar o ecossistema do framework Koa. Esses pacotes resolvem desafios comuns no desenvolvimento web e são projetados para trabalhar perfeitamente juntos, enquanto permanecem úteis de forma independente.
koa-better-error-handler: Tratamento de erros aprimorado para Koa
koa-better-error-handler
oferece uma melhor solução de tratamento de erros para aplicativos Koa. Com mais de 50 estrelas do GitHub, este pacote faz ctx.throw
produz mensagens de erro amigáveis ao usuário, ao mesmo tempo em que aborda diversas limitações do manipulador de erros integrado do Koa:
- Detecta e manipula adequadamente erros de DNS do Node.js, erros do Mongoose e erros do Redis
- Usos Estrondo para criar respostas de erro consistentes e bem formatadas
- Preserva cabeçalhos (ao contrário do manipulador integrado do Koa)
- Mantém códigos de status apropriados em vez de usar o padrão 500
- Suporta mensagens flash e preservação de sessão
- Fornece listas de erros HTML para erros de validação
- Suporta vários tipos de resposta (HTML, JSON e texto simples)
Este pacote é particularmente valioso quando usado junto com koa-404-handler
para gerenciamento abrangente de erros em aplicações Koa.
passaporte: Autenticação para Lad
@ladjs/passport
estende o popular middleware de autenticação Passport.js com aprimoramentos específicos para aplicativos da web modernos. Este pacote suporta múltiplas estratégias de autenticação prontas para uso:
- Autenticação local com e-mail
- Faça login com a Apple
- Autenticação GitHub
- Autenticação do Google
- Autenticação de senha de uso único (OTP)
O pacote é altamente personalizável, permitindo que os desenvolvedores ajustem nomes de campos e frases para corresponder aos requisitos de seus aplicativos. Ele foi projetado para integrar-se perfeitamente com o Mongoose para gerenciamento de usuários, tornando-o uma solução ideal para aplicativos baseados em Koa que precisam de autenticação robusta.
gracioso: Desligamento elegante do aplicativo
@ladjs/graceful
resolve o desafio crítico de encerrar graciosamente aplicativos Node.js. Com mais de 70 estrelas do GitHub, este pacote garante que seu aplicativo possa ser encerrado de forma limpa, sem perder dados ou deixar conexões travadas. Os principais recursos incluem:
- Suporte para fechar servidores HTTP com elegância (Express/Koa/Fastify)
- Desligamento limpo das conexões de banco de dados (MongoDB/Mongoose)
- Fechamento adequado de clientes Redis
- Manuseio de agendadores de tarefas Bree
- Suporte para manipuladores de desligamento personalizados
- Configurações de tempo limite configuráveis
- Integração com sistemas de registro
Este pacote é essencial para aplicações de produção onde desligamentos inesperados podem levar à perda ou corrupção de dados. Ao implementar procedimentos de desligamento adequados, @ladjs/graceful
ajuda a garantir a confiabilidade e a estabilidade do seu aplicativo.
Upptime: Monitoramento de tempo de atividade de código aberto
O Organização do tempo de atividade representa nosso compromisso com o monitoramento transparente e de código aberto. O principal upptime
O repositório tem mais de 13.000 estrelas do GitHub, o que o torna um dos projetos mais populares para os quais contribuímos. O Upptime fornece um monitor de tempo de atividade e uma página de status com tecnologia GitHub que opera inteiramente sem um servidor.
Usamos o Upptime para nossa própria página de status em https://status.forwardemail.net com o código fonte disponível em https://github.com/forwardemail/status.forwardemail.net.
O que torna o Upptime especial é sua arquitetura:
- 100% código aberto:Cada componente é totalmente de código aberto e personalizável.
- Desenvolvido pelo GitHub: Aproveita ações, problemas e páginas do GitHub para uma solução de monitoramento sem servidor.
- Nenhum servidor necessário: Ao contrário das ferramentas de monitoramento tradicionais, o Upptime não exige que você execute ou mantenha um servidor.
- Página de status automática: Gera uma bela página de status que pode ser hospedada no GitHub Pages.
- Notificações poderosas: Integra-se com vários canais de notificação, incluindo e-mail, SMS e Slack.
Para melhorar a experiência dos nossos usuários, integramos @octokit/núcleo no código-base forwardemail.net para renderizar atualizações de status em tempo real e incidentes diretamente em nosso site. Essa integração fornece transparência clara aos nossos usuários em caso de problemas em toda a nossa pilha (site, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree, etc.) com notificações de toast instantâneas, alterações de ícones de emblemas, cores de aviso e muito mais.
A biblioteca @octokit/core nos permite buscar dados em tempo real do nosso repositório Upptime GitHub, processá-los e exibi-los de forma amigável ao usuário. Quando qualquer serviço tem uma interrupção ou desempenho degradado, os usuários são imediatamente notificados por meio de indicadores visuais sem precisar sair do aplicativo principal. Essa integração perfeita garante que nossos usuários sempre tenham informações atualizadas sobre o status do nosso sistema, aumentando a transparência e a confiança.
O Upptime foi adotado por centenas de organizações que buscam uma maneira transparente e confiável de monitorar seus serviços e comunicar o status aos usuários. O sucesso do projeto mostra o poder de construir ferramentas que alavancam a infraestrutura existente (neste caso, o GitHub) para resolver problemas comuns de novas maneiras.
Nossas contribuições para o ecossistema de e-mail de encaminhamento
Embora nossos pacotes de código aberto sejam usados por desenvolvedores no mundo todo, eles também formam a base do nosso próprio serviço Forward Email. Essa dupla função — como criadores e usuários dessas ferramentas — nos dá uma perspectiva única sobre sua aplicação no mundo real e impulsiona a melhoria contínua.
Das embalagens à produção
A jornada de pacotes individuais para um sistema de produção coeso envolve integração e extensão cuidadosas. Para Forward Email, esse processo inclui:
- Extensões personalizadas: Desenvolvendo extensões específicas para e-mail para nossos pacotes de código aberto que atendem aos nossos requisitos exclusivos.
- Padrões de Integração: Desenvolver padrões de como esses pacotes interagem em um ambiente de produção.
- Otimizações de desempenho: Identificar e abordar gargalos de desempenho que só surgem em escala.
- Endurecimento de segurança: Adicionar camadas de segurança adicionais específicas para tratamento de e-mail e proteção de dados do usuário.
Este trabalho representa milhares de horas de desenvolvimento além dos pacotes principais, resultando em um serviço de e-mail robusto e seguro que aproveita o melhor de nossas contribuições de código aberto.
O ciclo de feedback
Talvez o aspecto mais valioso de usar nossos próprios pacotes em produção seja o loop de feedback que ele cria. Quando encontramos limitações ou casos extremos no Forward Email, não apenas os corrigimos localmente — melhoramos os pacotes subjacentes, beneficiando tanto nosso serviço quanto a comunidade em geral.
Esta abordagem levou a inúmeras melhorias:
- Desligamento elegante de Bree: A necessidade da Forward Email por implantações com tempo de inatividade zero levou a recursos aprimorados de desligamento gradual no Bree.
- Reconhecimento de padrões do Spam Scanner: Padrões de spam do mundo real encontrados no Forward Email informaram os algoritmos de detecção do Spam Scanner.
- Otimizações de desempenho da cabine: O registro de alto volume na produção revelou oportunidades de otimização no Cabin que beneficiam todos os usuários.
Ao manter esse ciclo virtuoso entre nosso trabalho de código aberto e serviço de produção, garantimos que nossos pacotes continuem sendo soluções práticas e testadas em batalha, em vez de implementações teóricas.
Princípios básicos do Forward Email: uma base para a excelência
O Forward Email é projetado de acordo com um conjunto de princípios básicos que orientam todas as nossas decisões de desenvolvimento. Esses princípios, detalhados em nosso site, garanta que nosso serviço permaneça amigável ao desenvolvedor, seguro e focado na privacidade do usuário.
Sempre amigável ao desenvolvedor, focado na segurança e transparente
Nosso primeiro e mais importante princípio é criar software que seja amigável ao desenvolvedor, mantendo os mais altos padrões de segurança e privacidade. Acreditamos que a excelência técnica nunca deve vir às custas da usabilidade, e que a transparência constrói confiança com nossa comunidade.
Este princípio é mostrado em nossa documentação detalhada, mensagens de erro claras e comunicação aberta sobre sucessos e desafios. Ao tornar toda a nossa base de código open source, convidamos o escrutínio e a colaboração, fortalecendo tanto nosso software quanto o ecossistema mais amplo.
Adesão aos princípios de desenvolvimento de software testados pelo tempo
Seguimos vários princípios estabelecidos de desenvolvimento de software que provaram seu valor ao longo de décadas:
- MVC: Separando preocupações através do padrão Model-View-Controller
- Filosofia Unix:Criando componentes modulares que fazem uma coisa bem
- KISS:Mantendo-o simples e direto
- DRY: Não se repita, promovendo a reutilização de código
- YAGNI: Você não vai precisar disso, evitando otimização prematura
- Doze Fatores: Seguindo as melhores práticas para construir aplicativos modernos e escaláveis
- Navalha de Occam: Escolha da solução mais simples que atenda aos requisitos
- Comida de cachorro:Usando nossos próprios produtos extensivamente
Esses princípios não são apenas conceitos teóricos — eles estão incorporados em nossas práticas diárias de desenvolvimento. Por exemplo, nossa adesão à filosofia Unix é evidente em como estruturamos nossos pacotes npm: módulos pequenos e focados que podem ser compostos juntos para resolver problemas complexos.
Visando o desenvolvedor desorganizado e autossuficiente
Nós visamos especificamente os trabalhadores desorganizados, os que vivem sem recursos e ramen lucrativo desenvolvedor. Esse foco molda tudo, desde nosso modelo de precificação até nossas decisões técnicas. Entendemos os desafios de construir produtos com recursos limitados porque nós mesmos já passamos por isso.
Este princípio é particularmente importante na forma como abordamos o código aberto. Criamos e mantemos pacotes que resolvem problemas reais para desenvolvedores sem orçamentos empresariais, tornando ferramentas poderosas acessíveis a todos, independentemente de seus recursos.
Princípios na prática: a base de código do Forward Email
Esses princípios são claramente visíveis na base de código do Forward Email. Nosso arquivo package.json revela uma seleção cuidadosa de dependências, cada uma escolhida para se alinhar com nossos valores principais:
- Pacotes focados em segurança como
mailauth
para autenticação de e-mail - Ferramentas amigáveis ao desenvolvedor como
preview-email
para facilitar a depuração - Componentes modulares como os vários
p-*
utilidades de Sindre Sorhus
Ao seguir esses princípios consistentemente ao longo do tempo, criamos um serviço no qual os desenvolvedores podem confiar sua infraestrutura de e-mail: seguro, confiável e alinhado aos valores da comunidade de código aberto.
Privacidade por Design
A privacidade não é uma reflexão tardia ou um recurso de marketing do Forward Email; é um princípio fundamental de design que informa todos os aspectos do nosso serviço e código:
- Criptografia de acesso zero:Implementamos sistemas que tornam tecnicamente impossível ler os e-mails dos usuários.
- Coleta mínima de dados: Coletamos apenas os dados necessários para fornecer nosso serviço, nada mais.
- Políticas transparentes: Nossa política de privacidade é escrita em linguagem clara e compreensível, sem jargões jurídicos.
- Verificação de código aberto: Nossa base de código aberto permite que pesquisadores de segurança verifiquem nossas declarações de privacidade.
Esse compromisso se estende aos nossos pacotes de código aberto, que são projetados com as melhores práticas de segurança e privacidade incorporadas desde o início.
Código Aberto Sustentável
Acreditamos que o software de código aberto precisa de modelos sustentáveis para prosperar a longo prazo. Nossa abordagem inclui:
- Suporte Comercial: Oferecemos suporte e serviços premium em torno de nossas ferramentas de código aberto.
- Licenciamento equilibrado: Utilizando licenças que protegem tanto as liberdades dos usuários quanto a sustentabilidade do projeto.
- Envolvimento da Comunidade: Interagir ativamente com os colaboradores para construir uma comunidade de apoio.
- Roteiros Transparentes: Compartilhando nossos planos de desenvolvimento para permitir que os usuários planejem adequadamente.
Ao focar na sustentabilidade, garantimos que nossas contribuições de código aberto possam continuar a crescer e melhorar ao longo do tempo, em vez de cair no esquecimento.
Os números não mentem: Nossas estatísticas impressionantes de download do npm
Quando falamos sobre o impacto do software de código aberto, as estatísticas de download fornecem uma medida tangível de adoção e confiança. Muitos dos pacotes que ajudamos a manter atingiram uma escala que poucos projetos de código aberto já alcançaram, com downloads combinados chegando a bilhões.
[!IMPORTANTE] Embora tenhamos orgulho de ajudar a manter vários pacotes altamente baixados no ecossistema JavaScript, queremos reconhecer que muitos desses pacotes foram originalmente criados por outros desenvolvedores talentosos. Pacotes como superagent e supertest foram originalmente criados por TJ Holowaychuk, cujas contribuições prolíficas ao código aberto foram fundamentais para moldar o ecossistema Node.js.
Uma visão panorâmica do nosso impacto
Somente no período de dois meses, de fevereiro a março de 2025, os principais pacotes para os quais contribuímos e ajudamos a manter registraram números impressionantes de downloads:
- superagente: 84.575.829 downloads[^7] (originalmente criado por TJ Holowaychuk)
- super teste: 76.432.591 downloads[^8] (originalmente criado por TJ Holowaychuk)
- também: 28.539.295 downloads[^34] (originalmente criado por TJ Holowaychuk)
- @koa/roteador: 11.007.327 downloads[^35]
- koa-roteador: 3.498.918 downloads[^36]
- url-regex: 2.819.520 downloads[^37]
- pré-visualização-email: 2.500.000 downloads[^9]
- cabine: 1.800.000 downloads[^10]
- @breejs/mais tarde: 1.709.938 downloads[^38]
- modelos de e-mail: 1.128.139 downloads[^39]
- obter caminhos: 1.124.686 downloads[^40]
- url-regex-seguro: 1.200.000 downloads[^11]
- variáveis-de-análise-dotenv: 894.666 downloads[^41]
- @koa/multer: 839.585 downloads[^42]
- scanner de spam: 145.000 downloads[^12]
- brisa: 24.270 downloads[^30]
[!NOTA] Vários outros pacotes que ajudamos a manter, mas não criamos, têm contagens de download ainda maiores, incluindo
form-data
(mais de 738 milhões de downloads),toidentifier
(mais de 309 milhões de downloads),stackframe
(mais de 116 milhões de downloads) eerror-stack-parser
(113M+ downloads). Estamos honrados em contribuir com esses pacotes respeitando o trabalho de seus autores originais.
Esses não são apenas números impressionantes — eles representam desenvolvedores reais resolvendo problemas reais com código que ajudamos a manter. Cada download é uma instância em que esses pacotes ajudaram alguém a construir algo significativo, de projetos de hobby a aplicativos corporativos usados por milhões.
Impacto diário em escala
Os padrões de download diário revelam uso consistente e de alto volume, com picos atingindo milhões de downloads por dia[^13]. Essa consistência fala da estabilidade e confiabilidade desses pacotes — os desenvolvedores não apenas os testam; eles os integram em seus fluxos de trabalho principais e dependem deles dia após dia.
Os padrões de download semanais mostram números ainda mais impressionantes, oscilando consistentemente em torno de dezenas de milhões de downloads por semana[^14]. Isso representa uma pegada massiva no ecossistema JavaScript, com esses pacotes sendo executados em ambientes de produção em todo o mundo.
Além dos números brutos
Embora as estatísticas de download sejam impressionantes por si só, elas contam uma história mais profunda sobre a confiança que a comunidade deposita nesses pacotes. Manter pacotes nessa escala requer um compromisso inabalável com:
- Compatibilidade com versões anteriores: As mudanças devem ser cuidadosamente consideradas para evitar quebrar as implementações existentes.
- Segurança:Com milhões de aplicativos dependendo desses pacotes, vulnerabilidades de segurança podem ter consequências de longo alcance.
- Desempenho:Nessa escala, mesmo pequenas melhorias de desempenho podem ter benefícios agregados significativos.
- Documentação: Documentação clara e abrangente é essencial para pacotes usados por desenvolvedores de todos os níveis de experiência.
O crescimento consistente nos números de downloads ao longo do tempo reflete o sucesso no cumprimento desses compromissos, construindo confiança com a comunidade de desenvolvedores por meio de pacotes confiáveis e bem mantidos.
Apoiando o ecossistema: nossos patrocínios de código aberto
[!DICA] A sustentabilidade do código aberto não se trata apenas de contribuir com código, mas também de dar suporte aos desenvolvedores que mantêm a infraestrutura crítica.
Além de nossas contribuições diretas ao ecossistema JavaScript, temos orgulho de patrocinar importantes contribuidores do Node.js cujo trabalho forma a base de muitos aplicativos modernos. Nossos patrocínios incluem:
Andris Reinman: Pioneiro em infraestrutura de e-mail
André Reinman é o criador de Nodemailer, a biblioteca de envio de e-mail mais popular para Node.js com mais de 14 milhões de downloads semanais[^15]. Seu trabalho se estende a outros componentes críticos de infraestrutura de e-mail como Servidor SMTP, Analisador de e-mail, e Pato selvagem.
Nosso patrocínio ajuda a garantir a manutenção e o desenvolvimento contínuos dessas ferramentas essenciais que impulsionam a comunicação por e-mail para inúmeros aplicativos Node.js, incluindo nosso próprio serviço Forward Email.
Sindre Sorhus: idealizador do pacote de utilitários
Sindre Sorhus é um dos mais prolíficos contribuidores de código aberto no ecossistema JavaScript, com mais de 1.000 pacotes npm em seu nome. Seus utilitários como p-mapa, p-tentar novamente, e é-fluxo são blocos de construção fundamentais usados em todo o ecossistema Node.js.
Ao patrocinar o trabalho de Sindre, ajudamos a sustentar o desenvolvimento desses utilitários essenciais que tornam o desenvolvimento de JavaScript mais eficiente e confiável.
Esses patrocínios refletem nosso comprometimento com o ecossistema open source mais amplo. Reconhecemos que nosso próprio sucesso é construído sobre a fundação estabelecida por esses e outros contribuidores, e estamos dedicados a garantir a sustentabilidade de todo o ecossistema.
Descobrindo vulnerabilidades de segurança no ecossistema JavaScript
Nosso compromisso com o código aberto se estende além do desenvolvimento de recursos para incluir a identificação e o tratamento de vulnerabilidades de segurança que podem impactar milhões de desenvolvedores. Várias de nossas contribuições mais significativas para o ecossistema JavaScript foram no campo da segurança.
O resgate do Koa-Router
Em fevereiro de 2019, Nick identificou um problema crítico com a manutenção do popular pacote koa-router. Como ele relatado no Hacker News, o pacote foi abandonado por seu mantenedor original, deixando vulnerabilidades de segurança sem solução e a comunidade sem atualizações.
[!AVISO] Pacotes abandonados com vulnerabilidades de segurança representam riscos significativos para todo o ecossistema, especialmente quando são baixados milhões de vezes por semana.
Em resposta, Nick criou @koa/roteador e ajudou a alertar a comunidade sobre a situação. Ele vem mantendo esse pacote crítico desde então, garantindo que os usuários do Koa tenham uma solução de roteamento segura e bem mantida.
Abordando vulnerabilidades ReDoS
Em 2020, Nick identificou e abordou um problema crítico Negação de serviço de expressão regular (ReDoS) vulnerabilidade no amplamente utilizado url-regex
pacote. Esta vulnerabilidade (SNYK-JS-URLREGEX-569472) poderia permitir que invasores causassem negação de serviço ao fornecer uma entrada especialmente criada que causasse um retrocesso catastrófico na expressão regular.
Em vez de simplesmente corrigir o pacote existente, Nick criou url-regex-safe
, uma implementação completamente reescrita que aborda a vulnerabilidade, mantendo a compatibilidade com a API original. Ele também publicou um postagem de blog abrangente explicando a vulnerabilidade e como mitigá-la.
Este trabalho mostra nossa abordagem à segurança: não apenas corrigir problemas, mas educar a comunidade e fornecer alternativas robustas que evitem problemas semelhantes no futuro.
Defendendo a segurança do Node.js e do Chromium
Nick também tem sido ativo na defesa de melhorias de segurança no ecossistema mais amplo. Em agosto de 2020, ele identificou um problema de segurança significativo no Node.js relacionado ao seu tratamento de cabeçalhos HTTP, que foi relatado em O Registro.
Esse problema, que surgiu de um patch no Chromium, poderia potencialmente permitir que invasores ignorassem medidas de segurança. A defesa de Nick ajudou a garantir que o problema fosse resolvido prontamente, protegendo milhões de aplicativos Node.js de exploração potencial.
Protegendo a infraestrutura npm
Mais tarde, naquele mesmo mês, Nick identificou outro problema crítico de segurança, desta vez na infraestrutura de e-mail do npm. Conforme relatado em O Registro, o npm não estava implementando corretamente os protocolos de autenticação de e-mail DMARC, SPF e DKIM, permitindo que invasores enviassem e-mails de phishing que pareciam vir do npm.
O relatório de Nick levou a melhorias na postura de segurança de e-mail do npm, protegendo os milhões de desenvolvedores que dependem do npm para gerenciamento de pacotes contra possíveis ataques de phishing.
Nossas contribuições para o ecossistema de e-mail de encaminhamento
O Forward Email é construído sobre vários projetos críticos de código aberto, incluindo Nodemailer, WildDuck e mailauth. Nossa equipe fez contribuições significativas para esses projetos, ajudando a identificar e corrigir problemas profundos que afetam a entrega e a segurança de e-mails.
Melhorando a funcionalidade principal do Nodemailer
Nodemailer é a espinha dorsal do envio de e-mails no Node.js, e nossas contribuições ajudaram a torná-lo mais robusto:
- Melhorias no servidor SMTP: Corrigimos bugs de análise, problemas de manipulação de fluxo e problemas de configuração de TLS no componente do servidor SMTP[^16][^17].
- Melhorias no analisador de e-mail: Corrigimos erros de decodificação de sequência de caracteres e problemas de analisador que podem causar falhas no processamento de e-mail[^18][^19].
Essas contribuições garantem que o Nodemailer continue sendo uma base confiável para processamento de e-mail em aplicativos Node.js, incluindo o Forward Email.
Avançando a autenticação de e-mail com Mailauth
Mailauth fornece funcionalidade crítica de autenticação de e-mail, e nossas contribuições melhoraram significativamente suas capacidades:
- Melhorias na verificação DKIM: Descobrimos e relatamos que o X/Twitter tinha problemas de cache DNS causando falha de DKIM para suas mensagens de saída, relatando isso no Hacker One[^20].
- Melhorias no DMARC e ARC: Corrigimos problemas com a verificação DMARC e ARC que poderiam levar a resultados de autenticação incorretos[^21][^22].
- Otimizações de desempenho: Contribuímos com otimizações que melhoram o desempenho dos processos de autenticação de e-mail[^23][^24][^25][^26].
Essas melhorias ajudam a garantir que a autenticação de e-mail seja precisa e confiável, protegendo os usuários contra ataques de phishing e spoofing.
Principais melhorias no tempo de atividade
Nossas contribuições para o Upptime incluem:
- Monitoramento de Certificado SSL: Adicionamos funcionalidade para monitorar a expiração do certificado SSL, evitando tempo de inatividade inesperado devido a certificados expirados[^27].
- Suporte a vários números de SMS: Implementamos suporte para alertar vários membros da equipe via SMS quando ocorrem incidentes, melhorando os tempos de resposta[^28].
- Correções de verificação de IPv6: Corrigimos problemas com verificações de conectividade IPv6, garantindo um monitoramento mais preciso em ambientes de rede modernos[^29].
- Suporte ao modo escuro/claro: Adicionamos suporte a temas para melhorar a experiência do usuário nas páginas de status[^31].
- Melhor suporte TCP-Ping: Melhoramos a funcionalidade de ping TCP para fornecer testes de conexão mais confiáveis[^32].
Essas melhorias não beneficiam apenas o monitoramento de status do Forward Email, mas estão disponíveis para toda a comunidade de usuários do Upptime, demonstrando nosso comprometimento em melhorar as ferramentas das quais dependemos.
A cola que mantém tudo unido: código personalizado em escala
Embora nossos pacotes npm e contribuições para projetos existentes sejam significativos, é o código personalizado que integra esses componentes que realmente demonstra nossa expertise técnica. A base de código Forward Email representa uma década de esforço de desenvolvimento, que remonta a 2017, quando o projeto começou como encaminhamento-de-e-mail-gratuito antes de ser mesclado em um monorepo.
Um esforço de desenvolvimento massivo
A escala deste código de integração personalizado é impressionante:
- Contribuições totais: Mais de 3.217 confirmações
- Tamanho da base de código: Mais de 421.545 linhas de código em arquivos JavaScript, Pug, CSS e JSON[^33]
Isso representa milhares de horas de trabalho de desenvolvimento, sessões de depuração e otimizações de desempenho. É o "ingrediente secreto" que transforma pacotes individuais em um serviço coeso e confiável usado por milhares de clientes diariamente.
Integração de dependências principais
A base de código do Forward Email integra inúmeras dependências em um todo perfeito:
- Processamento de e-mail: Integra Nodemailer para envio, SMTP Server para recebimento e Mailparser para análise
- Autenticação: Usa Mailauth para verificação DKIM, SPF, DMARC e ARC
- Resolução DNS: Aproveita o Tangerine para DNS sobre HTTPS com cache global
- Conexão MX: Utiliza o mx-connect com integração Tangerine para conexões confiáveis com servidores de e-mail
- Agendamento de trabalho: Emprega Bree para processamento confiável de tarefas em segundo plano com threads de trabalho
- Modelagem: Emprega modelos de e-mail para reutilizar folhas de estilo do site nas comunicações com o cliente
- Armazenamento de e-mail: Implementa caixas de correio SQLite criptografadas individualmente usando better-sqlite3-multiple-ciphers com criptografia ChaCha20-Poly1305 para privacidade segura quântica, garantindo isolamento completo entre usuários e que somente o usuário tenha acesso à sua caixa de correio
Cada uma dessas integrações requer consideração cuidadosa de casos extremos, implicações de desempenho e preocupações de segurança. O resultado é um sistema robusto que lida com milhões de transações de e-mail de forma confiável. Nossa implementação SQLite também aproveita o msgpackr para serialização binária eficiente e WebSockets (via ws) para atualizações de status em tempo real em toda a nossa infraestrutura.
Infraestrutura DNS com Tangerine e mx-connect
Um componente crítico da infraestrutura do Forward Email é nosso sistema de resolução de DNS, construído em torno de dois pacotes principais:
-
tangerina: Nossa implementação Node.js DNS-over-HTTPS fornece uma substituição imediata para o resolvedor DNS padrão, com tentativas integradas, tempos limite, rotação inteligente de servidores e suporte a cache.
-
mx-conectar: Este pacote estabelece conexões TCP com servidores MX, pegando um domínio de destino ou endereço de e-mail, resolvendo servidores MX apropriados e conectando-se a eles em ordem de prioridade.
Integramos o Tangerine com o mx-connect através solicitação de pull nº 4, garantindo DNS de camada de aplicativo sobre solicitações HTTP em todo o Forward Email. Isso fornece cache global para DNS em escala com consistência 1:1 em qualquer região, aplicativo ou processo — essencial para entrega confiável de e-mail em um sistema distribuído.
Impacto empresarial: do código aberto às soluções de missão crítica
O ponto alto da nossa jornada de uma década no desenvolvimento de código aberto permitiu que a Forward Email atendesse não apenas desenvolvedores individuais, mas também grandes empresas e instituições educacionais que formam a espinha dorsal do próprio movimento de código aberto.
Estudos de caso em infraestrutura de e-mail de missão crítica
Nosso compromisso com a confiabilidade, privacidade e princípios de código aberto fez do Forward Email a escolha confiável para organizações com requisitos de e-mail exigentes:
-
Instituições educacionais: Conforme detalhado em nosso estudo de caso de encaminhamento de e-mail de ex-alunos, grandes universidades contam com nossa infraestrutura para manter conexões duradouras com centenas de milhares de ex-alunos por meio de serviços confiáveis de encaminhamento de e-mail.
-
Soluções Enterprise Linux: O Estudo de caso empresarial do Canonical Ubuntu Email demonstra como nossa abordagem de código aberto se alinha perfeitamente com as necessidades dos provedores Linux empresariais, oferecendo a eles a transparência e o controle que eles exigem.
-
Fundações de código aberto:Talvez o mais gratificante seja a nossa parceria com a Linux Foundation, conforme documentado no Estudo de caso de e-mail empresarial da Linux Foundation, onde nosso serviço potencializa a comunicação para a própria organização que administra o desenvolvimento do Linux.
Há uma bela simetria em como nossos pacotes de código aberto, mantidos com cuidado ao longo de muitos anos, nos permitiram construir um serviço de e-mail que agora oferece suporte às próprias comunidades e organizações que defendem o software de código aberto. Essa jornada de círculo completo — da contribuição de pacotes individuais ao fornecimento de infraestrutura de e-mail de nível empresarial para líderes de código aberto — representa a validação final de nossa abordagem ao desenvolvimento de software.
Uma década de código aberto: olhando para o futuro
Ao relembrar uma década de contribuições de código aberto e olhar para os próximos dez anos, ficamos cheios de gratidão pela comunidade que apoiou nosso trabalho e entusiasmados com o que está por vir.
Nossa jornada de contribuidores de pacotes individuais para mantenedores de uma infraestrutura de e-mail abrangente usada por grandes empresas e fundações de código aberto tem sido notável. É uma prova do poder do desenvolvimento de código aberto e do impacto que um software bem pensado e bem mantido pode ter no ecossistema mais amplo.
Nos próximos anos, estamos comprometidos em:
- Continuando a manter e melhorar nossos pacotes existentes, garantindo que continuem sendo ferramentas confiáveis para desenvolvedores em todo o mundo.
- Expandindo nossas contribuições para projetos de infraestrutura crítica, particularmente nos domínios de e-mail e segurança.
- Melhorando os recursos do Forward Email mantendo nosso compromisso com privacidade, segurança e transparência.
- Apoiando a próxima geração de colaboradores de código aberto por meio de mentoria, patrocínio e engajamento comunitário.
Acreditamos que o futuro do desenvolvimento de software é aberto, colaborativo e construído sobre uma base de confiança. Ao continuar a contribuir com pacotes de alta qualidade e focados em segurança para o ecossistema JavaScript, esperamos desempenhar um pequeno papel na construção desse futuro.
Obrigado a todos que usaram nossos pacotes, contribuíram para nossos projetos, relataram problemas ou simplesmente espalharam a palavra sobre nosso trabalho. Seu apoio tornou esta década de impacto possível, e estamos animados para ver o que podemos realizar juntos nos próximos dez anos.
[^1]: estatísticas de download do npm para cabin, abril de 2025 [^2]: estatísticas de download do npm para bson-objectid, fevereiro-março de 2025 [^3]: estatísticas de download do npm para url-regex-safe, abril de 2025 [^4]: contagem de estrelas do GitHub para forwardemail/forwardemail.net em abril de 2025 [^5]: estatísticas de download do npm para preview-email, abril de 2025 [^7]: estatísticas de download do npm para superagent, fevereiro-março de 2025 [^8]: estatísticas de download do npm para supertest, fevereiro-março de 2025 [^9]: estatísticas de download do npm para preview-email, fevereiro-março de 2025 [^10]: estatísticas de download do npm para cabin, fevereiro-março de 2025 [^11]: estatísticas de download do npm para url-regex-safe, fevereiro-março 2025 [^12]: estatísticas de download do npm para spamscanner, fevereiro-março de 2025 [^13]: padrões de download diários das estatísticas do npm, abril de 2025 [^14]: padrões de download semanais das estatísticas do npm, abril de 2025 [^15]: estatísticas de download do npm para nodemailer, abril de 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]: Com base em problemas do GitHub no repositório Upptime [^28]: Com base em problemas do GitHub no repositório Upptime [^29]: Com base em problemas do GitHub no repositório Upptime [^30]: Estatísticas de download do NPM para bree, fevereiro-março de 2025 [^31]: Com base em pull requests do GitHub para Upptime [^32]: Com base em pull requests do GitHub para Upptime [^34]: Estatísticas de download do NPM para koa, fevereiro-março de 2025 [^35]: Estatísticas de download do NPM para @koa/router, fevereiro-março de 2025 [^36]: Estatísticas de download do NPM para koa-router, fevereiro-março de 2025 [^37]: Estatísticas de download do NPM para url-regex, fevereiro-março de 2025 [^38]: Estatísticas de download do NPM para @breejs/later, fevereiro-março 2025 [^39]: estatísticas de download do npm para email-templates, fevereiro-março de 2025 [^40]: estatísticas de download do npm para get-paths, fevereiro-março de 2025 [^41]: estatísticas de download do npm para dotenv-parse-variables, fevereiro-março de 2025 [^42]: estatísticas de download do npm para @koa/multer, fevereiro-março de 2025