
A GNU General Public License (popularmente chamada de "GPL") é uma das licenças de software open source mais reconhecidas. Ela determina que, sempre que um código for utilizado, modificado ou distribuído, o código-fonte deve permanecer aberto e ser compartilhado sob os mesmos termos de licença. A GPL é uma das licenças mais influentes do universo open source.
Uma "licença open source" estabelece as condições para que o autor permita que outros utilizem e modifiquem seu código—como compartilhar uma receita e autorizar melhorias. A GPL exige que qualquer versão aprimorada da "receita" também seja tornada pública e compartilhada sob as mesmas regras. Essa exigência recíproca garante que a comunidade se beneficie continuamente das evoluções.
No centro da GPL está o conceito de "copyleft", entendido como "direito autoral recíproco": ao utilizar ou modificar código aberto por terceiros, qualquer distribuição das suas alterações também deve ser aberta, mantendo os avisos de direitos autorais e o texto da licença originais.
Os principais princípios são:
O kernel Linux adota a GPL-2.0 há anos (até 2025), sendo um dos exemplos mais emblemáticos de uso da GPL.
A GPL determina se é possível distribuir software com código open source em formato proprietário ou se será necessário abrir o código-fonte ao distribuir o projeto. No contexto Web3, as obrigações da GPL podem ser acionadas para clientes de nodes, wallets, frontends e smart contracts.
Por exemplo, se o frontend da sua dApp incorpora um componente licenciado sob a GPL e você distribui uma versão executável para usuários, pode ser necessário liberar o código-fonte do frontend e manter todos os avisos originais. Isso incentiva a transparência na colaboração, mas pode limitar modelos de negócios proprietários.
No ambiente on-chain, práticas open source aumentam a auditabilidade e a segurança. Muitas equipes optam por publicar códigos críticos para fortalecer a confiança, mas avaliam cuidadosamente a compatibilidade da licença com sua estratégia de produto.
Smart contracts geralmente são desenvolvidos em Solidity, com a licença sinalizada no topo dos arquivos via SPDX-License-Identifier (ex.: "SPDX-License-Identifier: GPL-3.0-or-later"). As exigências recíprocas da GPL trazem algumas considerações para smart contracts:
Primeiro, Distribuição: Compilar e implantar um contrato on-chain normalmente é considerado distribuição pública. Se seu contrato inclui ou modifica código GPL, a publicação pode exigir que você abra suas modificações. A definição de distribuição depende do contexto—avalie isso já na fase de design.
Segundo, Vinculação e Derivação: Herança de contratos ou chamadas a bibliotecas geralmente são tratadas como criação de obras derivadas. Se você herdar de um contrato GPL, seu contrato distribuído deve seguir a mesma licença.
Terceiro, Prática Comum: Muitas equipes escolhem licenças mais permissivas como MIT ou Apache para contratos principais, reduzindo obrigações para terceiros. Se optar pela GPL, disponibilize o código-fonte completo, avisos de direitos autorais e instruções de build no repositório, facilitando auditoria e reutilização.
A diferença central entre GPL, MIT e Apache está na intensidade dos requisitos recíprocos.
Resumindo: Escolha GPL para máxima colaboração aberta e compartilhamento obrigatório de melhorias; MIT ou Apache para maior flexibilidade entre modelos abertos e fechados.
Etapa 1: Coloque o arquivo LICENSE (texto integral da GPL) na raiz do repositório e detalhe o licenciamento no README.
Etapa 2: Inclua um cabeçalho SPDX-License-Identifier (ex.: "SPDX-License-Identifier: GPL-3.0-or-later") no topo de cada arquivo-fonte para que toolchains possam identificar a licença.
Etapa 3: Preserve os avisos de direitos autorais e declarações de licença dos autores originais; destaque suas próprias alterações com data, autor e um resumo.
Etapa 4: Ofereça uma forma de obter o código-fonte de qualquer executável distribuído—por exemplo, publicando código-fonte, scripts de build e documentação de dependências para garantir reprodutibilidade.
Etapa 5: Revise as dependências de terceiros quanto à compatibilidade de licenças; se necessário, utilize LGPL (mais adequada para bibliotecas).
Etapa 6: Realize uma revisão de conformidade antes de lançar; consulte assessoria jurídica se houver uso comercial para mitigar riscos.
As versões principais são v2 e v3:
"Or later" vs. "Only": Selecionar "GPL-3.0-or-later" permite adotar versões futuras para maior flexibilidade; "only" fixa a versão, facilitando a gestão de compatibilidade.
Além disso, a LGPL é voltada para bibliotecas (permitindo vinculação sob condições mais permissivas), enquanto a AGPL amplia as obrigações open source para software fornecido via rede—serviços backend e interações frontend Web3 devem avaliar cuidadosamente os gatilhos da AGPL.
Sim—a GPL permite uso comercial. No entanto, ao distribuir obras derivadas contendo código GPL, é obrigatório abrir o código e manter todos os avisos. Estratégias comuns incluem:
Equívocos frequentes incluem:
Os riscos envolvem infração e disputas de conformidade, o que pode afetar captação de recursos, listagens ou parcerias. Projetos que lidam com fundos ou segurança de contratos devem definir a estratégia de licenciamento e realizar auditorias no código-fonte desde o início.
Se o objetivo é promover colaboração comunitária, garantir que melhorias sejam devolvidas e manter auditabilidade, a GPL é uma escolha sólida. Se busca mais flexibilidade para modelos proprietários ou dual licensing, MIT ou Apache oferecem maior liberdade. Mantenha licenciamento consistente e rastreável para smart contracts e frontends—inclua arquivos LICENSE e cabeçalhos SPDX nos repositórios e padronize os caminhos de distribuição do código-fonte. Atente-se às diferenças de versões, compatibilidade de dependências e se seu caso constitui distribuição ou derivação. Sempre realize revisões de conformidade e consulte assessoria jurídica antes de comercializar. Com uma estratégia de licenciamento clara, é possível garantir colaboração confiável e conformidade regulatória no ecossistema Web3.
Sim—mas você também deve liberar seu código derivado como open source. O efeito “viral” da GPL significa que, se você desenvolver um produto baseado em código GPL e comercializá-lo, será obrigado a publicar o código-fonte sob os mesmos termos de licença. Esse requisito central torna a licença incompatível com modelos de negócios proprietários. Se sua empresa depende de manter o código fechado, considere bibliotecas licenciadas sob Apache ou MIT.
O risco principal é a possibilidade de ação judicial dos autores originais por violação de direitos autorais. Apesar da legislação sobre smart contracts ainda estar em desenvolvimento, tribunais em diferentes jurisdições já reconheceram a exigibilidade das obrigações da GPL—descumpri-las pode resultar em indenizações. Além disso, ao buscar investimentos ou aquisições, investidores podem hesitar diante dos riscos percebidos da GPL. Consulte assessoria jurídica desde o início ou opte por licenças menos restritivas para mitigar riscos.
Essa expressão é usada para descrever o efeito “viral” da GPL. Ao incluir código GPL em seu projeto—even que de forma indireta—todo o projeto pode precisar cumprir os termos da GPL (em certos cenários). Para desenvolvedores que desejam manter o código fechado, essa “obrigatoriedade de abertura” é vista como uma “contaminação”. Isso não é um defeito, mas uma escolha de design—proteger os princípios do software livre.
Depende de como ocorre a interação com a biblioteca e da versão da GPL aplicável. Se você apenas faz chamadas dinâmicas à API (ex.: chamadas externas), normalmente não é necessário abrir o código. No entanto, vinculação estática ou modificação e uso de código GPL exigirá a publicação do seu projeto sob a GPL. Consulte um advogado especializado em open source para esclarecer o que caracteriza “obra derivada” e evitar insegurança jurídica.
É preciso cumprir ambas as licenças—o que pode ser complexo. A GPL exige a abertura de todo trabalho derivado; a MIT permite uso proprietário—esses termos são conflitantes. Na prática, seu projeto deverá seguir a licença “mais restritiva” (GPL) para garantir compatibilidade. Evite misturar licenças sempre que possível ou separe claramente os módulos por tipo de licença para reduzir desafios de conformidade.


