¿Qué hace que Fastify sea un proyecto exitoso?
Oren Hacohen
22 de diciembre de 2020
0 minutos de lecturaTe damos la bienvenida a nuestro artículo destacado sobre Fastify. Hoy recibimos a Ethan Arrowood, colaborador activo del servidor de aplicaciones web de código abierto para Node.js Fastify. Observamos que Fastify obtiene puntuaciones muy altas en las métricas de salud de la página del paquete fastify en Snyk Advisor y queremos profundizar contigo en algunos de esos detalles.

¿Qué es Fastify? ¿Para qué se usa principalmente el paquete?
Fastify es un framework web muy enfocado en ofrecer la mejor experiencia para desarrolladores, con la menor sobrecarga posible y una potente arquitectura de complementos. Desarrolladores de todo el mundo usan Fastify para crear aplicaciones HTTP escalables, como aplicaciones renderizadas del lado del servidor y API de JSON o GraphQL. La mejor manera de empezar es con nuestra guía de inicio.
¿Podrías contarnos en unas pocas frases cuál es tu rol en Fastify?
Empecé a contribuir a Fastify después de conversar con Matteo Collina en Node.js Interactive 2017. En ese momento, quería sumergirme de lleno en aprender todo lo posible sobre los servidores HTTP de Node.js; ¡y todavía hoy sigo aprendiendo! Empecé mejorando la cobertura de pruebas y la documentación, y clasificando problemas y pull requests abiertos. Más recientemente, me he enfocado principalmente en reescribir las definiciones de TypeScript y mejorar la experiencia de desarrollo de quienes usan TypeScript en todo el ecosistema de Fastify.
Destacamos a Fastify como un proyecto influyente por su popularidad: supera las 130.000 descargas semanales. ¿Qué crees que lo ha convertido en un proyecto exitoso?

El éxito de Fastify se debe a su comunidad. El equipo de colaboradores no deja de crecer y es muy activo. Además, al enfocarnos en mejorar la experiencia general de desarrollo (también para JavaScript moderno y TypeScript), cada vez más desarrolladores de Node.js eligen Fastify primero cuando empiezan un proyecto nuevo.
¿Cuáles son tus funciones favoritas de Fastify?
Una de las partes que siempre me ha intrigado es el enrutador subyacente: find-my-way. Se basa en una estructura de datos de trie radix y hace muy bien su trabajo. Para entenderlo, imagina un diccionario físico. Cuando le piden a Fastify que encuentre una ruta determinada, va comparando carácter por carácter hasta que coincide con la ruta solicitada.
¿Qué novedades incluye la versión más reciente de Fastify?
En la versión más reciente de Fastify, cambiamos la serialización de registros y la sustitución de esquemas, agregamos una mejor compatibilidad con TypeScript y permitimos ejecutar aplicaciones de Express dentro de Fastify mediante fastify-express. También modificamos el comportamiento de algunos hooks a nivel de ruta y agregamos opciones de tiempo de espera. Si te interesa, consulta nuestra guía de migración a V3 para ver la lista completa.
En tu opinión, ¿qué señales indican que el proyecto Fastify está saludable?
La actividad en nuestro ecosistema. Casi todas las semanas parece que se agrega otro complemento a la lista de nuestra comunidad. Si echamos un vistazo rápido a las PR cerradas recientemente, parece que tan solo en la última semana agregamos fastify-redis-channels, fastify-custom-healthcheck, fastify-envalid y fastify-get-head. Además, cada vez más personas se suman al equipo de colaboradores y nos ayudan a impulsar nuevas funciones en todos los aspectos del proyecto. Un gran ejemplo fue una solicitud para crear un complemento de OpenTelemetry. Unos meses después, uno de los miembros de nuestra comunidad contribuyó con su complemento fastify-opentelemetry y lo agregamos a nuestra lista de complementos comunitarios del ecosistema.
¿Por qué los desarrolladores eligen Fastify? ¿Hay otros proyectos desde los que suelen migrar?
La validación de datos integrada de primer nivel es una de nuestras funciones más atractivas para los desarrolladores. Además de las demás funciones de API que hacen único a Fastify, nuestros usuarios valoran mucho a nuestra comunidad. Muchas personas se ayudan mutuamente en nuestro Discord y en nuestro repositorio de ayuda.
Muchos de nuestros usuarios migran desde Express. Hicimos que el proceso fuera lo más sencillo posible con el complemento fastify-express. Este agrega compatibilidad total con Express a Fastify y permite migrar las aplicaciones de Express poco a poco.
¿Cuál es hoy el mayor desafío de mantener un proyecto de código abierto?
El tiempo. Trabajo a tiempo completo como ingeniero de software en Microsoft y solo puedo dedicar una parte de mi jornada laboral al código abierto. La verdad, no es suficiente para hacer todo lo que quiero, así que intento priorizar lo mejor posible y avanzar poco a poco. Pero no me malinterpretes: me encanta mi trabajo y es lo que me permite contribuir al código abierto; al final, todo se trata de encontrar el equilibrio.
¿Cuáles son tus 5 proyectos de código abierto favoritos?
Node.js, Electron, TypeScript, Undici y, por supuesto, Fastify.
¿Cuál es el mejor consejo para empezar a contribuir al código abierto?
Únete a la comunidad de Fastify en Discord y consulta nuestra lista de problemas para encontrar oportunidades de contribuir.