Usando C ++ / Java para desenvolver software para fins comerciais

9

Estou planejando desenvolver um programa que pretendo vender mais tarde. Estou tentando decidir sobre uma linguagem para codificá-la e reduzi-a a C ++ ou Java.

Passei pelas licenças GPL v2 e v3 usadas para o GCC e o OpenJDK do GNU (sim, eu posso entender algumas coisas legais, mas claramente, nem todas). Mas há um ponto em que todos são obscuros (isso deve ter sido uma das primeiras coisas respondidas, IMO): se eu desenvolver um programa usando C ++ / Java e compilá-lo usando o compilador GCC ou o compilador do OpenJDK, posso vendê-lo sem ter colocar meu programa na GPL também?

Tanto quanto posso entender, tenho plenos direitos para atribuir qualquer licença ao meu programa, mas há um problema: diz na licença que não devo vincular a nenhuma biblioteca que esteja sob a GPL. Nesse caso, terei que liberar meu programa sob a GPL.

Agora, não sei o que em C ++ / Java é considerado uma biblioteca; portanto, se eu usar o material normal em C ++ (iostream, lista, mapa etc.) ou as classes / interfaces Java normais disponíveis como parte do JDK padrão 6 distribuição (String, Lista, Mapa, etc.), isso constitui 'vinculação às bibliotecas'?

mosquito
fonte
1. Não prestamos consultoria jurídica por aqui. 2. O que é 'C ++ / Java'? 3. Olhe ao redor e veja milhares e milhares de produtos de software comercial escritos em Java, muitos com componentes JNI.
precisa saber é o seguinte
11
O / em C ++ / Java está sendo usado apenas como uma abreviação de "ou", que é perfeitamente válido em inglês.
Robin Green
Isso soa como uma pergunta para opensource.stackexchange.com . (Se ele ainda não tenha sido respondida.)
Kevin Krumwiede

Respostas:

13

se eu desenvolver um programa usando C ++ / Java e compilá-lo usando o compilador GCC ou o compilador do OpenJDK, posso vendê-lo sem precisar colocar meu programa na GPL também?

Sim. A GPL exclui especificamente a saída da execução do programa:

os resultados do Programa são cobertos apenas se seu conteúdo constituir um trabalho baseado no Programa (independentemente de ter sido realizado com a execução do Programa).

o que significa que, se você incluir bits de GCC ou outra coisa GPL no seu programa, sim, ele precisará ser GPL, caso contrário não - o fato de seu código de objeto ter sido produzido por um compilador GPL não é relevante para saber se ele deve ser GPL .

Todas as bibliotecas de idiomas padrão às quais você vincularia não são GPL ou são GPL, mas possuem uma exceção especial para permitir que o software proprietário se vincule a elas, se você não as modificar . No caso de C ++, refiro-me à libgcc, glibc e libstdc ++; no caso de Java, quero dizer todas as bibliotecas incluídas no JRE.

Tecnicamente, você pode vender legalmente o software GPL de qualquer maneira, mas quase ninguém lucra com isso.

Robin Green
fonte
A LGPL (Lesser GPL) permite que um aplicativo se vincule a ele sem exigir que o aplicativo seja o próprio GPLd. Uma biblioteca GPL, por outro lado, é infecciosa. Mas você está correto, a saída do compilador é explicitamente excluída dos termos da GPL.
precisa saber é o seguinte
e se eu modificar as bibliotecas de idiomas padrão? Posso fazer isso? o que acontece com a licença do meu programa então?
Piotrek
A exceção não se aplica e você deve seguir os termos completos da licença relevante. Além disso, há implicações de marca registrada no caso de Java - melhor não mencionar Java ou OpenJDK em sua documentação ou publicidade, se você o estiver usando (mas consulte o processo judicial Oracle / Google).
Robin Green
8

O GCC e o OpenJDK têm exceções explícitas:

… Quando você usa o GCC para compilar um programa, o GCC pode combinar partes de determinados arquivos de cabeçalho do GCC e bibliotecas de tempo de execução com o programa compilado. O objetivo desta exceção é permitir que a compilação de programas não-GPL (incluindo proprietários) use, dessa maneira, os arquivos de cabeçalho e as bibliotecas de tempo de execução cobertos por essa exceção. …

… Quando o GNU Classpath é usado sem modificação como a biblioteca de classes principais de uma máquina virtual, compilador para o idioma java ou para um programa escrito na linguagem de programação java, isso não afeta o licenciamento para a distribuição direta desses programas…

vartec
fonte
0

O OpenJDK possui GPL, mas com uma exceção para vincular a bibliotecas. http://en.wikipedia.org/wiki/OpenJDK

Usar classes OpenJDK constituiria um link para uma biblioteca que eu pensaria (rt.jar).

Uma biblioteca nesse contexto, do ponto de vista de Java, certamente é um jarro de dependência, guerra, classe etc. De qualquer forma, tenho certeza de que você pode vender legalmente um aplicativo Java - há mais do que alguns por aí que Oracle / A Sun não tomou medidas legais.

rico
fonte
O mesmo acontece com o libstdc ++ - ele também tem uma exceção.
Robin Green
O rt.jar e o libstdc ++ são implementações de uma especificação que não é GPL. Essencialmente, se eu vinculasse meu aplicativo a uma versão do libstdc ++ que não fosse GPL, ele funcionaria de forma idêntica (assumindo que a especificação foi implementada corretamente) nas duas versões. O fato de uma plataforma carregar dinamicamente uma versão GPL da biblioteca não conta no seu aplicativo. Você escreveu para o padrão da plataforma e está coberto pela licença que desejar.
precisa saber é o seguinte
0

Não se preocupe, esta é uma questão de programação de computadores ou pelo menos uma que diz respeito aos programadores.

Pelo que sei, se você criar um software vinculado a algum código GPL, precisará liberar seu código-fonte se distribuir seu programa.

Isso não significa que você precise liberar seu código para o sourceforge, ou seja, mas se um terceiro solicitar o código, você deverá fornecê-lo.


fonte
Esse ponto não é relevante porque a atividade descrita na pergunta não envolve outras coisas, mas vincula ao código GPL.
Robin Green
A pergunta acima: se eu desenvolver um programa usando C ++ / Java e compilá-lo usando o compilador GCC ou o compilador do OpenJDK, posso vendê-lo sem precisar colocar meu programa na GPL também?
Eu acho que estou especificando claramente que, se você usar o código GPL, precisará liberar.
Desculpe, eu era impreciso - em alguns casos, envolve vincular ao código GPL em algum sentido, mas, por exemplo, a exceção Classpath se aplica, para que você não precise liberar seu código sob a GPL.
Robin Green
ahh, ok, em seguida, não sei nada sobre isso