Uma história em quadrinhos que eu desenhei sobre o material de outras pessoas, com a roda como exemplo.

Além de existir sem que você precise levantar um dedo, as ferramentas e o software de código aberto têm algumas vantagens distintas. Especialmente no caso de projetos bem estabelecidos, é altamente provável que alguém já tenha resolvido todos os bugs mais irritantes para você. Graças à facilidade com que os usuários podem visualizar e modificar o código-fonte, também é mais provável que um programa tenha sido ajustado, aprimorado e protegido com o tempo. Quando muitos desenvolvedores contribuem, eles trazem seus próprios conhecimentos e experiências. Isso pode resultar em um produto muito mais robusto e capaz do que um único desenvolvedor pode produzir.

Obviamente, sendo tão variados quanto as pessoas que os constroem, nem todos os projetos de código aberto são criados iguais, nem mantidos para serem igualmente seguros. Existem muitos fatores que afetam a adequação de um projeto ao seu caso de uso. Aqui estão algumas considerações gerais que são um bom ponto de partida ao escolher um projeto de código aberto.

Como escolher um projeto de código aberto

Como seus requisitos mais básicos, um bom projeto de software é confiável, fácil de entender e possui componentes e segurança atualizados. Existem vários indicadores que podem ajudá-lo a adivinhar se um projeto de código aberto atende a esses critérios.

Quem está usando

Tomado em contexto, o número de pessoas que já usam um projeto de código aberto pode ser indicativo de quão bom é. Se um projeto tiver cem usuários, por exemplo, é lógico que alguém tenha tentado usá-lo pelo menos cem vezes antes de você o encontrar. Assim, pelos costumes antigos de “eu não sei o que há nessa caverna, você vai primeiro”, é mais provável que esteja bem.

Você pode tirar conclusões sobre a base de usuários de um projeto, analisando as estatísticas disponíveis. Dependendo da sua plataforma, isso pode incluir o número de downloads, análises, problemas ou tickets, comentários, contribuições, garfos ou “estrelas”, quaisquer que sejam.

Avalie as estatísticas sociais em plataformas como o GitHub com um pouco de sal. Eles podem ajudá-lo a determinar a popularidade de um projeto, mas apenas da mesma maneira que os aplicativos de revisão de restaurantes podem ajudá-lo a descobrir se você deve comer no Foo’s Grill & Bar. Dependendo de onde está o Foo’s Grill & Bar, quando foi aberto, e qual a probabilidade de as pessoas estarem perto dele quando o desejo invariável de bife chamar, ter 26 avaliações pode ser um bom sinal ou um péssimo. Embora você não espere que um projeto que aborda um caso de uso ou tecnologia muito obscuro tenha centenas de usuários, ter alguns usuários ativos é, nesse caso, igualmente inspirador de confiança.

A validação externa também pode ser útil. Por exemplo, pacotes incluídos em uma distribuição do sistema operacional Linux (distribuição) devem estar em conformidade com padrões rigorosos e submetidos a verificação. Escolher o software incluído nos repositórios padrão de uma distribuição pode significar que é mais provável que seja seguro.

Talvez uma das melhores indicações para procurar seja se a equipe de desenvolvimento de um projeto está usando seu próprio projeto. Procure por problemas, discussões ou postagens de blog que mostrem que os criadores e mantenedores do projeto estão usando o que eles construíram. Comumente referido como “Comer sua própria comida de cachorro” ou “dogfooding”, é um indicador de que é mais provável que o projeto seja bem mantido por seus desenvolvedores.

Quem está construindo

O principal inimigo de um bom software de código aberto é geralmente a falta de interesse. As partes envolvidas em um projeto de código aberto podem fazer a diferença entre uma biblioteca flash-in-the-pan e um utilitário de longo prazo respeitado. Vários mantenedores comprometidos, mesmo fazendo contribuições em seu tempo livre, têm uma taxa de sucesso muito maior de sustentar um projeto e gerar interesse.

Projetos com interesse saudável geralmente são apoiados e, por sua vez, cultivam uma comunidade de colaboradores e usuários. Novos colaboradores podem ser bem-vindos ativamente, estão disponíveis guias claros explicando como ajudar, e os mantenedores do projeto estão disponíveis e acessíveis quando as pessoas têm perguntas inevitáveis. Algumas comunidades ainda têm salas de bate-papo ou fóruns onde as pessoas podem interagir fora das contribuições. As comunidades ativas ajudam a manter o interesse, a relevância e a qualidade resultante do projeto.

De uma maneira menos orgânica, um projeto também pode ser sustentado por meio de organizações que o patrocinam. Governos e empresas com interesse financeiro também são patrocinadores de código aberto, e um projeto que goza de uso do setor público ou apoio financeiro adicionou incentivo para permanecer relevante e útil.

Quão vivo é

A atualidade e a frequência da atividade de um projeto de código aberto é talvez o melhor indicador de quanta atenção provavelmente é dada à sua segurança. Observe as liberações, histórico de confirmação, registros de alterações ou revisões da documentação para determinar se um projeto está ativo. Como os projetos variam em tamanho e escopo, aqui estão algumas coisas gerais a serem procuradas.

Manter a segurança é um esforço contínuo que requer monitoramento e atualizações regulares, especialmente para projetos com componentes de terceiros. Podem ser bibliotecas ou qualquer parte do projeto que dependa de algo externo, como uma integração de gateway de pagamento. É mais provável que um projeto inativo tenha código desatualizado ou use versões desatualizadas de componentes. Para uma determinação mais concreta, você pode pesquisar os componentes de terceiros de um projeto e comparar os patches ou atualizações mais recentes com as últimas atualizações do projeto.

Projetos sem componentes de terceiros podem não ter atualizações externas a serem aplicadas. Nesses casos, você pode usar atividades recentes e notas de versão para determinar quão comprometidos os mantenedores de um projeto podem estar. Geralmente, os projetos ativos devem mostrar atualizações nos últimos meses, com um lançamento incrível no último ano. Isso pode ser uma boa indicação de se o projeto está usando uma versão atualizada de seu idioma ou estrutura.

Você também pode julgar quão ativo um projeto pode ser, observando os próprios mantenedores do projeto. Os mantenedores ativos respondem rapidamente a comentários ou novos problemas, mesmo que seja apenas para dizer: “Estamos nisso”. Se o projeto tem uma comunidade, seus mantenedores fazem parte dele. Eles podem ter um site dedicado ou escrever blogs regulares. Eles podem oferecer maneiras de contatá-los direta e privadamente, especialmente para levantar preocupações de segurança.

Você consegue entender isso

Ter documentação é um requisito básico para um projeto destinado a qualquer pessoa, exceto seu criador. Bons projetos de código aberto possuem documentação fácil de seguir, honesta e completa.

Tendo documentação bem escrita é uma maneira de um projeto se destacar e demonstrar a consideração e dedicação de seus mantenedores. Uma seção “Introdução” pode detalhar todos os requisitos e a configuração inicial para executar o projeto. Uma lista precisa de tópicos na documentação permite que os usuários encontrem rapidamente as informações necessárias. Uma declaração de licença clara não deixa dúvidas sobre como o projeto pode ser usado e para que fins. Esses são aspectos característicos da documentação que atende a seus usuários.

Um projeto que segue práticas de codificação de som provavelmente possui um código tão legível quanto sua documentação. Um código fácil de ler ajuda a ser entendido. Geralmente, possui funções e variáveis ​​claramente definidas e nomeadas adequadamente, um fluxo lógico e um objetivo aparente. O código legível é mais fácil de corrigir, proteger e desenvolver.

Quão compatível é

Alguns fatores determinarão a compatibilidade de um projeto com seus objetivos. Essas são qualidades objetivas e podem ser determinadas observando os arquivos de repositório de um projeto. Eles incluem:

  • Idioma do código
  • Tecnologias ou estruturas específicas
  • Compatibilidade de licença

Compatibilidade não significa necessariamente uma correspondência direta. Diferentes linguagens de código podem interagir entre si, assim como várias tecnologias e estruturas. Você deve ler atentamente a licença de um projeto para entender se ela permite o uso de sua meta ou se é compatível com uma licença que você gostaria de usar.

Por fim, um projeto que atenda a todos esses critérios ainda pode não se adequar ao seu caso de uso. Parte da beleza do software de código aberto, no entanto, é que você ainda pode se beneficiar fazendo alterações que melhor se adequam ao seu uso. Se essas alterações melhorarem o projeto para todos, você poderá pagá-lo novamente e contribuí-lo contribuindo com seu trabalho para o projeto.

Cuidados e alimentação adequados de um projeto de código aberto

Depois de adotar um projeto de código aberto, é necessária uma pequena atenção para garantir que ele continue sendo um benefício para seus objetivos. Embora seus mantenedores cuidem dos arquivos do projeto upstream, você é o único responsável por sua própria cópia. Como todos os softwares, seu projeto de código aberto deve ser bem mantido para permanecer o mais seguro e útil possível.

Tenha um sistema que forneça notificações quando as atualizações do seu software forem disponibilizadas. Atualize o software imediatamente, tratando cada patch como se fosse vital para a segurança; pode muito bem ser. Lembre-se de que os criadores e mantenedores de projetos de código aberto estão, na maioria dos casos, agindo apenas pela bondade de seus próprios corações. Se você tem uma versão especialmente impressionante, seus desenvolvedores podem disponibilizar atualizações e patches de segurança regularmente. Cabe a você acompanhar as atualizações e aplicá-las prontamente.

Como na maioria das coisas em software, manter as adições de código aberto modulares pode ser útil. Você pode usar submódulos git, Ramificações ou ambientes para isolar suas adições. Isso pode facilitar a aplicação de atualizações ou a identificação de fontes de bugs que surgirem.

Portanto, embora um projeto de código aberto possa não custar dinheiro, caveat emptor, o que significa: “Jimmy, se conseguirmos um filhote para você, é sua responsabilidade cuidar dele”.