Os fundadores do OpenTofu tinham uma missão. Chateado com as mudanças de licenciamento da HashiCorp em agosto de 2023 para sua popular ferramenta de infraestrutura como código Terraform, OpenTofu se propôs a ser o “sucessor de código aberto do Terraform licenciado por MPLv2”, prometendo ainda que “será orientado pela comunidade, imparcial, em camadas, modular e compatível com versões anteriores.”
Extremamente promissor, mas extraordinariamente difícil de realizar. Na verdade, é tão difícil que o OpenTofu pode ter pegado ilegalmente o código da HashiCorp para acompanhar o ritmo.
Pelo menos, é difícil evitar essa conclusão, examinando os repositórios GitHub do OpenTofu e comparando-os com os do HashiCorp. Especificamente, o OpenTofu parece ter levantado o código Terraform relacionado a um novo removed
recurso de bloco implementado pela primeira vez no Terraform V1.7, que foi lançado sob a Business Software License (BUSL) alguns meses após a criação do fork OpenTofu. O que dizer? OpenTofu pegou esse código HashiCorp licenciado pela BUSL, removeu os cabeçalhos e tentou relicencia-lo sob a Licença Pública Mozilla (MPL 2.0).
Pessoal, não é assim que o código aberto funciona. Você pode discordar da escolha de licença do detentor dos direitos autorais, mas não tem o direito de pegar o código de outra pessoa e copiar e substituir sua licença.
A arrogância da juventude
OpenTofu foi lançado em setembro de 2023 com muito alarde e “compromissos formais” de apoio de mais de 140 organizações, entre elas Cloudflare, Harness, Oracle e GitLab. É claro que os principais mantenedores vieram principalmente de concorrentes diretos da HashiCorp (Spacelift, env0) que construíram seus negócios no Terraform e ficaram chateados com a mudança de licença da HashiCorp. Justo.
Em janeiro, o projeto estava divulgando a disponibilidade geral do OpenTofu, ao mesmo tempo que chamava recursos a serem lançados em breve, como criptografia de estado do lado do cliente que o Terraform não tinha. Apesar do início otimista, porém, a equipe logo começou a perceber a dificuldade de implementação do recurso. A segurança é difícil. (Talvez a HashiCorp não fosse burra, afinal.)
Se esse ritmo de desenvolvimento parece bom demais para ser verdade, vindo de um grupo reunido às pressas de empresas relativamente pequenas (e nenhum dos principais fornecedores de nuvem), talvez fosse. Afinal, independentemente do que se pense sobre a mudança de licença da HashiCorp, a empresa passou uma década construindo o produto. A força de engenharia por trás de tal esforço não ganha vida em poucos meses, quaisquer que sejam os ideais ambiciosos dos fundadores.
Magia de licenciamento
No Terraform V1.7, a HashiCorp introduziu um novo recurso importante: removed
automação de blocos, que permite ao Terraform gerenciar melhor a exclusão de recursos. Pense nisso como uma abordagem baseada em configuração para terraform state rm
. No entanto, o recurso em si, embora legal, não é o ponto. O momento desse recurso é. É importante ressaltar que esse recurso foi introduzido no final de novembro de 2023 depois HashiCorp mudou para o BUSL. Se alguém quisesse usar o removed
funcionalidade de bloqueio, eles não conseguiram obtê-la sob o MPL.
No final de fevereiro, o OpenTofu lançou uma funcionalidade semelhante à automação de blocos removidos da HashiCorp. Não apenas em termos do que faz, mas também em termos do código escrito para realizá-lo. Dê uma olhada nesses repositórios e me diga se você não vê a mesma coisa:
Tal argumento se torna menos persuasivo, entretanto, quando você olha os cabeçalhos do OpenTofu nos arquivos. Aqui está o cabeçalho que a HashiCorp usou em seu removed
bloquear arquivos:
// Direitos autorais (c) HashiCorp, Inc.
// Identificador de licença SPDX: BUSL-1.1
Agora, aqui está o cabeçalho que o OpenTofu usou:
// Copyright (c) 2023 HashiCorp, Inc.
// Identificador de licença SPDX: MPL-2.0
Veja o problema? OpenTofu reconhece que está usando o código da HashiCorp, mas finge que o código em questão foi licenciado sob a MPL. Exceto que não foi. Sempre. Todo o código em questão foi lançado depois HashiCorp mudou para BUSL para Terraform. Na melhor das hipóteses, a comunidade OpenTofu se envolveu em ilusões, esperando desesperadamente poder fazer com que o código licenciado BUSL se tornasse magicamente um código licenciado MPL. Na pior das hipóteses, os desenvolvedores do OpenTofu se apropriaram indevidamente da propriedade intelectual da HashiCorp e tentaram torná-la sua.
Independentemente do que os desenvolvedores do OpenTofu possam pensar, esse tipo de comportamento é o oposto de uma “abordagem voltada para a comunidade” positiva e definitivamente não mostra “o valor do código aberto”, como proclama o comunicado de imprensa da Linux Foundation. Parece muito com uma violação da propriedade intelectual da HashiCorp. É completamente justo que o OpenTofu discorde da mudança de licença da HashiCorp e bifurque o projeto; é completamente ilegal para o OpenTofu ou qualquer outra pessoa pegar o código da HashiCorp e aplicar a licença que preferir.
Isto parece um fracasso de governação, entre outras coisas. Não há como Cloudflare, Oracle e outras empresas responsáveis se inscreverem nesse tipo de comunidade, mas parece que é isso que estão conseguindo.