
A GNU General Public License (vulgarmente designada por "GPL") é uma licença de software open-source amplamente reconhecida. Impõe que, sempre que o código é utilizado, modificado ou distribuído, o código-fonte permaneça aberto e seja partilhado nos mesmos termos de licença. A GPL é uma das licenças mais influentes do universo open-source.
Uma "licença open-source" define as condições em que um autor permite a terceiros utilizar e modificar o seu código—semelhante a partilhar uma receita e autorizar melhorias. A GPL obriga a que qualquer versão melhorada da "receita" seja igualmente tornada pública e partilhada sob regras idênticas. Esta reciprocidade assegura que a comunidade beneficie continuamente das melhorias.
No essencial, a GPL consagra o conceito de "copyleft", ou seja, "direito de autor recíproco": ao utilizar ou modificar código tornado aberto por terceiros, qualquer distribuição das suas alterações deve igualmente ser aberta, mantendo as notificações originais de direitos de autor e o texto da licença.
Os princípios-chave incluem:
O kernel Linux utiliza a GPL-2.0 há vários anos (em 2025), sendo um dos exemplos mais emblemáticos de adoção da GPL.
A GPL determina se pode distribuir software que utiliza código open-source em formato fechado ou se terá de abrir o seu código-fonte ao distribuir o projeto. No contexto Web3, as obrigações da GPL podem aplicar-se a clientes de nós, carteiras, frontends e smart contracts.
Por exemplo, se o frontend da sua dApp integrar um componente licenciado sob GPL e distribuir uma versão executável aos utilizadores, poderá ser obrigado a publicar o código-fonte do frontend e a manter todas as notificações originais. Esta prática reforça a transparência na colaboração, mas pode limitar modelos de negócio de código fechado.
On-chain, práticas open-source aumentam a auditabilidade e a segurança. Muitas equipas optam por divulgar código crítico para gerar confiança, avaliando cuidadosamente a compatibilidade das licenças com a sua estratégia de produto.
Os smart contracts são geralmente desenvolvidos em Solidity, com a licença indicada no início dos ficheiros através do SPDX-License-Identifier (ex.: "SPDX-License-Identifier: GPL-3.0-or-later"). Os requisitos de licenciamento recíproco da GPL suscitam várias considerações para smart contracts:
Primeiro, Distribuição: Compilar e implementar um contrato on-chain é habitualmente considerado distribuição pública. Se o contrato incluir ou modificar código GPL, a disponibilização pública pode obrigar à divulgação das modificações em open-source. A avaliação sobre se constitui distribuição depende do contexto—analise esta questão logo na fase de conceção.
Segundo, Ligação e Derivação: A herança de contratos ou chamadas a bibliotecas são frequentemente consideradas como criação de obras derivadas. Se herdar de um contrato licenciado sob GPL, o contrato distribuído tem de respeitar a mesma licença.
Terceiro, Prática Comum: Muitas equipas optam por licenças mais permissivas como MIT ou Apache para contratos principais, reduzindo obrigações a jusante. Se utilizar GPL, disponibilize o código-fonte completo, notificações de direitos de autor e instruções de compilação no repositório para facilitar auditoria e reutilização.
A principal diferença entre as licenças GPL, MIT e Apache reside na intensidade das exigências recíprocas.
Em suma: Opte pela GPL para máxima colaboração aberta e partilha obrigatória de melhorias; escolha MIT ou Apache para maior flexibilidade entre open-source e comercialização fechada.
Passo 1: Coloque o ficheiro LICENSE (texto integral da GPL) no diretório raiz do repositório e indique os detalhes de licenciamento no README.
Passo 2: Adicione um cabeçalho SPDX-License-Identifier (ex.: "SPDX-License-Identifier: GPL-3.0-or-later") no topo de cada ficheiro fonte para que as toolchains identifiquem a licença.
Passo 3: Preserve as notificações originais de direitos de autor e de licença; assinale claramente as suas alterações com data, autor e resumo.
Passo 4: Disponibilize o código-fonte de qualquer executável distribuído—nomeadamente, publicando o código-fonte, scripts de build e documentação de dependências para garantir reprodutibilidade.
Passo 5: Analise as dependências de terceiros quanto à compatibilidade de licenças; se necessário, utilize LGPL (mais adequada para bibliotecas).
Passo 6: Realize uma revisão de conformidade antes da disponibilização pública; consulte aconselhamento jurídico se houver utilização comercial para minimizar riscos.
As principais versões 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.
Adicionalmente, a LGPL é destinada a bibliotecas (permitindo ligação sob condições mais permissivas), enquanto a AGPL estende as obrigações open-source ao software disponibilizado em rede—serviços backend e interações frontend Web3 devem considerar cuidadosamente os triggers da AGPL.
Sim—a GPL permite uso comercial. Contudo, ao distribuir obras derivadas contendo código GPL, deve abrir o seu código e manter todas as notificações. Estratégias empresariais comuns incluem:
Os equívocos mais frequentes incluem:
Os riscos envolvem infração e disputas de conformidade, podendo afetar financiamento, listagens ou parcerias. Projetos que gerem fundos ou segurança contratual devem finalizar o desenho de licenciamento e auditorias de código-fonte numa fase inicial.
Se pretende fomentar a colaboração comunitária, garantir a devolução de melhorias e assegurar auditabilidade, a GPL é uma escolha sólida. Se procura maior liberdade para modelos de código fechado ou dual licensing, MIT ou Apache oferecem mais flexibilidade. Mantenha licenciamento consistente e rastreável em smart contracts e frontends—inclua ficheiros LICENSE e cabeçalhos SPDX nos repositórios e normalize os caminhos de distribuição do código-fonte. Esteja atento às diferenças de versões, compatibilidade de dependências e se o seu caso constitui distribuição ou derivação. Realize sempre verificações de conformidade e procure aconselhamento jurídico antes de comercializar. Com uma estratégia de licenciamento clara, é possível garantir colaboração fiável e conformidade regulatória no ecossistema Web3.
Sim—mas terá igualmente de disponibilizar o seu código derivado em open-source. O efeito “viral” da GPL implica que, ao desenvolver um produto baseado em código GPL e comercializá-lo, é obrigado a publicar o código-fonte sob os mesmos termos de licença. Esta exigência torna a GPL incompatível com modelos de negócio de código fechado. Se o seu negócio depende de manter o código privado, considere bibliotecas licenciadas sob Apache ou MIT.
O principal risco é uma eventual ação judicial dos autores originais por violação de direitos de autor. Embora a legislação sobre smart contracts esteja ainda em evolução, tribunais em várias jurisdições têm validado a aplicabilidade das obrigações GPL—o incumprimento pode resultar em indemnizações. Adicionalmente, caso procure financiamento ou aquisição, investidores podem hesitar devido ao risco associado à GPL. Consulte um advogado especializado em open-source atempadamente ou opte por licenças menos restritivas para reduzir a exposição.
É uma expressão comum para descrever o efeito “viral” da GPL. Ao incluir código GPL num projeto—mesmo de forma indireta—todo o projeto pode ter de cumprir os termos da GPL (em certos casos). Para programadores que pretendem manter o seu código proprietário, esta “obrigatoriedade de abertura” é sentida como uma “contaminação” do projeto. Não se trata de uma falha, mas sim de um objetivo intencional—proteger os princípios do software livre.
Depende da forma como interage com a biblioteca e da versão da GPL aplicável. Se apenas invocar APIs de forma dinâmica (por exemplo, chamadas a serviços externos), geralmente não terá de abrir o seu projeto. Contudo, ligação estática ou modificação e utilização de código GPL obriga à disponibilização do código sob GPL. Consulte um advogado especializado em open-source para clarificar o que constitui “obra derivada” e evitar ambiguidades legais.
Terá de cumprir ambas as licenças—o que pode ser complexo. A GPL exige abertura de todas as obras derivadas; a MIT permite utilização em código fechado—estes termos entram em conflito. Na prática, deve cumprir a licença “mais restritiva” (GPL) para garantir compatibilidade. Evite misturar licenças sempre que possível ou separe claramente módulos por tipo de licença para reduzir desafios de conformidade.


