O que faz do Fastify um projeto de sucesso?
Oren Hacohen
22 de dezembro de 2020
0 minutos de leituraBoas-vindas ao nosso destaque sobre o Fastify. Hoje, recebemos Ethan Arrowood, colaborador ativo do servidor web de código aberto para Node.js Fastify. Observamos que o Fastify apresenta pontuações muito altas nos indicadores de saúde na página do pacote fastify no Snyk Advisor e queremos explorar com você alguns desses indicadores em detalhes.

O que é o Fastify? Para que esse pacote é mais usado?
O Fastify é um framework web altamente focado em oferecer a melhor experiência para desenvolvedores, com o mínimo de sobrecarga e uma poderosa arquitetura de plugins. Desenvolvedores do mundo todo usam o Fastify para criar aplicações HTTP escaláveis, como APIs renderizadas no servidor, JSON ou GraphQL. A melhor maneira de começar é com nosso guia de introdução.
Você poderia nos contar em poucas frases qual é seu papel no Fastify?
Comecei a contribuir com o Fastify depois de conversar com Matteo Collina no Node.js Interactive 2017. Na época, eu queria mergulhar de cabeça e aprender tudo sobre servidores HTTP do Node.js — e ainda hoje continuo aprendendo! Comecei aprimorando a cobertura de testes e a documentação, além de fazer a triagem de issues abertas e pull requests. Mais recentemente, tenho me dedicado principalmente à reescrita das definições de TypeScript, aprimorando a experiência de desenvolvimento para quem usa TypeScript em todo o ecossistema Fastify.
Destacamos o Fastify como um projeto influente em termos de popularidade, com mais de 130 mil downloads por semana. Na sua opinião, o que fez dele um projeto de sucesso?

O sucesso do Fastify se deve à comunidade. A equipe de colaboradores não para de crescer e é muito ativa. Além disso, por priorizarmos a melhoria da experiência de desenvolvimento como um todo — também para JavaScript e TypeScript modernos —, cada vez mais desenvolvedores Node.js escolhem o Fastify primeiro ao iniciar um projeto.
Quais são seus recursos favoritos do Fastify?
Uma das partes que sempre me intrigou é o roteador subjacente: find-my-way. Ele é baseado em uma estrutura de dados trie radix e faz muito bem o que se propõe a fazer. Para entender melhor, pense nele como um dicionário físico. Quando o Fastify precisa encontrar uma determinada rota, ele percorre o caminho caractere por caractere até encontrar o caminho solicitado.
Quais são os novos recursos da versão mais recente do Fastify?
Na versão mais recente do Fastify, mudamos a serialização dos logs e a substituição de schemas, adicionamos um suporte melhor a TypeScript e permitimos executar aplicações Express dentro do Fastify usando o fastify-express. Também modificamos o comportamento de alguns hooks por rota e adicionamos opções de timeout. Para conferir a lista completa, consulte nosso guia de migração para a V3.
Na sua opinião, quais são bons indicadores da saúde do projeto Fastify?
A atividade no nosso ecossistema. Parece que quase toda semana um novo plugin é adicionado à lista da comunidade. Em uma rápida olhada nos PRs fechados recentemente, vemos que adicionamos fastify-redis-channels, fastify-custom-healthcheck, fastify-envalid e fastify-get-head só na última semana. Além disso, cada vez mais pessoas estão se juntando à equipe de colaboradores e ajudando a desenvolver novos recursos em todas as áreas do projeto. Um ótimo exemplo disso foi uma solicitação de um plugin do OpenTelemetry. Alguns meses depois, um membro da nossa comunidade contribuiu com o plugin fastify-opentelemetry, que foi adicionado à lista de plugins do ecossistema da comunidade.
Por que os desenvolvedores escolhem usar o Fastify? Há outros projetos dos quais eles costumam migrar?
A validação de dados integrada é um dos recursos mais atraentes para os desenvolvedores. Além de todos os outros recursos de API que tornam o Fastify único, nossos usuários valorizam muito a comunidade. Muitas pessoas ajudam umas às outras ativamente no nosso Discord e no repositório de ajuda.
Muitos dos nossos usuários migram do Express. Tornamos esse processo o mais simples possível com o plugin fastify-express. Ele adiciona compatibilidade total com o Express ao Fastify, permitindo que os usuários migrem suas aplicações Express aos poucos, parte por parte.
Qual é o maior desafio de manter um projeto de código aberto hoje?
Tempo. Trabalho em período integral como engenheiro de software na Microsoft e só consigo dedicar uma parte do meu dia de trabalho ao código aberto. Sinceramente, não é tempo suficiente para fazer tudo o que gostaria, então tento priorizar e avançar aos poucos. Mas não me entenda mal: adoro meu trabalho, e é graças a ele que posso contribuir com projetos de código aberto; no fim das contas, tudo se resume a encontrar equilíbrio.
Quais são seus 5 projetos de código aberto favoritos?
Node.js, Electron, TypeScript, Undici e, claro, Fastify!
Qual é a melhor dica para começar a contribuir com projetos de código aberto?
Participe da comunidade Fastify no Discord e confira nossa lista de issues para encontrar oportunidades de contribuir.