Meu nome é Elton Minetto

Escolhendo dependências usando deps.dev

Escolher as dependências de um projeto é algo que algumas vezes menosprezamos, mas que pode ter um impacto muito relevante. A imagem a seguir ilustra bem a ideia:

dependencies

Para facilitar esse processo recentemente o Google lançou um novo projeto, o deps.dev e seu slogan resume bem o seu objetivo: Understand your dependencies. A ferramenta tem suporte a algumas linguagens de programação como JavaScript, Rust, Go, Python e Java.

Para mostrar as vantagens vamos imaginar um cenário: uma equipe está desenvolvendo uma API em Go e precisa escolher uma biblioteca para implementar o conceito de Circuit Breaker. Após algumas pesquisas na internet e no excelente site Awesome Go a lista ficou reduzida as seguintes opções:

Vamos pesquisar cada uma delas no deps.dev para começarmos a comparação. Estes são os links das análises das libs:

Dentre as informações apresentadas algumas me chamaram atenção. Por exemplo, na análise da gobreaker:

  • A ferramenta cria um score para a lib, usando critérios como segurança, licença e se ela é ativamente mantida:

dependencies_score

  • Podemos ver quantas dependências a lib tem e em quantos projetos ela é usada, o que pode ser um bom sinal de qualidade e confiança da comunidade:

dependencies_dependents

Também é possível visualizar se a lib possui algum aviso de segurança. A lib mercari/go-circuitbreaker apresenta risco neste quesito:

dependencies_security

Com estas informações em mãos o time pode tomar uma decisão mais segura quanto a quais libs podem ser incluídas ao seu projeto.

Outra funcionalidade bem útil é que o deps.dev possui uma API. Com essa API é possível criar uma verificação no serviço de Continous Integration do projeto para verificar se existe algum aviso de segurança relacionado as dependências, ou se existe uma versão nova de alguma biblioteca importante.

O deps.dev é um projeto bem útil e que pode ajudar bastante os times na escolha e gerenciamento das dependências de seus projetos.