Una década de impacto: cómo nuestros paquetes npm alcanzaron mil millones de descargas y moldearon JavaScript

En el javascript y Nodo.js En el mundo, algunos paquetes son esenciales: se descargan millones de veces al día y alimentan aplicaciones en todo el mundo. Detrás de estas herramientas se encuentran desarrolladores centrados en la calidad del código abierto. Hoy mostramos cómo nuestro equipo ayuda a crear y mantener paquetes npm que se han convertido en piezas clave del ecosistema JavaScript.

Los pioneros que confían en nosotros: Isaac Z. Schlueter y Forward Email

Estamos orgullosos de tener Isaac Z. Schlueter (GitHub: isaacs) como usuario. Isaac creó sobre el nivel del mar y ayudó a construir Nodo.jsSu confianza en Forward Email demuestra nuestra prioridad en la calidad y la seguridad. Isaac utiliza Forward Email para varios dominios, incluido izs.me.

El impacto de Isaac en JavaScript es enorme. En 2009, fue uno de los primeros en ver el potencial de Node.js, trabajando con Ryan Dahl, quien creó la plataforma. Como dijo Isaac en un Entrevista con la revista IncrementEn medio de esta pequeña comunidad de personas que intentaban descubrir cómo implementar JavaScript del lado del servidor, Ryan Dahl presentó Node, que claramente era el enfoque correcto. Aporté mi granito de arena y me involucré mucho a mediados de 2009.

[!NOTA] Para aquellos interesados en la historia de Node.js, existen excelentes documentales disponibles que narran su desarrollo, incluyendo La historia de Node.js y 10 cosas que lamento sobre Node.js - Ryan DahlDe Ryan Dahl sitio web personal También contiene información valiosa sobre su obra.

De la creación de npm al liderazgo de Node.js

Isaac creó npm en septiembre de 2009, y la primera versión utilizable se lanzó a principios de 2010. Este gestor de paquetes satisfizo una necesidad clave en Node.js, permitiendo a los desarrolladores compartir y reutilizar código fácilmente. Según... Página de Wikipedia sobre Node.jsEn enero de 2010, se introdujo un gestor de paquetes para el entorno Node.js llamado npm. Este gestor permite a los programadores publicar y compartir paquetes de Node.js, junto con el código fuente correspondiente, y está diseñado para simplificar la instalación, actualización y desinstalación de paquetes.

Cuando Ryan Dahl dejó Node.js en enero de 2012, Isaac asumió el liderazgo del proyecto. Como se indica en su resumen, "Lideró el desarrollo de varias API fundamentales de Node.js, incluido el sistema de módulos CommonJS, las API del sistema de archivos y los flujos" y "Actuó como BDFL (dictador benévolo de por vida) del proyecto durante 2 años, asegurando una calidad cada vez mayor y un proceso de compilación confiable para las versiones v0.6 a v0.10 de Node.js".

Isaac guió a Node.js durante un período clave de crecimiento, estableciendo estándares que aún definen la plataforma. Posteriormente, en 2014, fundó npm, Inc. para dar soporte al registro de npm, que anteriormente gestionaba por su cuenta.

Agradecemos a Isaac sus importantes contribuciones a JavaScript y seguimos usando muchos de los paquetes que creó. Su trabajo ha transformado la forma en que creamos software y cómo millones de desarrolladores comparten código en todo el mundo.

El arquitecto detrás del código: el viaje de Nick Baugh

En el corazón de nuestro éxito en código abierto se encuentra Nick Baugh, fundador y propietario de Forward Email. Su experiencia en JavaScript abarca casi 20 años y ha influido en la creación de aplicaciones por parte de innumerables desarrolladores. Su trayectoria en código abierto demuestra tanto su habilidad técnica como su liderazgo comunitario.

Comité Técnico Express y Contribuciones Principales

La experiencia de Nick en marcos web le valió un lugar en el... Comité Técnico Express, donde colaboró con uno de los frameworks Node.js más utilizados. Nick ahora figura como miembro inactivo en... Página de la comunidad Express.

[!IMPORTANTE] Express fue creado originalmente por TJ Holowaychuk, un prolífico colaborador de código abierto que ha dado forma a gran parte del ecosistema Node.js. Agradecemos el trabajo fundacional de TJ y respetamos su... decisión de tomar un descanso de sus extensas contribuciones de código abierto.

Como miembro de la Comité Técnico ExpressNick mostró una gran atención a los detalles en cuestiones como aclarar req.originalUrl Documentación y solución de problemas en el manejo de formularios multiparte.

Contribuciones al marco Koa

El trabajo de Nick con el Marco Koa—una alternativa moderna y ligera a Express, también creada por TJ Holowaychuk— demuestra aún más su compromiso con mejores herramientas de desarrollo web. Sus contribuciones a Koa incluyen la gestión de incidencias y código mediante solicitudes de extracción, la gestión de errores, la gestión de tipos de contenido y mejoras en la documentación.

Su trabajo tanto en Express como en Koa le brinda una visión única del desarrollo web con Node.js, lo que ayuda a nuestro equipo a crear paquetes que funcionan bien con múltiples ecosistemas de marco.

De colaborador individual a líder organizacional

Lo que comenzó como ayuda a proyectos existentes se convirtió en la creación y el mantenimiento de ecosistemas de paquetes completos. Nick fundó varias organizaciones de GitHub, incluyendo Cabina, Escáner de spam, Redirigir correo, Dejar, y Bree—cada uno resuelve necesidades específicas en la comunidad de JavaScript.

Este cambio de colaborador a líder demuestra la visión de Nick de un software bien diseñado que resuelve problemas reales. Al organizar paquetes relacionados en organizaciones específicas de GitHub, ha creado ecosistemas de herramientas que funcionan en conjunto, manteniendo su modularidad y flexibilidad para la comunidad de desarrolladores en general.

Nuestras organizaciones de GitHub: ecosistemas de innovación

Organizamos nuestro trabajo de código abierto en torno a organizaciones de GitHub especializadas, cada una de las cuales resuelve necesidades específicas en JavaScript. Esta estructura crea familias de paquetes cohesivas que funcionan bien juntas y, al mismo tiempo, mantienen su modularidad.

Cabina: Registro estructurado para aplicaciones modernas

El Organización de la cabina es nuestra versión de registro de aplicaciones simple y potente. El principal cabin El paquete cuenta con casi 900 estrellas en GitHub y más de 100 000 descargas semanales[^1]. Cabin ofrece un registro estructurado compatible con servicios populares como Sentry, LogDNA y Papertrail.

Lo que hace especial a Cabin es su ingenioso sistema de API y plugins. Paquetes compatibles como axe para middleware Express y parse-request Para el análisis de solicitudes HTTP mostramos nuestro compromiso con soluciones completas en lugar de herramientas aisladas.

El bson-objectid El paquete merece una mención especial, con más de 1,7 millones de descargas en tan solo dos meses[^2]. Esta ligera implementación de ObjectID de MongoDB se ha convertido en la opción predilecta para los desarrolladores que necesitan identificadores sin dependencias completas de MongoDB.

Escáner de spam: cómo combatir el abuso del correo electrónico

El Organización del escáner de spam demuestra nuestro compromiso con la solución de problemas reales. El principal spamscanner El paquete proporciona detección avanzada de correo no deseado, pero es el url-regex-safe paquete que ha tenido una adopción asombrosa.

Con más de 1,2 millones de descargas en dos meses[^3], url-regex-safe Corrige problemas críticos de seguridad en otras expresiones regulares de detección de URL. Este paquete muestra nuestro enfoque hacia el código abierto: encontrar un problema común (en este caso, Rehacer vulnerabilidades en la validación de URL), creando una solución sólida y manteniéndola cuidadosamente.

Bree: Programación moderna de tareas con subprocesos de trabajo

El Organización Bree es nuestra respuesta a un desafío común de Node.js: la programación confiable de trabajos. El principal bree El paquete, con más de 3100 estrellas de GitHub, proporciona un programador de trabajos moderno que utiliza subprocesos de trabajo Node.js para un mejor rendimiento y confiabilidad.

[!NOTA] Bree se creó después de que ayudáramos a mantener Orden del díaAplicando las lecciones aprendidas para desarrollar un mejor programador de tareas. Nuestras contribuciones a la Agenda nos ayudaron a encontrar maneras de mejorar la programación de tareas.

¿Qué hace que Bree sea diferente de otros programadores como Agenda?

  • Sin dependencias externas:A diferencia de Agenda, que necesita MongoDB, Bree no requiere Redis o MongoDB para administrar el estado del trabajo.
  • Hilos de trabajo:Bree utiliza subprocesos de trabajo Node.js para procesos aislados, lo que proporciona un mejor aislamiento y rendimiento.
  • API simpleBree ofrece un control detallado con simplicidad, lo que facilita la implementación de necesidades de programación complejas.
  • Soporte integrado:Cosas como recarga elegante, trabajos cron, fechas y horas intuitivas se incluyen de forma predeterminada.

Bree es una parte clave de forwardemail.net, gestionando tareas críticas en segundo plano como el procesamiento de correo electrónico, la limpieza y el mantenimiento programado. El uso de Bree en Forward Email demuestra nuestro compromiso con el uso de nuestras propias herramientas en producción, garantizando que cumplan con altos estándares de fiabilidad.

También utilizamos y apreciamos otros excelentes paquetes de subprocesos de trabajo como piscina y clientes HTTP como oncePiscina, al igual que Bree, utiliza hilos de trabajo de Node.js para un procesamiento eficiente de tareas. Agradecemos Matthew HillMatteo, quien mantiene tanto undici como piscina, por sus importantes contribuciones a Node.js. Forma parte del Comité Directivo Técnico de Node.js y ha mejorado significativamente las capacidades del cliente HTTP en Node.js.

Reenvío de correo electrónico: Infraestructura de correo electrónico de código abierto

Nuestro proyecto más ambicioso es Redirigir correo, un servicio de correo electrónico de código abierto que ofrece reenvío de correo electrónico, almacenamiento y servicios de API. El repositorio principal cuenta con más de 1100 estrellas en GitHub[^4], lo que demuestra el aprecio de la comunidad por esta alternativa a los servicios de correo electrónico propietarios.

El preview-email El paquete de esta organización, con más de 2,5 millones de descargas en dos meses[^5], se ha convertido en una herramienta esencial para los desarrolladores que trabajan con plantillas de correo electrónico. Al ofrecer una forma sencilla de previsualizar los correos electrónicos durante el desarrollo, soluciona un problema común en la creación de aplicaciones compatibles con correo electrónico.

Lad: Utilidades y herramientas esenciales de Koa

El Organización de muchachos Proporciona una colección de utilidades y herramientas esenciales, enfocadas principalmente en mejorar el ecosistema del framework Koa. Estos paquetes resuelven desafíos comunes en el desarrollo web y están diseñados para funcionar a la perfección en conjunto, manteniendo su utilidad independiente.

koa-better-error-handler: Manejo de errores mejorado para Koa

koa-better-error-handler Ofrece una mejor solución de gestión de errores para aplicaciones Koa. Con más de 50 estrellas en GitHub, este paquete... ctx.throw producir mensajes de error fáciles de usar y al mismo tiempo abordar varias limitaciones del controlador de errores integrado de Koa:

  • Detecta y maneja adecuadamente errores de DNS de Node.js, errores de Mongoose y errores de Redis
  • Usos Auge para crear respuestas de error consistentes y bien formateadas
  • Conserva los encabezados (a diferencia del controlador integrado de Koa)
  • Mantiene códigos de estado apropiados en lugar de tener como valor predeterminado 500
  • Admite mensajes flash y conservación de sesiones.
  • Proporciona listas de errores HTML para errores de validación.
  • Admite múltiples tipos de respuesta (HTML, JSON y texto sin formato)

Este paquete es particularmente valioso cuando se usa junto con koa-404-handler para la gestión integral de errores en aplicaciones Koa.

Pasaporte: Autenticación para Lad

@ladjs/passport Amplía el popular middleware de autenticación Passport.js con mejoras específicas para aplicaciones web modernas. Este paquete admite múltiples estrategias de autenticación de forma predeterminada:

  • Autenticación local con correo electrónico
  • Iniciar sesión con Apple
  • Autenticación de GitHub
  • Autenticación de Google
  • Autenticación con contraseña de un solo uso (OTP)

El paquete es altamente personalizable, lo que permite a los desarrolladores ajustar los nombres de los campos y las frases según los requisitos de su aplicación. Está diseñado para integrarse a la perfección con Mongoose para la gestión de usuarios, lo que lo convierte en una solución ideal para aplicaciones basadas en Koa que requieren una autenticación robusta.

elegante: Cierre elegante de la aplicación

@ladjs/graceful Resuelve el desafío crítico de cerrar aplicaciones Node.js correctamente. Con más de 70 estrellas en GitHub, este paquete garantiza que su aplicación pueda cerrarse correctamente sin perder datos ni dejar conexiones bloqueadas. Sus características principales incluyen:

  • Soporte para cerrar con elegancia servidores HTTP (Express/Koa/Fastify)
  • Cierre limpio de conexiones de bases de datos (MongoDB/Mongoose)
  • Cierre correcto de clientes de Redis
  • Manejo de programadores de trabajos de Bree
  • Compatibilidad con controladores de apagado personalizados
  • Configuraciones de tiempo de espera configurables
  • Integración con sistemas de registro

Este paquete es esencial para aplicaciones de producción donde los apagados inesperados podrían provocar la pérdida o corrupción de datos. Al implementar procedimientos de apagado adecuados, @ladjs/graceful Ayuda a garantizar la confiabilidad y estabilidad de su aplicación.

Upptime: Monitoreo del tiempo de actividad de código abierto

El Organización del tiempo de actividad representa nuestro compromiso con la monitorización transparente y de código abierto. El principal upptime El repositorio cuenta con más de 13 000 estrellas en GitHub, lo que lo convierte en uno de los proyectos más populares a los que contribuimos. Upptime ofrece un monitor de actividad y una página de estado basados en GitHub que funciona completamente sin servidor.

Usamos Upptime para nuestra propia página de estado en https://status.forwardemail.net con el código fuente disponible en https://github.com/forwardemail/status.forwardemail.net.

Lo que hace especial a Upptime es su arquitectura:

  • 100% de código abierto:Cada componente es completamente de código abierto y personalizable.
  • Desarrollado por GitHub:Aprovecha las acciones, los problemas y las páginas de GitHub para una solución de monitoreo sin servidor.
  • No se requiere servidorA diferencia de las herramientas de monitoreo tradicionales, Upptime no requiere que usted ejecute o mantenga un servidor.
  • Página de estado automático:Genera una hermosa página de estado que puede alojarse en GitHub Pages.
  • Notificaciones potentes:Se integra con varios canales de notificación, incluidos correo electrónico, SMS y Slack.

Para mejorar la experiencia de nuestros usuarios, hemos integrado @octokit/core en el código base de forwardemail.net para mostrar actualizaciones de estado e incidentes en tiempo real directamente en nuestro sitio web. Esta integración proporciona total transparencia a nuestros usuarios en caso de cualquier problema en toda nuestra infraestructura (sitio web, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree, etc.) con notificaciones instantáneas, cambios en el icono de la insignia, colores de advertencia y más.

La biblioteca @octokit/core nos permite obtener datos en tiempo real de nuestro repositorio Upptime en GitHub, procesarlos y mostrarlos de forma intuitiva. Cuando un servicio sufre una interrupción o un rendimiento reducido, los usuarios reciben una notificación inmediata mediante indicadores visuales sin tener que salir de la aplicación principal. Esta integración fluida garantiza que nuestros usuarios siempre tengan información actualizada sobre el estado de nuestro sistema, lo que mejora la transparencia y la confianza.

Cientos de organizaciones han adoptado Upptime que buscan una forma transparente y fiable de supervisar sus servicios y comunicar su estado a los usuarios. El éxito del proyecto demuestra el poder de desarrollar herramientas que aprovechan la infraestructura existente (en este caso, GitHub) para resolver problemas comunes de nuevas maneras.

Nuestras contribuciones al ecosistema de correo electrónico de Forward

Si bien nuestros paquetes de código abierto son utilizados por desarrolladores de todo el mundo, también constituyen la base de nuestro propio servicio de reenvío de correo electrónico. Esta doble función —como creadores y usuarios de estas herramientas— nos brinda una perspectiva única sobre su aplicación práctica e impulsa la mejora continua.

De los paquetes a la producción

El proceso de transición de paquetes individuales a un sistema de producción cohesivo implica una cuidadosa integración y ampliación. Para el reenvío de correo electrónico, este proceso incluye:

  • Extensiones personalizadas:Building Forward Email: extensiones específicas para nuestros paquetes de código abierto que abordan nuestros requisitos únicos.
  • Patrones de integración:Desarrollar patrones sobre cómo estos paquetes interactúan en un entorno de producción.
  • Optimizaciones de rendimiento:Identificar y abordar los cuellos de botella de rendimiento que solo surgen a gran escala.
  • Fortalecimiento de la seguridad:Añadir capas de seguridad adicionales específicas para el manejo del correo electrónico y la protección de datos del usuario.

Este trabajo representa miles de horas de desarrollo más allá de los propios paquetes principales, lo que da como resultado un servicio de correo electrónico sólido y seguro que aprovecha lo mejor de nuestras contribuciones de código abierto.

El bucle de retroalimentación

Quizás el aspecto más valioso de usar nuestros propios paquetes en producción es el ciclo de retroalimentación que se crea. Cuando encontramos limitaciones o casos extremos en Forward Email, no solo los solucionamos localmente, sino que mejoramos los paquetes subyacentes, lo que beneficia tanto a nuestro servicio como a la comunidad en general.

Este enfoque ha dado lugar a numerosas mejoras:

  • El elegante cierre de Bree:La necesidad de Forward Email de implementaciones con tiempo de inactividad cero condujo a capacidades mejoradas de apagado elegante en Bree.
  • Reconocimiento de patrones del escáner de spamLos patrones de spam del mundo real encontrados en Forward Email han informado los algoritmos de detección de Spam Scanner.
  • Optimizaciones del rendimiento de la cabina:El registro de gran volumen en producción reveló oportunidades de optimización en Cabin que benefician a todos los usuarios.

Al mantener este círculo virtuoso entre nuestro trabajo de código abierto y el servicio de producción, garantizamos que nuestros paquetes sigan siendo soluciones prácticas y probadas en batalla en lugar de implementaciones teóricas.

Principios básicos de Forward Email: una base para la excelencia

Forward Email está diseñado según un conjunto de principios fundamentales que guían todas nuestras decisiones de desarrollo. Estos principios, detallados en nuestra sitio web, garantizar que nuestro servicio siga siendo amigable para los desarrolladores, seguro y enfocado en la privacidad del usuario.

Siempre amigable para los desarrolladores, centrado en la seguridad y transparente

Nuestro principio fundamental es crear software fácil de usar para desarrolladores, manteniendo al mismo tiempo los más altos estándares de seguridad y privacidad. Creemos que la excelencia técnica nunca debe ir en detrimento de la usabilidad, y que la transparencia genera confianza en nuestra comunidad.

Este principio se refleja en nuestra documentación detallada, mensajes de error claros y una comunicación abierta tanto sobre los éxitos como sobre los desafíos. Al hacer que todo nuestro código base sea de código abierto, invitamos al escrutinio y la colaboración, lo que fortalece tanto nuestro software como el ecosistema en general.

Adhesión a principios de desarrollo de software probados a lo largo del tiempo

Seguimos varios principios de desarrollo de software establecidos que han demostrado su valor durante décadas:

  • MVC:Separando preocupaciones a través del patrón Modelo-Vista-Controlador
  • Filosofía Unix:Creación de componentes modulares que hacen bien una cosa
  • KISSManteniéndolo simple y directo
  • DRY:No te repitas, promoviendo la reutilización del código
  • YAGNI:No lo vas a necesitar, evitando la optimización prematura
  • Doce factores:Seguir las mejores prácticas para crear aplicaciones modernas y escalables
  • La navaja de Occam:Elegir la solución más sencilla que cumpla con los requisitos
  • Pruebas de perro:Utilizando ampliamente nuestros propios productos

Estos principios no son solo conceptos teóricos, sino que están arraigados en nuestras prácticas diarias de desarrollo. Por ejemplo, nuestra adhesión a la filosofía Unix se evidencia en cómo hemos estructurado nuestros paquetes npm: módulos pequeños y específicos que pueden combinarse para resolver problemas complejos.

Dirigido al desarrollador novato y con recursos propios

Nos dirigimos específicamente a los emprendedores con pocos recursos y con iniciativa propia. ramen-rentable Desarrollador. Este enfoque influye en todo, desde nuestro modelo de precios hasta nuestras decisiones técnicas. Entendemos los desafíos de desarrollar productos con recursos limitados porque hemos pasado por ello.

Este principio es especialmente importante en nuestra estrategia de código abierto. Creamos y mantenemos paquetes que resuelven problemas reales para desarrolladores sin presupuestos empresariales, poniendo herramientas potentes al alcance de todos, independientemente de sus recursos.

Principios en la práctica: el código base de reenvío de correo electrónico

Estos principios son claramente visibles en el código base de Forward Email. Nuestro archivo package.json revela una cuidadosa selección de dependencias, cada una seleccionada para alinearse con nuestros valores fundamentales:

  • Paquetes centrados en la seguridad como mailauth para la autenticación de correo electrónico
  • Herramientas fáciles de usar para desarrolladores como preview-email para una depuración más sencilla
  • Componentes modulares como los diversos p-* servicios públicos de Sindre Sorhus

Al seguir estos principios de manera consistente a lo largo del tiempo, hemos creado un servicio en el que los desarrolladores pueden confiar su infraestructura de correo electrónico: seguro, confiable y alineado con los valores de la comunidad de código abierto.

Privacidad por diseño

La privacidad no es una idea de último momento ni una característica de marketing para Forward Email: es un principio de diseño fundamental que informa cada aspecto de nuestro servicio y código:

  • Cifrado de acceso ceroHemos implementado sistemas que hacen técnicamente imposible para nosotros leer los correos electrónicos de los usuarios.
  • Recopilación mínima de datos:Recopilamos únicamente los datos necesarios para prestar nuestro servicio, nada más.
  • Políticas transparentesNuestra política de privacidad está escrita en un lenguaje claro y comprensible, sin jerga legal.
  • Verificación de código abierto:Nuestra base de código fuente abierta permite a los investigadores de seguridad verificar nuestras afirmaciones de privacidad.

Este compromiso se extiende a nuestros paquetes de código abierto, que están diseñados con las mejores prácticas de seguridad y privacidad incorporadas desde cero.

Código abierto sostenible

Creemos que el software de código abierto necesita modelos sostenibles para prosperar a largo plazo. Nuestro enfoque incluye:

  • Soporte comercial:Ofrecemos soporte y servicios premium en torno a nuestras herramientas de código abierto.
  • Licencias equilibradas:Utilizar licencias que protejan tanto las libertades de los usuarios como la sostenibilidad del proyecto.
  • Participación comunitaria:Involucrarse activamente con los colaboradores para construir una comunidad de apoyo.
  • Hojas de ruta transparentes:Compartimos nuestros planes de desarrollo para permitir que los usuarios planifiquen en consecuencia.

Al centrarnos en la sostenibilidad, garantizamos que nuestras contribuciones de código abierto puedan seguir creciendo y mejorando con el tiempo en lugar de caer en el olvido.

Los números no mienten: nuestras asombrosas estadísticas de descarga de npm

Cuando hablamos del impacto del software de código abierto, las estadísticas de descargas ofrecen una medida tangible de su adopción y confianza. Muchos de los paquetes que ayudamos a mantener han alcanzado una escala que pocos proyectos de código abierto alcanzan, con descargas combinadas que se cuentan por miles de millones.

Top npm Packages by Downloads

[!IMPORTANTE] Si bien nos enorgullece ayudar a mantener varios paquetes con gran demanda en el ecosistema de JavaScript, queremos reconocer que muchos de estos paquetes fueron creados originalmente por otros desarrolladores talentosos. Paquetes como superagent y supertest fueron creados originalmente por TJ Holowaychuk, cuyas prolíficas contribuciones al código abierto han sido fundamentales para dar forma al ecosistema de Node.js.

Una vista aérea de nuestro impacto

Solo en el período de dos meses de febrero a marzo de 2025, los principales paquetes a los que contribuimos y ayudamos a mantener registraron cifras de descargas asombrosas:

[!NOTA] Varios otros paquetes que ayudamos a mantener, pero que no creamos, tienen conteos de descarga aún mayores, incluidos form-data (más de 738 millones de descargas) toidentifier (más de 309 millones de descargas) stackframe (más de 116 millones de descargas) y error-stack-parser (Más de 113 millones de descargas). Nos honra contribuir a estos paquetes, respetando el trabajo de sus autores originales.

Estas no son solo cifras impresionantes, sino que representan a desarrolladores reales que resuelven problemas reales con código que ayudamos a mantener. Cada descarga es un ejemplo de cómo estos paquetes han ayudado a alguien a crear algo significativo, desde proyectos de aficionados hasta aplicaciones empresariales utilizadas por millones de personas.

Package Categories Distribution

Impacto diario a escala

Los patrones diarios de descarga revelan un uso constante y de alto volumen, con picos que alcanzan millones de descargas al día[^13]. Esta constancia demuestra la estabilidad y fiabilidad de estos paquetes: los desarrolladores no solo los prueban, sino que los integran en sus flujos de trabajo principales y dependen de ellos a diario.

Los patrones de descarga semanales muestran cifras aún más impresionantes, que rondan constantemente las decenas de millones de descargas semanales[^14]. Esto representa una enorme huella en el ecosistema de JavaScript, ya que estos paquetes se ejecutan en entornos de producción de todo el mundo.

Más allá de los números crudos

Si bien las estadísticas de descargas son impresionantes por sí solas, revelan una historia más profunda sobre la confianza que la comunidad deposita en estos paquetes. Mantener los paquetes a esta escala requiere un compromiso inquebrantable con:

  • Compatibilidad con versiones anterioresLos cambios deben considerarse cuidadosamente para evitar romper las implementaciones existentes.
  • SeguridadDado que millones de aplicaciones dependen de estos paquetes, las vulnerabilidades de seguridad podrían tener consecuencias de gran alcance.
  • ActuaciónA esta escala, incluso pequeñas mejoras en el rendimiento pueden tener importantes beneficios agregados.
  • DocumentaciónUna documentación clara y completa es esencial para los paquetes utilizados por desarrolladores de todos los niveles de experiencia.

El crecimiento constante en el número de descargas a lo largo del tiempo refleja el éxito en el cumplimiento de estos compromisos, generando confianza con la comunidad de desarrolladores a través de paquetes confiables y bien mantenidos.

Apoyando el ecosistema: nuestros patrocinios de código abierto

[!TIP] La sostenibilidad del código abierto no se trata solo de contribuir con código, sino también de apoyar a los desarrolladores que mantienen la infraestructura crítica.

Además de nuestras contribuciones directas al ecosistema JavaScript, nos enorgullece patrocinar a destacados colaboradores de Node.js, cuyo trabajo constituye la base de muchas aplicaciones modernas. Nuestros patrocinios incluyen:

Andris Reinman: pionero de la infraestructura de correo electrónico

Andris Reinman es el creador de Nodemailer, la biblioteca de envío de correo electrónico más popular para Node.js, con más de 14 millones de descargas semanales[^15]. Su trabajo se extiende a otros componentes críticos de la infraestructura de correo electrónico, como Servidor SMTP, Analizador de correo, y Pato salvaje.

Nuestro patrocinio ayuda a garantizar el mantenimiento y desarrollo continuos de estas herramientas esenciales que potencian la comunicación por correo electrónico para innumerables aplicaciones Node.js, incluido nuestro propio servicio de reenvío de correo electrónico.

Sindre Sorhus: cerebro del paquete de utilidades

Sindre Sorhus Es uno de los colaboradores de código abierto más prolíficos del ecosistema JavaScript, con más de 1000 paquetes npm a su nombre. Sus utilidades, como p-mapa, p-retry, y es-flujo son bloques de construcción fundamentales que se utilizan en todo el ecosistema Node.js.

Al patrocinar el trabajo de Sindre, ayudamos a sostener el desarrollo de estas utilidades críticas que hacen que el desarrollo de JavaScript sea más eficiente y confiable.

Estos patrocinios reflejan nuestro compromiso con el ecosistema de código abierto en general. Reconocemos que nuestro éxito se basa en las bases establecidas por estos y otros colaboradores, y nos dedicamos a garantizar la sostenibilidad de todo el ecosistema.

Descubrimiento de vulnerabilidades de seguridad en el ecosistema de JavaScript

Nuestro compromiso con el código abierto va más allá del desarrollo de funcionalidades e incluye la identificación y solución de vulnerabilidades de seguridad que podrían afectar a millones de desarrolladores. Varias de nuestras contribuciones más significativas al ecosistema JavaScript se han centrado en el ámbito de la seguridad.

El rescate del Koa-Router

En febrero de 2019, Nick identificó un problema crítico con el mantenimiento del popular paquete koa-router. Mientras... reportado en Hacker NewsEl paquete había sido abandonado por su mantenedor original, dejando vulnerabilidades de seguridad sin abordar y a la comunidad sin actualizaciones.

[!ADVERTENCIA] Los paquetes abandonados con vulnerabilidades de seguridad representan riesgos significativos para todo el ecosistema, especialmente cuando se descargan millones de veces por semana.

En respuesta, Nick creó @koa/enrutador y ayudó a alertar a la comunidad sobre la situación. Desde entonces, ha mantenido este paquete crítico, garantizando que los usuarios de Koa cuenten con una solución de enrutamiento segura y bien mantenida.

Abordar las vulnerabilidades de ReDoS

En 2020, Nick identificó y abordó un problema crítico Denegación de servicio por expresión regular (ReDoS) vulnerabilidad en el ampliamente utilizado url-regex paquete. Esta vulnerabilidad (SNYK-JS-URLREGEX-569472) podría permitir a los atacantes provocar una denegación de servicio al proporcionar una entrada especialmente diseñada que provocara un retroceso catastrófico en la expresión regular.

En lugar de simplemente parchar el paquete existente, Nick creó url-regex-safe, una implementación completamente reescrita que aborda la vulnerabilidad manteniendo la compatibilidad con la API original. También publicó un entrada de blog completa explicando la vulnerabilidad y cómo mitigarla.

Este trabajo muestra nuestro enfoque hacia la seguridad: no sólo solucionar problemas sino educar a la comunidad y brindar alternativas sólidas que eviten problemas similares en el futuro.

Abogando por la seguridad de Node.js y Chromium

Nick también ha participado activamente en la promoción de mejoras de seguridad en el ecosistema en general. En agosto de 2020, identificó un problema de seguridad significativo en Node.js relacionado con el manejo de encabezados HTTP, el cual se reportó en El Registro.

Este problema, originado por un parche en Chromium, podría permitir a los atacantes eludir las medidas de seguridad. La defensa de Nick contribuyó a que el problema se abordara con prontitud, protegiendo así millones de aplicaciones Node.js de posibles ataques.

Asegurando la infraestructura de npm

Más tarde ese mismo mes, Nick identificó otro problema crítico de seguridad, esta vez en la infraestructura de correo electrónico de npm. Como se informó en El Registronpm no estaba implementando correctamente los protocolos de autenticación de correo electrónico DMARC, SPF y DKIM, lo que potencialmente permitía a los atacantes enviar correos electrónicos de phishing que parecían provenir de npm.

El informe de Nick condujo a mejoras en la postura de seguridad del correo electrónico de npm, protegiendo a los millones de desarrolladores que dependen de npm para la gestión de paquetes de posibles ataques de phishing.

Nuestras contribuciones al ecosistema de correo electrónico de Forward

Forward Email se basa en varios proyectos críticos de código abierto, como Nodemailer, WildDuck y mailauth. Nuestro equipo ha realizado contribuciones significativas a estos proyectos, ayudando a identificar y solucionar problemas graves que afectan la entrega y la seguridad del correo electrónico.

Mejorando la funcionalidad principal de Nodemailer

Nodemailer es la columna vertebral del envío de correo electrónico en Node.js, y nuestras contribuciones han ayudado a hacerlo más sólido:

  • Mejoras del servidor SMTP:Hemos corregido errores de análisis, problemas de manejo de transmisiones y problemas de configuración de TLS en el componente del servidor SMTP[^16][^17].
  • Mejoras del analizador de correo:Hemos abordado errores de decodificación de secuencias de caracteres y abordamos problemas del analizador que podrían causar fallas en el procesamiento del correo electrónico[^18][^19].

Estas contribuciones garantizan que Nodemailer siga siendo una base confiable para el procesamiento de correo electrónico en aplicaciones Node.js, incluido Forward Email.

Autenticación avanzada del correo electrónico con Mailauth

Autenticación de correo Proporciona una funcionalidad crítica de autenticación de correo electrónico y nuestras contribuciones han mejorado significativamente sus capacidades:

  • Mejoras en la verificación de DKIMDescubrimos e informamos que X/Twitter tenía problemas de caché de DNS que causaban fallas en DKIM para sus mensajes salientes y lo informamos en Hacker One[^20].
  • Mejoras de DMARC y ARC:Hemos solucionado problemas con la verificación DMARC y ARC que podían generar resultados de autenticación incorrectos[^21][^22].
  • Optimizaciones de rendimiento:Hemos contribuido con optimizaciones que mejoran el rendimiento de los procesos de autenticación de correo electrónico[^23][^24][^25][^26].

Estas mejoras ayudan a garantizar que la autenticación del correo electrónico sea precisa y confiable, protegiendo a los usuarios de ataques de phishing y suplantación de identidad.

Mejoras clave en el tiempo de actividad

Nuestras contribuciones a Upptime incluyen:

  • Monitoreo de certificados SSLAgregamos funcionalidad para monitorear la expiración del certificado SSL, evitando tiempos de inactividad inesperados debido a certificados vencidos[^27].
  • Compatibilidad con varios números SMS:Implementamos soporte para alertar a varios miembros del equipo a través de SMS cuando ocurren incidentes, mejorando los tiempos de respuesta[^28].
  • Correcciones de comprobación de IPv6:Solucionamos problemas con las comprobaciones de conectividad IPv6, lo que garantiza una monitorización más precisa en entornos de red modernos[^29].
  • Compatibilidad con modo oscuro/claro:Agregamos soporte para temas para mejorar la experiencia del usuario en las páginas de estado[^31].
  • Mejor soporte para TCP-Ping:Hemos mejorado la funcionalidad de ping TCP para proporcionar pruebas de conexión más confiables[^32].

Estas mejoras no solo benefician el monitoreo del estado de Forward Email, sino que están disponibles para toda la comunidad de usuarios de Upptime, lo que demuestra nuestro compromiso con la mejora de las herramientas de las que dependemos.

El pegamento que lo mantiene todo unido: código personalizado a escala

Si bien nuestros paquetes npm y nuestras contribuciones a proyectos existentes son significativos, es el código personalizado que integra estos componentes lo que realmente demuestra nuestra experiencia técnica. El código base de Forward Email representa una década de esfuerzo de desarrollo, que se remonta a 2017, cuando el proyecto comenzó como reenvío de correo electrónico gratuito antes de fusionarse en un monorepositorio.

Un esfuerzo masivo de desarrollo

La escala de este código de integración personalizado es impresionante:

  • Contribuciones totales:Más de 3.217 confirmaciones
  • Tamaño de la base de código:Más de 421.545 líneas de código en archivos JavaScript, Pug, CSS y JSON[^33]

Esto representa miles de horas de trabajo de desarrollo, sesiones de depuración y optimizaciones de rendimiento. Es la clave que transforma cada paquete en un servicio coherente y fiable, utilizado por miles de clientes a diario.

Integración de dependencias centrales

El código base de Forward Email integra numerosas dependencias en un todo integrado:

  • Procesamiento de correo electrónico:Integra Nodemailer para enviar, servidor SMTP para recibir y Mailparser para analizar
  • Autenticación:Utiliza Mailauth para la verificación de DKIM, SPF, DMARC y ARC
  • Resolución de DNS: Aprovecha Tangerine para DNS sobre HTTPS con almacenamiento en caché global
  • Conexión MX:Utiliza mx-connect con integración de Tangerine para conexiones confiables con el servidor de correo
  • Programación de trabajos:Emplea Bree para un procesamiento confiable de tareas en segundo plano con subprocesos de trabajo
  • Plantillas:Emplea plantillas de correo electrónico para reutilizar hojas de estilo del sitio web en las comunicaciones con los clientes.
  • Almacenamiento de correo electrónico:Implementa buzones de correo SQLite encriptados individualmente utilizando better-sqlite3-multiple-ciphers con encriptación ChaCha20-Poly1305 para privacidad cuántica segura, asegurando un aislamiento completo entre usuarios y que solo el usuario tenga acceso a su buzón.

Cada una de estas integraciones requiere una cuidadosa consideración de los casos extremos, las implicaciones de rendimiento y los problemas de seguridad. El resultado es un sistema robusto que gestiona millones de transacciones de correo electrónico de forma fiable. Nuestra implementación de SQLite también utiliza msgpackr para una serialización binaria eficiente y WebSockets (vía ws) para actualizaciones de estado en tiempo real en toda nuestra infraestructura.

Infraestructura DNS con Tangerine y mx-connect

Un componente crítico de la infraestructura de Forward Email es nuestro sistema de resolución de DNS, construido alrededor de dos paquetes clave:

  • MandarinaNuestra implementación de DNS sobre HTTPS de Node.js proporciona un reemplazo directo para el solucionador de DNS estándar, con reintentos integrados, tiempos de espera, rotación inteligente de servidores y soporte de almacenamiento en caché.

  • conexión mx:Este paquete establece conexiones TCP a servidores MX, tomando un dominio de destino o dirección de correo electrónico, resolviendo servidores MX apropiados y conectándose a ellos en orden de prioridad.

Hemos integrado Tangerine con mx-connect a través de solicitud de extracción n.° 4, lo que garantiza el DNS de la capa de aplicación sobre solicitudes HTTP en todo el reenvío de correo electrónico. Esto proporciona almacenamiento en caché global para DNS a escala con consistencia 1:1 en cualquier región, aplicación o proceso, fundamental para una entrega de correo electrónico confiable en un sistema distribuido.

Impacto empresarial: del código abierto a las soluciones de misión crítica

La culminación de nuestro viaje de una década en el desarrollo de código abierto ha permitido a Forward Email servir no sólo a desarrolladores individuales, sino también a grandes empresas e instituciones educativas que forman la columna vertebral del propio movimiento de código abierto.

Estudios de caso en infraestructura de correo electrónico de misión crítica

Nuestro compromiso con la confiabilidad, la privacidad y los principios de código abierto ha hecho de Forward Email la opción confiable para organizaciones con requisitos de correo electrónico exigentes:

Existe una hermosa simetría en cómo nuestros paquetes de código abierto, mantenidos con esmero durante muchos años, nos han permitido crear un servicio de correo electrónico que ahora respalda a las mismas comunidades y organizaciones que defienden el software de código abierto. Este ciclo completo —desde la contribución de paquetes individuales hasta el desarrollo de una infraestructura de correo electrónico de nivel empresarial para líderes de código abierto— representa la validación definitiva de nuestro enfoque en el desarrollo de software.

Una década de código abierto: mirando hacia el futuro

Al mirar atrás a una década de contribuciones de código abierto y hacia los próximos diez años, estamos llenos de gratitud por la comunidad que ha apoyado nuestro trabajo y entusiasmo por lo que está por venir.

Nuestra trayectoria, desde contribuidores individuales de paquetes hasta mantenedores de una infraestructura de correo electrónico integral utilizada por grandes empresas y fundaciones de código abierto, ha sido notable. Es un testimonio del poder del desarrollo de código abierto y del impacto que un software bien pensado y bien mantenido puede tener en el ecosistema en general.

En los próximos años, nos comprometemos a:

  • Continuamos manteniendo y mejorando nuestros paquetes existentes, garantizando que sigan siendo herramientas confiables para los desarrolladores de todo el mundo.
  • Ampliando nuestras contribuciones a proyectos de infraestructura crítica, particularmente en los dominios del correo electrónico y la seguridad.
  • Mejorando las capacidades de Forward Email manteniendo nuestro compromiso con la privacidad, seguridad y transparencia.
  • Apoyando a la próxima generación de colaboradores de código abierto A través de tutoría, patrocinio y participación comunitaria.

Creemos que el futuro del desarrollo de software es abierto, colaborativo y se basa en la confianza. Al seguir aportando paquetes de alta calidad y centrados en la seguridad al ecosistema JavaScript, esperamos contribuir a construir ese futuro.

Gracias a todos los que han usado nuestros paquetes, contribuido a nuestros proyectos, reportado problemas o simplemente difundido nuestro trabajo. Su apoyo ha hecho posible esta década de impacto, y nos entusiasma ver lo que podemos lograr juntos en los próximos diez años.

[^1]: Estadísticas de descargas de npm para Cabin, abril de 2025 [^2]: Estadísticas de descargas de npm para bson-objectid, febrero-marzo de 2025 [^3]: Estadísticas de descargas de npm para url-regex-safe, abril de 2025 [^4]: Número de estrellas de GitHub para forwardemail/forwardemail.net a abril de 2025 [^5]: Estadísticas de descargas de npm para preview-email, abril de 2025 [^7]: Estadísticas de descargas de npm para superagent, febrero-marzo de 2025 [^8]: Estadísticas de descargas de npm para supertest, febrero-marzo de 2025 [^9]: Estadísticas de descargas de npm para preview-email, febrero-marzo de 2025 [^10]: Estadísticas de descargas de npm para Cabin, febrero-marzo de 2025 [^11]: Estadísticas de descargas de npm para url-regex-safe, febrero-marzo de 2025 [^12]: Estadísticas de descargas de npm para spamscanner, febrero-marzo de 2025 [^13]: Patrones de descargas diarias de las estadísticas de npm, abril de 2025 [^14]: Patrones de descargas semanales de las estadísticas de npm, abril de 2025 [^15]: Estadísticas de descargas de 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]: Basado en problemas de GitHub en el repositorio Upptime [^28]: Basado en problemas de GitHub en el repositorio Upptime [^29]: Basado en problemas de GitHub en el repositorio Upptime [^30]: Estadísticas de descargas de npm para bree, febrero-marzo de 2025 [^31]: Basado en solicitudes de extracción de GitHub a Upptime [^32]: Basado en solicitudes de extracción de GitHub a Upptime [^34]: Estadísticas de descargas de npm para koa, febrero-marzo de 2025 [^35]: Estadísticas de descargas de npm para @koa/router, febrero-marzo de 2025 [^36]: Estadísticas de descargas de npm para koa-router, febrero-marzo de 2025 [^37]: Estadísticas de descargas de npm para url-regex, febrero-marzo de 2025 [^38]: Estadísticas de descarga de npm para @breejs/later, febrero-marzo de 2025 [^39]: Estadísticas de descarga de npm para email-templates, febrero-marzo de 2025 [^40]: Estadísticas de descarga de npm para get-paths, febrero-marzo de 2025 [^41]: Estadísticas de descarga de npm para dotenv-parse-variables, febrero-marzo de 2025 [^42]: Estadísticas de descarga de npm para @koa/multer, febrero-marzo de 2025