O que significa "GPL com exceção do caminho de classe" na prática?


70

A Oracle parece licenciar todo o código-fonte aberto relacionado a Java sob a GPL, com uma exceção de caminho de classe . Pelo que entendi, isso parece permitir combinar essas bibliotecas com seu próprio código em produtos que não precisam ser cobertos pela GPL.

  1. Como é que isso funciona?
  2. Quais são os exemplos de como eu posso e não posso usar essas classes?
  3. Por que essa nova licença foi usada em oposição à LGPL, que parece permitir praticamente as mesmas coisas, mas é melhor estabelecida e entendida?
  4. Quais são as diferenças para a LGPL?

11
Encontrei isso na wikipedia: en.wikipedia.org/wiki/… que esclarece um pouco as coisas, mas ainda não entendo por que alguém usaria isso na LGPL. Boa pergunta!

11
Que as páginas da Wikipedia não mencionam coisas como "o usuário deve poder trocar a biblioteca com sua própria versão", que são disposições da LGPL. Talvez a exceção GPL + não exija isso?
Thilo #

11
Continuando lendo, esse parece ser o caso: "LGPL formula mais requisitos para a exceção de vinculação: você deve permitir a modificação das partes da Biblioteca que usa e a engenharia reversa (do seu programa e da biblioteca) para depurar tais modificações"
Thilo

Nesse caso, o que não posso fazer sob esta licença? Posso copiar o código licenciado (escolher + escolher classes) na minha própria base de código (é claro, não modificado)? Posso usar ferramentas de construção automatizadas para modificar o binário resultante? Ofuscadores, minimizadores, decodificadores de código morto?
Thilo #

Você pode copiar o código disso e usá-lo apenas no seu próprio código, se o seu próprio código também for lançado sob a licença "GPL with classpath exception" . Se o seu código for proprietário ou com a maioria das outras licenças de código aberto, como o MIT, você não poderá usá-lo.
Abhi Beckert

Respostas:


69

Primeiro, eu não sou advogado. Mas estudei muitas licenças e entendi os problemas a respeito delas.

Segundo, sei que essa é uma pergunta antiga, mas acho que ainda é um ponto de confusão e preocupação. Se não é um ponto de preocupação, deveria ser. Escolher uma licença é um grande problema que você não pode mudar trivialmente, especialmente se houver vários colaboradores envolvidos.

(L) A GPL foi escrita com C / C ++ em mente, infelizmente. Ele fala de "Código-fonte", "Código de objeto", "Link dinâmico", "Link estático", "Compiladores" e "Interpretador de código de objeto". Portanto, traduzir isso para outras linguagens que não seguem as mesmas técnicas de compilação (como o bytecode de Java, a compilação just in time do Python ou a natureza interpretada do Javascript) requer algumas suposições e suposições. Quando você está falando sobre a lei - ou seja, pensar em eventuais processos judiciais em que duas partes estão discutindo - não ter uma distinção clara é uma COISA MAU.

Um trecho de código padrão licenciado pela GPL é bem direto em sua intenção. Qualquer pessoa que use esse código deverá liberá-lo para todos os usuários quando o distribuir ou vender. Esse é o vírus GPL que Richard Stallman queria criar e fez de forma clara e limpa.

A LGPL foi originalmente uma tentativa de permitir uma "biblioteca" que não seria viral. Mas eles ainda queriam que o usuário final pudesse substituir a biblioteca por conta própria, daí a distinção entre vinculação "estática" e "dinâmica" - o usuário poderia trocar para uma biblioteca vinculada dinamicamente diferente, para que não precisasse ser licenciado como GPL. E um link estático exigia que o usuário fosse GPL. A licença realmente fala sobre "arquivos de cabeçalho", que são claros em C / C ++, mas obviamente não são claros quando você está nos mundos Java, Python, Javascript, etc. Portanto, o L ("biblioteca") do material LGPL é enlameado, na melhor das hipóteses.

Isso chega ao cerne da questão. Tudo o que não está claro é MAU no mundo das leis. Se estou pensando em criar algo usando o componente GPL ou LGPL, quero ter certeza de qual é minha situação legal no futuro se eu for a tribunal. Mas até hoje não tenho certeza, porque realmente não houve bons processos judiciais estabelecendo precedentes legais, apenas argumentos intelectuais em fóruns como este.

Aqui é onde a exceção do caminho de classe é inestimável. Ele afirma claramente que o código sob a licença é (L) GPL, mas qualquer coisa usando esse código pode seguir a licença que eles desejam. Não quero nenhuma desculpa. Se você alterar o código principal (por exemplo, corrigir bugs), ainda precisará liberar essas alterações como parte da GPL. Mas o uso NÃO o infecta.

Da perspectiva dos negócios, entendo por que alguns não querem tocar no código GPL com um poste de 10 pés. A situação legal não é clara e os negócios podem ser prejudicados uma década depois, quando o precedente legal for finalmente estabelecido. Ou eles podem ficar presos no tribunal por anos lutando para estabelecer o precedente legal. Independentemente, eles simplesmente não querem arriscar o custo dessa batalha. A adição da cláusula de exceção de caminho de classe elimina as questões legais e evita qualquer possível processo judicial (sério).

Então, para mim, a exceção do Classpath é muito diferente da LGPL. É uma maneira legalmente limpa de desenhar uma linha clara, permitindo o uso não-GPL de código-fonte ou bibliotecas GPL ou LGPL.


21
IANAL, mas sou um dos criadores da exceção do caminho de classe, e esta é a resposta certa. A exceção foi criada para oferecer suporte a casos de uso incorporados compilados pela AOT, em que os desenvolvedores vinculariam estaticamente binários (com gcj no nosso caso). Precisávamos de algo como a licença libgcc, então escrevi a primeira versão da exceção do Classpath com base nisso. Desde então, amadureceu, mas o espírito é o mesmo.
Anthony Green

6

A GPL com exceção de caminho de classe se comporta como LGPL para a maioria dos usos.

Isso significa que você precisa enviar a fonte da biblioteca sob demanda. Isso não significa que você precise enviar sua própria fonte. Isso significa que você não precisará fornecer uma maneira de substituir a biblioteca se vincular estaticamente a ela, mas não poderá usar uma chave pública para impedir a substituição.


-3

Parece que as licenças no estilo "GPL com exceção de caminho de classe" podem ser mais antigas que o LGPL.

Talvez a única razão pela qual alguém ainda o use é porque o código GPL não pode ser migrado para o código LGPL sem a permissão por escrito de todos que já contribuíram com código.


7
A primeira versão da LGPL foi lançada em 1991, portanto é anterior ao Java. pt.wikipedia.org/wiki/LGPL
Thilo:

Ele é anterior ao java, mas é anterior a todo o código dentro do Java? Talvez a primeira versão do Java contivesse código de algum projeto mais antigo "GPL with classpath".
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.