Guias · 06

GPL "only" vs "or later"

O que significa a frase 'or any later version' da GPL, por que o kernel Linux insiste na GPL-2.0-only, por que GPL-2.0-only e GPL-3.0 são incompatíveis e critérios para escolher.

Última verificação: 2026-09-23

A frase em questão

O aviso recomendado das licenças GNU contém a seguinte frase.

either version 3 of the License, or (at your option) any later version.

Com essa frase, quem recebe pode escolher seguir as condições da versão indicada ou de qualquer versão que a FSF venha a publicar depois. Isso é o 'or later' (SPDX GPL-3.0-or-later). Se você remover a parte 'or later' e indicar apenas uma versão específica, fica 'only' (GPL-3.0-only).

Essa estrutura é definida pela seção 14 da GPL-3.0 e pela seção 9 da GPL-2.0. Em particular, a seção 9 da GPL-2.0 determina que, se o programa não indicar nenhum número de versão, pode-se escolher qualquer versão publicada pela FSF. Por isso, deixar só o arquivo LICENSE sem declarar a cláusula de versão pode levar a interpretações diferentes da pretendida.

Por que usar 'or later'

A FSF recomenda o 'or later'. O motivo é a compatibilidade futura. Quando o direito e a tecnologia mudarem e surgir uma nova GPL, o código 'or later' poderá se combinar naturalmente com a nova versão. De fato, código GPL-2.0-or-later pôde entrar diretamente em projetos GPL-3.0, mas código GPL-2.0-only não.

A seção 14 da GPL-3.0 vai além e permite designar um 'procurador (proxy)'. Se a pessoa designada pelo titular decidir publicamente aceitar uma versão posterior, essa decisão passa a valer.

Por que escolher 'only'

O 'or later' também significa concordar antecipadamente com uma licença que ainda não foi escrita. Se a FSF publicar no futuro uma versão com condições diferentes das que você deseja, quem recebe poderá escolher essa versão para usar o seu código.

O kernel Linux é o exemplo típico. O kernel é GPL-2.0-only. Linus Torvalds declarou publicamente ser contra a cláusula de informações de instalação da GPL-3.0 (a chamada anti-tivoização), e, como o kernel mistura os direitos autorais de milhares de contribuidores, na prática nem seria possível mudar a licença.

Impacto na compatibilidade

Resumindo a matriz de compatibilidade da FAQ das licenças GNU:

Código importado → meu projetoGPL-2.0-onlyGPL-2.0-or-laterGPL-3.0
GPL-2.0-onlySimSim (obra combinada 2.0-only)Não
GPL-2.0-or-laterSimSimSim
GPL-3.0NãoSim (obra combinada 3.0)Sim
LGPL-3.0NãoSim (obra combinada 3.0)Sim

O ponto central é que GPL-2.0-only e GPL-3.0 não aceitam uma à outra. Cada uma exige 'não impor restrições adicionais', e as condições adicionais de uma (como as cláusulas de patentes e de informações de instalação da 3.0) são restrições adicionais do ponto de vista da outra. Mais combinações podem ser verificadas no verificador de compatibilidade.

Critérios de escolha

Como indicar

  1. Em LICENSE (ou COPYING), mantenha inalterado o texto da versão correspondente. O texto em si não distingue only de or-later.
  2. Declare a cláusula de versão no aviso de cada arquivo e no identificador SPDX. Escolhendo 'only' ou 'or-later' na aba Cabeçalho de arquivo do gerador, o aviso oficial GNU e a linha SPDX são criados juntos.
  3. Registre também em uma linha no README (por exemplo, 'Licensed under GPL-3.0-or-later').
Este texto é informação geral e não constitui aconselhamento jurídico. Para decisões importantes, consulte um profissional.

Fontes