Usar C ++ / Java para desarrollar software con fines comerciales

9

Estoy planeando desarrollar un programa que tengo la intención de vender más tarde. Estoy tratando de decidir sobre un lenguaje para codificarlo, y me he reducido a C ++ o Java.

He pasado por las licencias GPL v2 y v3 utilizadas para GCC y OpenJDK de GNU (sí, puedo entender una cantidad de cosas legales, pero claramente, no todas). Pero hay un punto en el que todos están oscuros (esta debería haber sido una de las primeras cosas respondidas, OMI): si desarrollo un programa usando C ++ / Java y lo compilo usando el compilador GCC o el compilador de OpenJDK, ¿puedo venderlo sin tener colocar mi programa bajo GPL también?

Hasta donde puedo entender, tengo todos los derechos para asignar cualquier licencia a mi programa, pero hay un inconveniente: dice en la licencia que no debería vincularme a ninguna biblioteca que esté bajo GPL. Si es así, tendré que lanzar mi programa bajo GPL.

Ahora, no sé qué en C ++ / Java se considera una biblioteca, así que si uso las cosas normales en C ++ (iostream, list, map, etc.) o las clases / interfaces normales de Java disponibles como parte del JDK estándar 6 distribución (Cadena, Lista, Mapa, etc.), ¿esto constituye 'vinculación a las bibliotecas'?

mosquito
fuente
1. No hacemos asesoramiento legal por aquí. 2. ¿Qué es 'C ++ / Java'? 3. Mire a su alrededor y vea miles y miles de productos de software comerciales escritos en Java, muchos con componentes JNI.
bmargulies
1
El / en C ++ / Java solo se está utilizando como abreviatura de "o", que es un inglés perfectamente válido.
Robin Green
Esto suena como una pregunta para opensource.stackexchange.com . (Si aún no se ha respondido allí.)
Kevin Krumwiede

Respuestas:

13

si desarrollo un programa usando C ++ / Java y lo compilo usando el compilador GCC o el compilador de OpenJDK, ¿puedo venderlo sin tener que colocar mi programa también bajo GPL?

Si. La GPL excluye específicamente el resultado de ejecutar el programa:

el resultado del Programa está cubierto solo si su contenido constituye un trabajo basado en el Programa (independientemente de haber sido realizado al ejecutar el Programa).

lo que significa que si incluye bits de GCC o algo más GPL en su programa, entonces sí tendría que ser GPL, de lo contrario no, el hecho de que su código objeto fue producido por un compilador GPL no es relevante para saber si debe ser GPL .

Todas las bibliotecas de idiomas estándar a las que se vincularía no tienen GPL o GPL, pero tienen una excepción especial para permitir que su software propietario se vincule a ellas, si no las modifica . En el caso de C ++ me refiero a libgcc, glibc y libstdc ++; en el caso de Java me refiero a todas las bibliotecas incluidas en el JRE.

Técnicamente, puedes vender legalmente software GPL de todos modos, pero casi nadie gana dinero al hacerlo.

Robin Green
fuente
LGPL (Lesser GPL) permite que una aplicación se vincule a ella sin requerir que esa aplicación sea GPLd. Una biblioteca GPL, por otro lado, es infecciosa. Pero tiene razón, la salida del compilador está explícitamente excluida de los términos de la GPL.
Berin Loritsch
¿Y si modifico las bibliotecas de idiomas estándar? ¿puedo hacerlo? ¿Qué pasa con la licencia de mi programa entonces?
piotrek
Entonces, la excepción no se aplica y debe seguir los términos completos de la licencia correspondiente. Además, hay implicaciones de marca registrada en el caso de Java: mejor no mencione Java u OpenJDK en su documentación o publicidad si lo está utilizando (pero vea el caso judicial de Oracle v Google).
Robin Green
8

Tanto GCC como OpenJDK tienen excepciones explícitas:

… Cuando usa GCC para compilar un programa, GCC puede combinar partes de ciertos archivos de encabezado de GCC y bibliotecas de tiempo de ejecución con el programa compilado. El propósito de esta excepción es permitir la compilación de programas que no sean GPL (incluidos los propietarios) para utilizar, de esta manera, los archivos de encabezado y las bibliotecas de tiempo de ejecución cubiertos por esta excepción. ...

... Cuando GNU Classpath se usa sin modificaciones como la biblioteca de clase principal para una máquina virtual, compilador para el lenguaje Java o para un programa escrito en el lenguaje de programación Java, no afecta la licencia para distribuir esos programas directamente ...

vartec
fuente
0

OpenJDK es GPL, pero con la excepción de vincular a bibliotecas. http://en.wikipedia.org/wiki/OpenJDK

Usar clases de OpenJDK constituiría un enlace a una biblioteca, creo (rt.jar).

Una biblioteca en ese contexto, desde el punto de vista de Java, es seguramente un frasco de dependencia, guerra, clase, etc. De todos modos, estoy seguro de que puede vender legalmente una aplicación Java: hay más de unos pocos que Oracle / Sun no ha emprendido acciones legales.

Rico
fuente
Lo mismo ocurre con libstdc ++: también tiene una excepción.
Robin Green
Tanto rt.jar como libstdc ++ son implementaciones de una especificación que no es GPL. Esencialmente, si vinculé mi aplicación con una versión no librada de GPL de libstdc ++, funcionaría de manera idéntica (suponiendo que la especificación se implementó correctamente) en ambas versiones. El hecho de que una plataforma cargue dinámicamente una versión GPL de la biblioteca no cuenta para su aplicación. Usted escribió al estándar de la plataforma y está cubierto por la licencia que desee.
Berin Loritsch
0

No se preocupe, esta es una pregunta de programación informática, o al menos una que concierne estrechamente a los programadores.

Por lo que sé, si crea un software que está vinculado con algún código GPL, debe liberar su código fuente si distribuye su programa.

Eso no significa que deba liberar su código para sourceforge, es decir, pero si un tercero le solicita el código, debe proporcionarlo.


fuente
Ese punto no es relevante porque la actividad descrita en la pregunta no implica, en igualdad de condiciones, vincular al código GPL.
Robin Green
La pregunta anterior: si desarrollo un programa usando C ++ / Java y lo compilo usando el compilador GCC o el compilador de OpenJDK, ¿puedo venderlo sin tener que colocar mi programa también bajo GPL?
Creo que estoy especificando claramente que si USAS el código GPL, debes liberarlo.
Lo siento, era inexacto: en algunos casos implica vincular al código GPL en algún sentido, pero, por ejemplo, se aplica la excepción Classpath, por lo que no tiene que liberar su código bajo la GPL.
Robin Green
ahh, ok, entonces, no sabía sobre eso