Como projetos de software aberto devem lidar com código gerado por IA?

O ótimo KeePassXC, gerenciador de senhas offline e de código aberto, está no centro de uma polêmica envolvendo o uso de código gerado por IAs desde que a política de colaborações e o “leia-me” do projeto ganharam este parágrafo (tradução livre):

A IA generativa está rapidamente se tornando um recurso primário na maioria dos ambientes de desenvolvimento, incluindo o próprio GitHub. Se a maior parte de um envio de código for feita usando IA generativa (por exemplo, codificação por “agente” ou “vibe coding”), documentaremos isso no pull request (PR). Todos os envios de código passam por um rigoroso processo de revisão, independentemente do fluxo de trabalho de desenvolvimento ou do remetente.

A reação de usuários e críticos foi tão intensa que, no domingo (9), um dos mantenedores do projeto, Janek Bevendorff, publicou um post no blog oficial detalhando o posicionamento deles em relação ao código gerado por IA.

Vale destacar — a partir do texto — que:

  1. O KeePassXC não tem nem terá recursos de IA.
  2. Todos os PRs são revisados por um humano antes de serem aceitos (ou rejeitados).
  3. A IA generativa tem sido empregada para “resolver problemas simples e pontuais, adicionar modelos de código [boilerplates] e testes”.

Independentemente do que eu ou você achemos de código gerado por IA, da qualidade ou dos receios éticos acerca do seu uso, creio que a posição do KeePassXC é correta e, portanto, a chuva de críticas, injusta.

Primeiro, porque seria impossível garantir a rejeição de todo código gerado por IA. Ferramentas como o GitHub Copilot não deixam uma “assinatura” ou marca quando são usadas; programadores por vezes misturam código gerado por máquina àquele escrito por eles mesmos.

“Preferimos que eles [colaboradores] divulguem de forma transparente o uso da IA do que ocultem e enviem o código que viole os nossos termos”, escreveu Janek.

Segundo, porque a premissa de que código gerado por IA representa riscos à integridade do software não se sustenta. Sim, o código gerado por IA é ruim, da mesma maneira que o código gerado por programadores inexperientes ou, pior, pessoas mal-intencionadas pode ser ruim ou prejudicial. É mais fácil sabotar um projeto de código aberto sendo humano do que com a ajuda de uma IA — que o digam os recentes ataques do tipo “supply-chain” a pacotes populares do npm.

O único risco real seria o de uma avalanche de envios de código gerado por IA ruins, o que sobrecarregaria os cinco mantenedores do KeePassXC a ponto de gerar gargalos no desenvolvimento. Há casos catalogados dessa situação — o mais notável, talvez, o do cURL. Janek afirma que isso não aconteceu (ainda?) com o KeePassXC e que “ajustaremos as nossas políticas e métodos à medida que necessidades surjam”.

A menos que alguém esteja disposto a usar um arquivo *.txt ou criptografado com todas as suas senhas, é pouco provável que uma política de tolerância zero a software com código gerado por IA seja viável. O KeePassXC se destaca positivamente por dar transparência à situação. Outros talvez não o façam; com software fechado/proprietário sequer é possível saber qualquer coisa do código em si ou das práticas de desenvolvimento.

É legítimo questionar. Na verdade, salutar. Janek concorda e encerra o texto no blog do KeePassXC com estas palavras:

Então, por favor, seja cético em relação à IA. Mas também seja cético em relação a seres humanos desconhecidos como nós somos para você. Se a nossa política de IA abalou a sua confiança em nós, pergunte a si mesmo por que você confiou em nós (ou em qualquer pessoa) em primeiro lugar. Você não nos conhece, confia em nossa reputação; ganhamos isso construindo um produto estável, o que continuaremos fazendo. Você tem o nosso total compromisso de que não integraremos nenhum recurso de IA ao KeePassXC e não mesclaremos nenhum código (humano ou feito por IA) sem testes e revisão completa. Temos altos padrões; por favor, continue nos mantendo a eles, mas vamos ter uma conversa racional e bem informada.

A newsletter do Manual. Gratuita. Cancele quando quiser:

Quais edições extras deseja receber?


Siga no Bluesky, Mastodon e Telegram. Inscreva-se nas notificações push e no Feed RSS.

4 comentários

  1. Acho a postura deles correta, mas todo esse drama poderia ser evitado se não tivessem manifestado nada. Pq pelo que entendi um código gerado por IA passa pelo mesmo processo de aprovação que um código humano, com a diferença de ter um label especial… Precisava disso?

  2. > Sim, o código gerado por IA é ruim, da mesma maneira que o código gerado por programadores inexperientes ou, pior, pessoas mal-intencionadas pode ser ruim ou prejudicial.

    Não sei se você quis dizer que ‘o código gerado por IA pode ser ruim’, senão eu defendo que o código gerado por IA não é necessariamente ruim. Em muitos casos é justo o contrário: é um código limpo e bem organizado, normalmente ciente dos detalhes da linguagem de programação. E, assim, como programar em par (pair programming), programar com IA pode envolver crítica e bom senso, resultando em algo melhor do que fazer tudo sozinho ou tudo só com IA.

    Sim, há chance de alucinação e geração de bugs, em especial quando o prompt envolve pedir algo mais obscuro/complexo. Mas daí um programador experiente claramente cai com frequência na mesma cilada. Não é por acaso que existe code review mesmo de programadores senior, não é mesmo?

    E, honestamente, sei lá que utilidade tem informar que o código submetido pra revisão foi feito parcialmente ou totalmente por AI. Em tese, quem vai revisar o código não deveria ter viés algum. Mas se realmente fazem questão disso, acho que o trabalho é pequeno demais pra implicar e se recusar.

    > O único risco real seria o de uma avalanche de envios de código gerado por IA ruins, o que sobrecarregaria os cinco mantenedores do KeePassXC a ponto de gerar gargalos no desenvolvimento.

    Isso sim pode ser um problema. Mas aí fica a pergunta: estatisticamente falando, os códigos submetidos por pessoas costumam ter mais qualidade que os de IA? Porque se a resposta for ‘não’, então pra mim reforça a minha indiferença com aquele ponto acima de deixar explícito que o código foi feito com ajuda de IA.

    1. (Ghedin, antigamente ao colocar > na frente do parágrafo gerava aquele ‘quote’ formatado bonitinho, mas parece que recentemente não tá mais funcionando :( )

  3. Eles estão certos. É melhor ser transparente e dizer quais códigos foram gerados por IA do que omitir isso.
    O único problema é se começarem a enviar um tsunami de códigos gerados por IA, porque são apenas 5 pessoas no projeto.