O que faz do Verdaccio um projeto de sucesso?
Oren Hacohen
2 de fevereiro de 2021
0 minutos de leituraBoas-vindas ao nosso destaque sobre o Verdaccio. Hoje, recebemos Juan Picado, mantenedor do agente de e-mail de código aberto pacote npm Verdaccio. Observamos que o Verdaccio tem uma pontuação muito alta de integridade geral de pacotes na página do pacote Verdaccio do Snyk Advisor e queremos analisar isso em mais detalhes.

O que é o Verdaccio?
Em poucas palavras, o Verdaccio é um registro privado leve e um proxy, sem dependências e com configuração zero, desenvolvido em Node.js. O aplicativo oferece algumas opções de personalização e é muito fácil de configurar. Se você já publicou um pacote no npmjs, já sabe usar o Verdaccio.
Quais são alguns casos de uso interessantes que você já viu para o pacote?
O caso de uso mais comum é hospedar um registro privado, o que, para equipes pequenas, não exige muitos recursos. Uma máquina virtual de qualquer porte, em qualquer SaaS, é suficiente para atender à maioria das necessidades.
O Verdaccio é muito valorizado no ecossistema de código aberto. O principal motivo é que esses projetos não precisam depender de serviços de terceiros para testar a publicação de pacotes. Isso proporciona privacidade e uma camada extra de segurança, evitando que algo seja publicado acidentalmente em registros públicos. Um exemplo real seria publicar vários pacotes de um monorepositório para testar a integridade da instalação final.
Ter um registro é essencial para aprender Node.js, criar módulos e distribuí-los como parte dos fundamentos do Node.js. O que pode ser melhor do que qualquer pessoa desenvolvedora poder executar seu próprio registro em poucos segundos? Isso não tem preço para muitos desenvolvedores que estão começando a aprender Node.js.
Você poderia falar sobre seu papel como mantenedor do projeto Verdaccio?
Em 2016, o Verdaccio foi criado a partir de um fork de um projeto chamado Sinopia. Houve vários debates sobre como o projeto deveria continuar. Na época, eu era usuário do Sinopia e precisava muito de um registro para meu próprio desenvolvimento, até que o projeto foi abandonado. Percebi rapidamente o potencial da ideia para a comunidade e, quando comecei a contribuir ativamente, recebi a propriedade do projeto dos cofundadores. Naquele momento, havia 200 estrelas e apenas algumas centenas de downloads por semana. O Sinopia ainda existia, e meu principal objetivo era atrair o maior número possível de colaboradores — e deu certo.
Hoje, lidero esse projeto inteiramente no meu tempo livre, e meu principal objetivo é ajudar a comunidade Node.js a crescer. O Verdaccio tem mais de 11 mil estrelas no GitHub, cerca de 2 milhões de downloads de imagens Docker e 100 mil downloads no npm por mês. A melhor forma de apoiar o projeto é contribuindo, mas também é possível fazer uma doação para ajudar no desenvolvimento futuro por meio dos patrocinadores do GitHub: https://github.com/sponsors/verdaccio.
Identificamos que a popularidade do Verdaccio está crescendo, com mais de 30.432 downloads por semana. Na sua opinião, o que tornou o projeto tão bem-sucedido?

A simplicidade — sem dúvida. A curva de aprendizado para usar o Verdaccio pela primeira vez é muito baixa: basta digitar
npx verdacciopara ter um registro funcionando.As pessoas entendem que um registro pode ser complexo. O Verdaccio simplifica tudo.
A popularidade do JavaScript e do Node.js tem um papel importante nesse sucesso. Há uma necessidade de privacidade e segurança, e o Verdaccio oferece as duas coisas sem custo.
Sem dúvida, o Docker foi a melhor forma de alcançar muitos usuários.
Quais são seus recursos favoritos do Verdaccio?
Meu recurso favorito se chama uplinks. Ele oferece aos usuários várias possibilidades de conexão com outros registros. Combinado com outro recurso chamado acesso a pacotes, permite que a pessoa usuária defina, por padrão de nome de pacote, quais uplinks devem resolver uma dependência específica ou até encadear vários uplinks até que o pacote seja encontrado. Até hoje, nenhum outro produto consegue fazer isso.
Quais são os novos recursos da versão mais recente do Verdaccio?
Um dos recursos mais recentes é a possibilidade de exibir pacotes obsoletos na interface do usuário. Assim, fica mais fácil avisar que alguns pacotes não são mais mantidos e que os usuários devem deixar de usá-los.
Por que os desenvolvedores escolhem o Verdaccio?
Acho que os desenvolvedores gostam do Verdaccio por sua privacidade, flexibilidade, simplicidade e por ser gratuito. Privacidade porque não é preciso compartilhar o código com serviços de terceiros; flexibilidade porque é fácil mudar o comportamento da aplicação; simplicidade porque a curva de aprendizado é baixa para começar a usar; e gratuidade porque é de código aberto, e qualquer pessoa pode contribuir para melhorar o projeto.
Há outros projetos dos quais você vê desenvolvedores migrando?
Nos últimos anos, tenho visto desenvolvedores migrarem do Nexus e do Artifactory para o Verdaccio. A maioria dos desenvolvedores Node.js não precisa de uma solução robusta para publicar pacotes. Se você tem uma pequena empresa, trabalha como freelancer, está aprendendo ou simplesmente quer experimentar, não há nada mais simples e rápido no mercado do que o Verdaccio.
Na sua opinião, quais são bons indicadores da saúde do projeto Verdaccio? Identificamos que o Verdaccio é um projeto saudável e observamos uma ótima tendência de commits e atividade em pull requests.

Sem dúvida, isso transmite segurança. Todo projeto de código aberto depende de outros projetos e faz parte de uma enorme cadeia de dependências. Os problemas, melhorias ou mudanças incompatíveis deles acabam afetando você. Atualizo as dependências sempre que posso, manualmente ou com ferramentas automatizadas. As correções de segurança delas também corrigem problemas no Verdaccio. Faço o mesmo para que quem usa este projeto como dependência também se beneficie da boa saúde dele. Além disso, temos canais para relatos de segurança, para que qualquer pessoa possa informar vulnerabilidades, que são prioridade para os mantenedores.
Qual é hoje o maior desafio de ser mantenedor de um projeto de código aberto?
O tempo. Para mim, ser desenvolvedor de código aberto em tempo integral e remunerado é uma quimera. Poucas pessoas conseguiram isso com total independência. Ter um emprego em tempo integral, família, hobbies e uma vida normal deixa pouco tempo e espaço para o código aberto. Então, sem dúvida, o tempo é o maior desafio. Às vezes, você tem uma hora ou menos por dia e precisa decidir qual tarefa priorizar. Sem esquecer outras tarefas secundárias, como escrever no blog, publicar no X e divulgar o projeto em conferências ou encontros. Também é importante não se sentir pressionado pelo tempo e aproveitar os pequenos momentos que você tem.
Parece que o Verdaccio tem um bom histórico na resolução de problemas de segurança em versões anteriores. Como você gerencia esse risco de segurança hoje, com a recente versão 4.x?

Não sou especialista em segurança, então preciso recorrer a serviços de terceiros ou a especialistas em segurança que entram em contato comigo e me ajudam a entender e identificar possíveis problemas. Desde os primeiros dias, a equipe do Verdaccio foi convidada a participar do programa de segurança de código aberto da Snyk, com Liran Tal. Desde então, passei a assumir mais responsabilidade nessa área. O projeto recebeu ótimas orientações sobre como lidar com problemas de segurança e, claro, aprendemos ao longo do processo.
Mesmo antes de participar desse programa, eu já usava o serviço gratuito da Snyk para projetos de código aberto. Receber feedback imediato sobre correções disponíveis para vulnerabilidades de segurança, por pull request ou e-mail, ajuda a manter o projeto em boa forma.
Daniel Ruf, integrante da equipe principal, é especialista em segurança e mora na Alemanha. Ele entrou para o projeto por seu interesse em segurança e código aberto e, desde o início, tem sido uma grande inspiração pelo compromisso com a segurança no Verdaccio.
Os colaboradores também fazem sua parte. Sou contatado por meio da política oficial de segurança, que está no arquivo SECURITY.md da branch master, quando uma vulnerabilidade é detectada. Seguindo os procedimentos, uma correção é lançada o mais rápido possível. Tenho uma única regra: segurança é importante, e levo isso a sério.
Quais são seus cinco projetos de código aberto favoritos?
Yarn 2 (berry) é um dos meus favoritos. O projeto é muito bem-feito: o código, a arquitetura baseada em plugins, a documentação e também a comunicação sobre a migração da versão clássica para o berry. É um conceito novo que vai mudar muita coisa no ecossistema Node.js.
Babel.js: não consigo imaginar o desenvolvimento sem ele. Gosto de combiná-lo com TypeScript, o que me permite estar na vanguarda dos recursos do JavaScript.
pnpm: o desenvolvimento futuro do Verdaccio já está baseado no pnpm, e gosto da abordagem do projeto: é fácil de configurar, oferece suporte a monorepositórios, é rápido e atende a todas as minhas necessidades. Para mim, economizar espaço no disco rígido é fundamental.
Pino.js: sem dúvida, é o melhor logger para Node.js disponível atualmente. É rápido, tem boa documentação e uma comunidade vibrante.
Jest: uso o Jest em todos os projetos profissionais em que trabalho. Não há dúvida de que é o executor de testes mais completo, tem boa manutenção e recebe novos recursos rapidamente.
Qual é sua melhor dica para começar a contribuir com projetos de código aberto?
Você precisa gostar do que está fazendo — esse é o ingrediente essencial para contribuir com projetos de código aberto. Para mim, é um hobby que me permite aprender, sair da minha zona de conforto e ajudar tantas pessoas desenvolvedoras a aprender e aproveitar o Node.js.
Não tenha medo! Os mantenedores não são deuses onipotentes que sabem tudo sobre todos os assuntos. São pessoas, cometem erros e também aprendem. Começar aos poucos é uma boa forma de entrar no mundo do código aberto. Com o tempo, você vai entender bem o projeto, assumir mais responsabilidades e se tornar mantenedor (se esse for seu objetivo).

