Empacotar o OpenJDK com um aplicativo proprietário permitido pela GPL?

16

Atualmente, estou criando um videogame em Java que provavelmente será distribuído pelo Steam. Obviamente, muitos usuários do Steam não terão o Java já instalado neste caso. Se isso acontecer, eu posso ter um pequeno iniciador nativo que mostra um diálogo informativo informando ao usuário que eles precisam instalar o Java ou simplesmente agrupar meu próprio ambiente de tempo de execução Java (especificamente o OpenJDK 8) com o meu jogo. Meu jogo será de código fechado, no entanto, é baseado em um mecanismo de jogo de código aberto (licenciado pela BSD).

Eu olhei pela licença do OpenJDK. É um projeto da GPL, o que significa que qualquer item vinculado a ela também precisa ser da GPL. No entanto, eles também têm a exceção do caminho de classe. Não tenho certeza se a parte de vinculação se aplica porque meu código não está vinculando a ele mais do que seria com ou sem agrupá-lo. Até onde eu sei, a exceção do caminho de classe não cobre esse caso de uso.

Há uma pergunta semelhante no Stack Overflow , no entanto, que se refere à situação em que um aplicativo é desenvolvido com o OpenJDK, refiro-me à distribuição com o OpenJDK.

john01dav
fonte
4
Você leu a licença do OpenJDK ou procurou perguntas semelhantes ? Esta pergunta é sobre tópicos porque se trata de licenciar seu próprio software: no entanto, compartilhar sua pesquisa atrairá melhores respostas.
Sim, eu tenho. Eu editei a pergunta para refletir isso.
10135 john01dav
Eu li essa pergunta e suas respostas. Não tenho certeza de como ele realmente se relaciona com essa questão, além de estar em um tópico semelhante.
101315 john01dav
Tem que ser OpenJDK? Alguns outros tempos de execução Java podem permitir a distribuição de seus tempos de execução binários sem adicionar termos GPL à sua distribuição. Veja, por exemplo, java.com/en/download/faq/distribution.xml
Brandin

Respostas:

5

Essa é uma pergunta importante, especialmente quando você considera o fato de que a Oracle alterou seus contratos de licenciamento e distribuição começando com Java 9, 10 e 11.

JDK -> Java Development Kit.

Os JDKs não são uma distribuição de 'tempo de execução' - um JDK é uma distribuição de desenvolvedor que contém um tempo de execução como parte do pacote configurável. Os JDKs não são 'distribuídos livremente' pelo desenvolvedor, eles são licenciados para o desenvolvedor. Se você ler o EULA do seu JDK, verá que ele vem com restrições à redistribuição.

JRE -> Java Runtime Engine.

O tempo de execução é (quase sempre) gratuito para download e distribuição, desde que você adira ao EULA para o JRE.

JDK e JRE são licenciados e distribuídos separadamente e independentemente um do outro.

Finalmente, você precisa saber que geralmente também não é permitido distribuir 'partes' ou componentes de um JDK - isso significa que você não deve extrair o JRE do JDK instalado e distribuí-lo ou agrupá-lo separadamente.

A melhor prática é separar o desenvolvimento da implantação.

  • Você desenvolve em um JDK e implementa o projeto
  • A implementação depende de um JRE
Greg Patnude
fonte
-1

Pelo que li na licença, você pode livremente redistribuir o programa, até cobrar para distribuí-lo.

Mas, como tenho experiência pessoal em liberar um jogo Java (embora não seja pago), acho melhor dizer ao usuário que o Java Runtime Environment é necessário na fonte de distribuição (forneça um link para o download do Java) ou tenha o aplicativo dê ao usuário um erro.

Demetry
fonte
2
Você pode dar algumas razões sobre por que deixar o download do usuário pode ser melhor?
Ziggystar
3
Bem, eu já tenho (vários) JREs instalados; ter cada aplicativo agrupado em mais de 150 MB "apenas por precaução" me parece um pouco inútil. Além disso, ter um JRE específico do aplicativo leva a problemas como este: "meu JRE tem esses ajustes, por que não funciona no SEU aplicativo?" stackoverflow.com/a/21417887/19746
Piskvor