In this article
Por que a governança de código aberto é essencial para a segurança
O que é governança de código aberto?
Governança de código aberto é o conjunto de regras e práticas reconhecidas que orientam um projeto de código aberto. De acordo com o OpenSource.com, para definir as diretrizes de governança, é preciso responder às seguintes perguntas:
Quais funções os colaboradores podem desempenhar no projeto?
Quais qualificações, responsabilidades, privilégios e autoridade estão associados a cada função?
Como as pessoas são designadas para as funções (e removidas delas)?
Como as definições das funções podem ser alteradas?
Quais são as políticas e os procedimentos coletivos do projeto?
Quando as funções no projeto são definidas, geralmente com base nas atividades de cada desenvolvedor, é possível aplicar a governança aos projetos de código aberto.
6 modelos diferentes de governança
A definição das regras de um projeto de código aberto e a atribuição de funções são conhecidas como modelo de governança. Segundo a Red Hat, há seis modelos de governança.
1. Do-ocracy: nesse modelo de governança, quem realiza o trabalho é quem toma as decisões, e a revisão por pares tem um papel importante. Esse modelo também pode ser difícil para desenvolvedores que precisam de mais orientação.
2. Liderança do fundador: esse modelo de governança de código aberto é usado com mais frequência em projetos novos ou com poucos colaboradores. Nesse modelo de software, há uma linha de governança bem definida, geralmente composta pela pessoa que iniciou o projeto ou pela equipe de desenvolvimento. Infelizmente, esse modelo pode levar a uma ditadura no projeto de código aberto, em que o fundador líder dita as regras durante todo o ciclo de vida do software.
3. Conselho ou diretoria que se autodesigna: esse modelo de governança de software de código aberto cria um comitê de liderança para supervisionar as etapas de desenvolvimento do projeto. A desvantagem é que o comitê pode excluir as opiniões e a participação do restante da equipe.
4. Eleitoral: nesse modelo, a comunidade escolhe a governança por meio de eleições. Ele é popular em projetos com grande participação comunitária de vários desenvolvedores com habilidades e funções semelhantes. Embora seja o modelo mais equitativo para a tomada de decisões, também pode acrescentar responsabilidades e distrações, além de gerar conflitos internos à medida que os membros da comunidade disputam funções de liderança.
5. Com apoio corporativo: nesse modelo de governança de software, empresas ou setores assumem a distribuição do software sob acordos de licenciamento de código aberto. Embora isso ofereça controle sobre o desenvolvimento do software, também limita as contribuições externas, comuns em projetos de código aberto.
6. Com apoio de uma fundação: esse modelo é administrado por uma organização sem fins lucrativos, e a governança costuma ser controlada rigidamente por uma única estrutura. Isso ocorre devido aos requisitos associados à condição dessas organizações.
Como formalizar funções de liderança
Os projetos de software de código aberto são feitos para serem colaborativos, mas a governança dá direcionamento. As lideranças orientam o projeto, garantem o cumprimento dos prazos e asseguram que as políticas e diretrizes sejam seguidas.
Cada modelo de governança tem seus próprios processos para escolher lideranças. São eles:
Do-ocracy: a liderança se constrói por meio da ação. Quanto mais contribuições de um desenvolvedor são aceitas no projeto, maior é sua influência na comunidade.
Liderança do fundador: a liderança geralmente surge naturalmente entre as pessoas que iniciaram o projeto.
Autodesignação: em projetos de código aberto mais maduros e de longa duração, muitas vezes já há documentação sobre os processos de governança. Cabe ao desenvolvedor tomar a iniciativa de entender como suas contribuições podem levar a funções de liderança.
Eleitoral: em um processo eleitoral, há procedimentos bem definidos para determinar como e quando as eleições acontecem e quais funções estão em disputa. Os resultados ficam disponíveis na documentação online do projeto. Em geral, os candidatos já construíram uma reputação na comunidade antes de se apresentarem para uma função de liderança.
Com apoio corporativo: a governança vem da empresa que iniciou o projeto, por isso a liderança tem uma relação com ela.
Com apoio de uma fundação: a governança vem diretamente da fundação ou de um conselho que se autodesigna.
Todos os colaboradores do projeto devem ter a oportunidade de assumir uma função de governança, caso queiram. Mas, primeiro, o desenvolvedor precisa participar do projeto. Para isso, quem tiver interesse deve se inscrever na lista de e-mails do projeto, que pode ser encontrada no GitHub e nos sites oficiais.
Depois de começar a contribuir com um projeto, é importante acompanhar as contribuições. Isso pode ser feito com ferramentas como o Open Source Contributions Log. O registro das contribuições comprova o trabalho realizado por quem deseja assumir funções de liderança na governança de código aberto.
Funções na governança de código aberto
Há funções formais que os colaboradores podem assumir na governança de projetos de software de código aberto. Entre as mais conhecidas estão:
Mantenedor: pode ser alguém que escreveu muito código para o projeto de código aberto, produziu documentação sobre ele ou até atua como divulgador do projeto. Essa pessoa se sente responsável pelo direcionamento geral do projeto e faz o necessário para melhorá-lo.
Colaborador: qualquer pessoa que contribua com o projeto, seja comentando sobre problemas ou escrevendo código. Se trouxer algo de valor para o projeto, essa pessoa desempenha a função de colaborador.
Committer: alguém com acesso especial para fazer commits, que demonstrou um compromisso profundo e contínuo com o projeto.
4 maneiras de proteger seu projeto de código aberto
O que torna o software de código aberto atraente é o acesso livre para qualquer pessoa que queira participar. Ao mesmo tempo, o maior risco desses projetos é que qualquer pessoa pode contribuir. A governança de código aberto inclui medidas para proteger o projeto contra ameaças. Algumas ações para reduzir os riscos são:
Crie políticas de segurança para o projeto, incluindo a supervisão de usuários e colaboradores ou da documentação do projeto. Alguém em uma função de liderança deve ter autoridade para aplicar essas políticas. Os mantenedores são uma boa opção para essa função.
Teste, acompanhe e corrija vulnerabilidades. As ferramentas de análise de composição de software (SCA) permitem que os desenvolvedores analisem e gerenciem componentes de código aberto no software. Elas ajudam, por exemplo, a verificar licenças e avaliar os riscos de vulnerabilidades.
Limite quem pode criar pull requests e avalie cada solicitação antes de agir. Também é possível analisar esses pull requests com ferramentas de SCA ou de teste de segurança de aplicações estáticas (SAST) para detectar vulnerabilidades.
Verifique os colaboradores antes de aceitá-los no projeto e conceda acesso apenas a usuários confiáveis.
Analise suas dependências de código aberto em busca de vulnerabilidades
Encontre, priorize e corrija vulnerabilidades automaticamente e de graça com a Snyk.
Quando implementar a governança
A governança deve ser implementada o quanto antes em qualquer projeto de código aberto. Quanto mais cedo a documentação for elaborada, mais fácil será definir expectativas e objetivos. A governança desde o início também permite delinear as funções com clareza. Se o projeto tiver apoio corporativo ou de uma fundação, as discussões devem acontecer internamente antes do lançamento, para que os processos fiquem claros e haja um caminho conhecido para a evolução do projeto.
Contribuições de empresas e modelos de governança
O software de código aberto é usado por diversos públicos. Como cada empresa pode ter necessidades diferentes, suas contribuições podem alterar o escopo do projeto. Algumas empresas também podem designar desenvolvedores remunerados para contribuir com determinados projetos.
Essas contribuições devem ser tratadas como qualquer outra. A governança continua baseada no valor das contribuições e no envolvimento de cada pessoa.
Relatório da Snyk
Panorama da segurança de código aberto em 2022
Uma análise da complexidade e dos riscos da cadeia de suprimentos de software, em colaboração com a The Linux Foundation.
Como começar com a governança de código aberto
Mais de 90% dos softwares proprietários usam componentes de código aberto. Por isso, a governança de código aberto deve ser uma prioridade para os departamentos de TI e a alta liderança de todas as empresas que disponibilizam código como open source. As políticas de governança de código aberto, as funções dos colaboradores e a liderança do projeto devem ser bem definidas e comunicadas. Todas as pessoas envolvidas no desenvolvimento de software de código aberto precisam conhecer suas funções no projeto.
A política de governança de código aberto oferece soluções para problemas que podem surgir, desde riscos de segurança até riscos operacionais. A falta de governança pode atrasar o ciclo de desenvolvimento de software, postergar lançamentos ou exigir correções depois que o produto entrar em operação.
A adoção de modelos de governança ajuda a lidar com possíveis questões jurídicas. Por exemplo, a política de governança da organização deve incluir uma ferramenta de SCA para identificar possíveis vulnerabilidades e problemas de licenciamento nas dependências. O Snyk Open Source oferece visibilidade sobre os pacotes de código aberto que você usa, além de ajudar na conformidade com licenças e no gerenciamento de dependências.