- Reportagens recentes levantaram críticas ao uso de software open source criado por um desenvolvedor russo
- Na prática, a grande maioria de quase todos os projetos open source é operada por um único mantenedor individual
- Não só no NPM, mas em vários ecossistemas, há muitos casos em que um único mantenedor cuida de pacotes populares
- O problema dessa estrutura é a sobrecarga excessiva sobre uma única pessoa e o risco para a cadeia de suprimentos
- A essência do problema não é a nacionalidade, e sim a falta real de recursos e apoio
Introdução: open source e a polêmica recente
- O The Register publicou uma matéria questionando a dependência do Departamento de Defesa dos EUA no uso de um utilitário open source criado por um desenvolvedor russo
- Esse desenvolvedor open source está sendo alvo de críticas injustas
- O conteúdo da matéria interpreta mal a realidade do open source, e este texto aponta os limites desse tipo de abordagem
A realidade do open source: a estrutura de “uma pessoa”
- Segundo os dados, quase todos os projetos open source são mantidos por uma única pessoa
- No projeto ecosyste.ms, cerca de 11,8 milhões de projetos open source estão catalogados nos dados
- Desses, cerca de 7 milhões têm um único mantenedor
- Os cerca de 4 milhões de projetos restantes têm número de mantenedores desconhecido, mas estima-se que muitos deles também tenham apenas uma pessoa
- Só uma parcela muito pequena de projetos tem centenas de mantenedores
Nem mesmo projetos populares são exceção
- Muita gente pensa que “projetos open source importantes ou populares devem ser mantidos por várias pessoas”, mas, na prática, ecossistemas importantes como o NPM não são diferentes
- Existem mais de 4 milhões de projetos com mantenedor único dentro do ecossistema NPM
- Mesmo entre os pacotes NPM com mais de 1 milhão de downloads por mês, cerca de metade é operada por um único mantenedor
- Se o número de downloads sobe para 1 bilhão, há alguma diferença, mas ainda assim continuam existindo pacotes com apenas 1 mantenedor
- As pessoas reais que operam esses 4 milhões de projetos com mantenedor único no NPM são cerca de 900 mil (ou seja, uma mesma pessoa responde por vários projetos)
A essência do problema: não é o país, é a falta de recursos
- A escala econômica do open source é uma base de trilhões de dólares (segundo estudo de Harvard, US$ 8,8 trilhões)
- A maioria dos projetos com mantenedor único carece de recursos, e há risco para a cadeia de suprimentos
- O maior risco não é o país, mas sim “um único mantenedor” trabalhando demais e sem receber compensação adequada
- Não é solução que a mídia e outros atores passem a mirar mantenedores individuais
Conclusão e pontos de ação
- A causa do problema atual está na estrutura de mantenedor único, e focar em países não faz sentido
- Demonizar ou tentar detectar mantenedores individuais não é uma solução
- Trata-se de um problema complexo, para o qual não há solução imediata
- Em vez de apontar e culpar mantenedores individuais, é preciso pensar no problema estrutural e em formas de apoio
1 comentários
Comentários no Hacker News
Parece haver muito mal-entendido na comunidade de software sobre essa questão; na prática, risco de cadeia de suprimentos me parece mais um problema de governança do que de software ou engenharia
Mesmo sem má intenção de ninguém, um projeto pode acabar tendo risco de cadeia de suprimentos, e cada pessoa que avalia esse risco tem uma perspectiva de segurança e critérios diferentes
O DoD (Departamento de Defesa dos EUA) enxerga risco de um jeito totalmente diferente do de um desenvolvedor comum, e muitos projetos de uma pessoa só viram risco simplesmente por terem apenas uma pessoa responsável
Quando o “bus factor” é 1, isso por si só já é um risco de cadeia de suprimentos
A maioria das pessoas não pensa em cenário de guerra ao escolher um pacote, mas os militares podem muito bem levar isso em conta
Se uma guerra acontecer, até projetos open source normalmente geridos de forma autônoma podem ter sua situação mudada de forma brusca
De fato, muitos países em tempos de guerra exigem por lei cooperação de empresas privadas ou projetos pessoais, então há lugares (como o DoD) que contabilizam até esse tipo de coisa como risco de segurança
Em cenário de guerra, eles não operariam na lógica de “tomara que houvesse ao menos mais uma pessoa em quem não confiamos nem um pouco”
Havia um dado dizendo que existem 4 milhões de projetos de uma pessoa só no NPM e cerca de 900 mil pessoas mantendo esses projetos, e fiquei me perguntando se esse era mesmo o ponto importante
Ou seja, a maior parte do valor econômico do open source (que Harvard estimou em 8,8 trilhões de dólares) é criada por “projetos de uma pessoa só”, e nenhuma dessas pessoas recebe suporte adequado de recursos
Na conversa sobre risco de cadeia de suprimentos, o que é realmente perigoso é o mantenedor solo mal pago e sobrecarregado
Em que país essa pessoa mora, sinceramente, não me parece tão importante assim
Fiquei curioso se existem estatísticas sobre o que acontece quando um mantenedor solo sofre um acidente de repente ou abandona o projeto
Com tanto dado assim, parece algo que valeria pesquisar
Queria saber se outro desenvolvedor assume o projeto, se ele é substituído por outro semelhante, ou se simplesmente desaparece por completo
Na prática, é bem mais comum do que acidente de ônibus o caso de “o mantenedor perdeu o interesse ou ficou sem tempo e largou”
Nessas horas, os cenários mais comuns são
A força do open source é que, mesmo que o autor desapareça, enlouqueça ou mude a licença, alguém ainda pode fazer um fork e preservar o projeto
Já software comercial, se o criador — seja empresa ou pessoa — some ou muda o conteúdo, acabou
No máximo dá para procurar um produto substituto
Esse também é o motivo de eu não tocar a Netflix
No fim, isso depende do número de usuários, da complexidade da base de código e da existência de alternativas
É uma história muito mais estranha do que simplesmente “foi atropelado por um ônibus”, e no fim o projeto desapareceu
Mesmo em projetos mantidos por duas ou mais pessoas, na prática a maior parte dos commits costuma acabar ficando nas mãos de uma só
Link relacionado: https://github.com/11ty/eleventy/graphs/contributors
É uma pena que, mesmo fazendo só uma checagem de atividade, já daria para perceber na hora que metade dos projetos tinha 0 mantenedores
Quer dizer que ele pode simplesmente ficar lá sem precisar de limpeza, tuning ou ajustes
Muitas vezes o problema são as atualizações, não o projeto em si
O que mais me preocupa é o fato de o DoD usar node
Dá uma sensação ruim pensar que uma plataforma como npm tem uma superfície de ataque grande demais
O DoD é uma das maiores organizações do mundo, então também deve ter um monte de tarefas como enviar newsletters ou páginas web para reservar visitas a bases de escoteiros
Para esse tipo de coisa, usar node não me parece problema
Esses sistemas operam separados de sistemas principais como lançamento de mísseis, e não seria um grande desastre se uma simples página de inscrição para evento fosse comprometida
Acho que muitos projetos de uma pessoa só no GitHub são, na verdade, só experimentos pessoais ou brincadeiras tipo “hello world”
Não sei como é no npm, mas no PyPI também tem exemplos assim de sobra
Cliquei em “browse projects” e apareceu isso: https://pypi.org/project/helloworld-eduardo/
Por mais bêbado que alguém esteja, não vai achar que isso serve para usar em produção
O DoD é muito bom em, quando consegue algo de graça, convencer todo mundo de que “isso beneficia a todos” e no fim entregar o trabalho para terceirizados pagos
Disseram que existe um “pacote com mantenedor solo e mais de 1 bilhão de downloads”, e fiquei curioso para saber a que pacote isso se refere
Ouvi muita coisa boa sobre o trabalho feito por um cara chamado Linus, e acho que já usei bastante coisa dele na prática
Como ele é de um país que faz fronteira com a Rússia, isso também me faz pensar se esse tipo de fator deveria ser levado em conta
Estou há décadas fazendo desenvolvimento open source, quase sempre sozinho ou às vezes montando uma equipe voluntária
Quem já trabalhou com equipe voluntária sabe que isso realmente não é fácil
Claro que não é absolutamente impossível, mas não funciona tão bem com tanta frequência quanto costumamos imaginar
Quando funciona, geralmente é porque existe um “BDFL (ditador benevolente)” ou porque todo mundo está alinhado em torno de um objetivo comum
No meu caso, quase sempre foi mais o segundo caso
O pai dele também passou alguns anos em Moscou