Llame al software GPL desde un software que no sea GPL

30

¿Puedo (legalmente) usar un programa publicado bajo GPL de otro programa que estoy escribiendo y no tener que respetar la GPL (para el programa que estoy escribiendo)?

Por ejemplo, tengo una GUI que usa un programa (que está bajo GPL), ¿puedo ocultar el código en la GUI e incluso venderlo?

Valmond
fuente

Respuestas:

30

Puede usar un programa GPL de su propio programa sin que su programa se vea afectado por la GPL, pero no puede vincular el código GPLed a su propio programa sin que su programa esté sujeto a los términos de la GPL.

En el ejemplo proporcionado en la pregunta, en la que ha escrito un contenedor GUI alrededor de un programa de línea de comandos existente, su GUI no está vinculada por los términos de la GPL, siempre que sea un programa separado que ejecute el programa GPL en un separe el proceso y se comunique con él solo a través de las interfaces existentes, por ejemplo, a través de la línea de comando y / o mediante stdin / stdout.

Algunas partes relevantes de GPL FAQ :

¿Dónde está la línea entre dos programas separados y un programa con dos partes? Esta es una pregunta legal, que finalmente los jueces decidirán. Creemos que un criterio adecuado depende tanto del mecanismo de comunicación (exec, tuberías, rpc, llamadas de función dentro de un espacio de direcciones compartidas, etc.) como de la semántica de la comunicación (qué tipos de información se intercambian).

Si los módulos están incluidos en el mismo archivo ejecutable, definitivamente se combinan en un programa. Si los módulos están diseñados para ejecutarse unidos en un espacio de direcciones compartido, eso seguramente significa combinarlos en un solo programa.

Por el contrario, las tuberías, los sockets y los argumentos de la línea de comandos son mecanismos de comunicación que normalmente se usan entre dos programas separados. Entonces, cuando se usan para la comunicación, los módulos normalmente son programas separados. Pero si la semántica de la comunicación es lo suficientemente íntima e intercambia estructuras de datos internas complejas, eso también podría ser una base para considerar las dos partes combinadas en un programa más amplio.


¿Puedo lanzar un programa no gratuito diseñado para cargar un complemento cubierto por la GPL?

Depende de cómo el programa invoca sus complementos. Por ejemplo, si el programa usa solo fork y exec simples para invocar y comunicarse con complementos, entonces los complementos son programas separados, por lo que la licencia del complemento no requiere requisitos sobre el programa principal.

Si el programa vincula dinámicamente los complementos, y realizan llamadas de función entre sí y comparten estructuras de datos, creemos que forman un solo programa, que debe tratarse como una extensión tanto del programa principal como de los complementos. Para usar los complementos cubiertos por la GPL, el programa principal debe publicarse bajo la GPL o una licencia de software libre compatible con la GPL, y que los términos de la GPL deben seguirse cuando el programa principal se distribuye para su uso con estos complementos

Si el programa vincula dinámicamente los complementos, pero la comunicación entre ellos se limita a invocar la función 'principal' del complemento con algunas opciones y esperar a que regrese, ese es un caso límite.

Tenga en cuenta que la GPL se aplica en su totalidad al programa de línea de comandos subyacente en cualquier caso: si lo distribuye (en lugar de que los usuarios lo obtengan de otra fuente), usted es responsable de proporcionar una copia de la GPL a los usuarios, haciéndolo aclararles que el programa de la línea de comandos está bajo la GPL (incluso si el contenedor de la GUI no lo está), y hacer que el código fuente del programa de la línea de comandos esté disponible para ellos a pedido. De las preguntas frecuentes de GPL nuevamente:

Si la gente distribuyera software cubierto por GPL llamándolo "parte de" un sistema que los usuarios saben que es en parte propietario, los usuarios podrían estar inseguros de sus derechos con respecto al software cubierto por GPL. Pero si saben que lo que han recibido es un programa gratuito más otro programa, uno al lado del otro, sus derechos estarán claros.

Descargo de responsabilidad estándar: no soy un abogado y, aunque fuera un abogado, no soy tu abogado. Si necesita una respuesta definitiva, consulte a un profesional legal apropiado que tenga licencia para ejercer en su jurisdicción.

Dave Sherohman
fuente
1
Cabe señalar que la posición de la FSF sobre la vinculación es la posición minoritaria. (Y, en mi opinión, no tiene ningún sentido. Un proceso automatizado no puede crear un nuevo trabajo.)
David Schwartz
1
Sin embargo, la FSF escribió la GPL. Esto hace que su opinión sea mucho más relevante. "Cuando decimos X, queremos decir que {...}" generalmente se acepta en la corte. "Cuando dijiste X, querías decir {...}", no así.
MSalters
¿Qué quiere decir con "usa solo fork y exec simples para invocar"? ¿Alguien puede aclarar esto?
Krunal
Entonces, ¿la GPL se puede omitir fácilmente simplemente escribiendo una envoltura de tubería para ejecutar el código GPL en un proceso separado? Eso parecería hacer que la GPL sea irrelevante e imposible de aplicar. ¿Qué sucede si escribo mi propia biblioteca y la enlazo junto con una biblioteca GPL? ¿Mi biblioteca independiente separada también se convierte en GPL? ¿Qué sucede si hago un enlace a la biblioteca de otra persona mientras uso el código GPL? ¿Su biblioteca se convierte en GPL? Si responde que no a cualquiera de estas preguntas, se abre una laguna masiva para evitar fácilmente la GPL. Si responde que sí, está violando la ley de derechos de autor.
Cerin
@Cerin: la GPL solo se aplica realmente al código que distribuye. Por lo tanto, si bien puede escribir un programa que se vincule a licencias GPL y no compatibles con GPL, no puede distribuir ese programa a terceros, ya que ejecutaría código GPL y no compatible con GPL en el mismo proceso. ("El uso sin redistribución" es visto por muchos como un vacío en la GPL, ya que significa que los servicios web y similares pueden eludir la GPL por completo porque ejecutan el software ellos mismos en lugar de dárselo a los usuarios para que lo ejecuten. intento de abordar este problema.)
Dave Sherohman
0

Depende de lo que quieres decir con usarlo?

  • compilarlo en su código
  • usar una biblioteca compartida
  • ejecutar un ejecutable

También depende exactamente de qué versión / variante de la GPL se encuentra el otro código.

  • GPL
  • LGPL
  • AGPL
  • Probablemente otros

Descargo de responsabilidad legal: no soy un abogado.

Martin York
fuente
-2

Eso depende de cómo exactamente su programa está "usando" el programa GPL. Las preguntas frecuentes de GPL tienen una explicación bastante larga , pero aún deja mucho abierto a la interpretación:

No puede incorporar software cubierto por GPL en un sistema propietario. (...) Sin embargo, en muchos casos puede distribuir el software cubierto por la GPL junto con su sistema propietario. Para hacer esto de manera válida, debe asegurarse de que los programas gratuitos y no gratuitos se comuniquen a distancia, que no se combinen de una manera que los convierta efectivamente en un programa único. (...) si los dos programas se combinan para que se conviertan efectivamente en dos partes de un programa, entonces no puede tratarlos como dos programas separados. Entonces, la GPL tiene que cubrir todo.Si los dos programas permanecen bien separados, como el compilador y el kernel, o como un editor y un shell, puede tratarlos como dos programas separados, pero debe hacerlo correctamente. El problema es simplemente uno de forma: cómo describe lo que está haciendo. ¿Por qué nos importa esto? Porque queremos asegurarnos de que los usuarios comprendan claramente el estado libre del software cubierto por la GPL en la colección.

Creo que en su ejemplo de una GUI que existe principalmente para llamar a un programa GPL de línea de comando, los dos claramente forman un solo programa, por lo que tendría que liberar su código bajo la GPL.

Michael Borgwardt
fuente
No, no "forman claramente un solo programa". Mientras el programa de línea de comandos subyacente siga siendo capaz de funcionar en ausencia de la superposición de GUI, se combinarán por "simple agregación" y no son "efectivamente un solo programa". Tenga en cuenta los ejemplos en el texto que citó: un compilador se encuentra en la parte superior del núcleo y no se ejecutará sin él, pero el núcleo se ejecutará felizmente en ausencia del compilador.
Dave Sherohman
1
@Dave: si el programa de línea de comandos subyacente sigue siendo capaz de funcionar en ausencia de la superposición de GUI podría ser relevante si el estado de la licencia del programa de línea de comandos estuviera en duda, pero la pregunta es sobre la GUI, que es completamente inútil sin el programa de línea de comandos y, por lo tanto, es cierto sin lugar a dudas que forman un solo programa.
Michael Borgwardt
Sustituyamos uno de los ejemplos de la sección que citó y veamos cómo se mantiene. "... pero la pregunta es sobre el compilador, que es completamente inútil sin el núcleo, y por lo tanto es cierto, sin lugar a dudas, que forman un solo programa". Excepto, por supuesto, que el texto que citó explícitamente dice "puede tratarlos como dos programas separados". Si se trata simplemente de una cuestión de dependencia, entonces nunca podría ejecutar un software cerrado en Linux porque ese software sería "completamente inútil" sin el núcleo (GPL).
Dave Sherohman
@Dave: Excepto, por supuesto, que los compiladores y todo tipo de software cerrado NO son inútiles sin el kernel de Linux, ya que pueden ejecutarse en cualquier cosa que implemente los estándares de biblioteca POSIX y / o C, y brinden una funcionalidad significativa propia. . Un asunto completamente diferente a un contenedor GUI que existe únicamente para manejar un programa de línea de comando específico.
Michael Borgwardt
3
Sin embargo, estás equivocado en la parte de la GUI. Esa misma envoltura GUI será trabajar con otros programas de la CLI, en particular las versiones posteriores de la original. Eso es relevante en este contexto, porque significa que los derechos GPL originales sobre el programa subyacente aún pueden ejercerse. Si vuelvo a compilarlo para que sea un 10% más rápido, la CLI no me obstaculiza.
MSalters
-3

No.

El código GPL solo puede ser utilizado por otro código GPL.

Citando la primera línea del artículo de la GPL de Wikipedia:

La GPL es la primera licencia copyleft para uso general, lo que significa que los trabajos derivados solo pueden distribuirse bajo los mismos términos de licencia.

Además de eso, la GPL tiene varias páginas y existe en varias versiones.


Advertencia, despotricar por delante!

Personalmente, no me gusta mucho la licencia GPL debido a su naturaleza muy restrictiva y similar a la de un virus. Lo llaman "gratis" pero en realidad es todo lo contrario, el código GPL no puede ser usado por nada excepto otro código GPL. Por lo tanto, forzar otros proyectos a GPL o verse obligado a reescribir bibliotecas completas, ya sea que su proyecto actual sea de código abierto o no. Hubo grandes proyectos de código abierto, como freeBSD, por ejemplo, que se vieron obligados a reescribir cientos de miles de líneas de código de Linux porque su licencia era incompatible, era demasiado "gratis" en el sentido de "haz lo que quieras", lo que obviamente es no es compatible con GPL.

Si desea una licencia verdaderamente "gratuita" en el sentido de "haga lo que quiera", le recomiendo la licencia BSD o MIT ... en realidad, la mayoría de las otras licencias están bien. Es solo GPL lo que es realmente problemático porque lo restrictivo que es y cómo obliga a otros a hacerlo. Por último, es demasiado complicado.

Ah, sí, también es un boleto de ida. GPL puede usar código / bibliotecas con licencia de la mayoría de las licencias, pero estas bibliotecas / código no pueden usar el código GPL a su vez.

dagnelies
fuente
Dice "obras derivadas". ¿Incluye eso software que se vincula dinámicamente al código GPL?
derecha el
@WTP: definitivamente sí, el objetivo de la LGPL es tener una licencia diferente que lo permita.
Michael Borgwardt
3
Un shell de GUI envuelto alrededor de un programa de línea de comandos no es un "trabajo derivado" como se define para fines de derechos de autor.
Dave Sherohman
1
@Dave Sherohman: eso no parece claro. La respuesta aceptada a esta pregunta dice: "En mi humilde opinión, un envoltorio puro que simplemente expone la funcionalidad de un programa GPL debería ser GPL". No es solo el aspecto técnico de cómo se comunican, es la intención. Por ejemplo, traducir un libro es crear un trabajo derivado. Convertirlo a formato Kindle sería un trabajo derivado. Pude ver que un juez dictaminó que agregar una GUI está creando un trabajo derivado. Tener cuidado.
Scott Whitlock