2009-09-08 7 views
49

Quiero utilizar una herramienta (ffmpeg) que está por debajo de GNU Lesser General Public License, version 2.1GNU General Public License (GPL) version 2 para algunos componentes.¿Puedo llamar dinámicamente un software LGPL/GPL en mi aplicación de código cerrado?

Para hacerlo, sólo llamo en mi software como tal:

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
p.StartInfo = new System.Diagnostics.ProcessStartInfo("lgplSoftware.exe", myParams); 
p.Start(); 

no cambio, yo sólo uso una versión integrada del software para Windows.


Wikipedia dice:

Una disputa clave relacionada con la GPL es si el software no-GPL puede ser vinculada de forma dinámica a las bibliotecas GPL. La GPL es clara al requerir que todas las obras derivadas de código bajo la GPL deben estar bajo la GPL. Si bien se entiende que estática vinculación produce trabajos derivados, se no está claro si un ejecutable que enlaza dinámicamente a un código GPL debe ser considerado un trabajo derivado (ver Copyleft débil). La comunidad de software libre/de código abierto es dividida en este tema. La FSF afirma que un ejecutable de este tipo es de hecho un trabajo derivado si el ejecutable y código GPL "hacer que la función de llamadas entre sí y compartir estructuras de datos," con ciertos otros acordar (por ejemplo Jerry Epplin), mientras que algunos (por ejemplo, Linus Torvalds) aceptan que el enlace dinámico puede crear trabajos derivados pero no está de acuerdo con las circunstancias.


Estoy muy confundido por todas estas cosas legales. También habría hecho mi proyecto LGPL y publicado la fuente, pero esto no depende de mí.

Entonces la pregunta es: ¿puedo usarlo como lo estoy haciendo en este momento o seré ejecutado por un ejército de abogados?

+9

La respuesta dependerá en gran medida de su situación exacta, la jurisdicción en la que se encuentre y muchas otras cosas. Solo un abogado podría decir con cierto grado de certeza. Si no desea contratar uno para informarle, la única respuesta segura razonable es "no, no puede hacer eso". Seguir los consejos en cualquier otra respuesta que pueda surgir para esta pregunta aquí sin la consulta de un abogado sería extremadamente imprudente. –

+2

Estoy en los EE. UU. Ahora mismo si eso importa. Preferiría evitar tener un abogado, pero gracias, tomaré su comentario en la cuenta – marcgg

+4

@marcgg: ¿Ya resolvió ese problema? me refiero a su ahora 2012 – YumYumYum

Respuesta

56

Linking tiene un significado específico en la programación de computadoras. No está conectando ningún código GPL o LGPL, solo está generando un binario GLPL o LGPL, y GPL y LGPL lo permiten. Sus usuarios son libres de usar ese binario para los fines previstos por los autores y pueden descargarlo y compilarlo ellos mismos, de modo que se conservan todas sus libertades y usted no infringe la GPL o la LGPL. (De esto es de lo que habla el GPL FAQ al "comunicarse a la longitud de los brazos"). Esto ni siquiera viola el espíritu de la LGPL y la GPL; toleran la existencia de software propietario y suponen que en algún momento los programas propietarios generarán programas gratuitos y viceversa. (De lo contrario, no podríamos ejecutar ningún software GPL en Windows.)

La GPL requiere que los programas patentados y GPL "no se combinen de una manera que los convierta en un solo programa". Si su programa depende por completo de los archivos ejecutables de GPL, de modo que no sería utilizable sin ellos, a pesar de que es un archivo binario independiente, eso podría colocarlo en un terreno más inestable. (Y es probable que sea hora de consultar a su abogado para averiguarlo con certeza.)

Además, aunque no haya preguntado específicamente sobre esto, tenga en cuenta que la distribución de software GPL o LGPL con su software significa que debe incluir una copia de la licencia con su instalador y también distribuir el código fuente. Por ejemplo, si empaqueta su aplicación en un instalador e incluye copias de ejecutables GPL o LGPL en el instalador, entonces está distribuyendo código LGPL o GPL y debe hacer copias del código fuente disponible. (ya sea en línea, por correo o en CD, dependiendo de cómo distribuyas tu aplicación). Incluir un enlace al proyecto ascendente no es suficiente (al menos para la versión 2 de la GPL). Lea la GPL y la LGPL para obtener detalles exactos.

+1

Muchas gracias por la útil respuesta. ¿Podría precisar si "también tenga en cuenta que la distribución de software GPL o LGPL significa que debe incluir una copia de la licencia con su instalador y también distribuir el código fuente". se aplica a mí? – marcgg

+0

AFAIK, debe agregar al menos un enlace a la licencia GPL/LGPL además de permitir a las personas una forma de descargar la versión exacta del código GPL/LGPL que haya utilizado para que puedan usar ese código ellos mismos. En general, es suficiente agregar un archivo de texto durante la instalación que contenga el texto GPL/LGPL más la URL de descarga para el código GPL. (Incluyendo cualquier código que esté estrechamente vinculado al código GPL). –

+0

@marcgg: Editado para agregar un ejemplo. –

0

No soy abogado, y esto no puede ser un consejo legal. Con eso detrás de nosotros, en mi humilde opinión, si el código con el que estás enlazando es LGPL, estás en el claro. Si se trata de GPL técnicamente es un problema.

La diferencia entre GPL y LGPL es que la vinculación con el código LGPL no provoca la necesidad de compartir.

+0

El código en cuestión no está realmente vinculando, como se indica en otras respuestas. –

3

Corrígeme si me equivoco, pero creo que la situación que usted describe es así:

  1. Usted tiene un programa GPL o LGPL, construido como un ejecutable independiente, sin necesidad de modificaciones hechas por usted.
  2. Está construyendo una aplicación de código cerrado que necesita la funcionalidad del programa GPL o LGPL.
  3. En su programa, utiliza las funciones de su sistema de marco o sistema operativo para ejecutar otro archivo ejecutable por separado.
  4. Está utilizando la salida de ese ejecutable en su programa.

Si ese es el caso, usted no está realmente une al programa de licencia LGPL-GPL- o. Por lo tanto, no está sujeto a los términos de licencia de ese programa. Esta es una forma bastante común, aunque complicada, de evitar problemas de licencia con dichos ejecutables.

Sin embargo, infringe el espíritu de la GPL y la LGPL.

+1

Usted obtuvo mi situación. ¿Cómo se define "vincular"? ¿Tiene alguna referencia con respecto a lo que dijo? También sé que lo que trato de hacer es contrario al espíritu de GPL y me siento mal por ello ... pero como dije, la decisión de hacer el software GPL no depende de mí en absoluto. – marcgg

+8

No está en contra del espíritu de la GPL/LGPL (a menos que argumente que el desarrollo de software de código cerrado es contrario al espíritu de esas licencias). –

+1

Creo que va en contra del espíritu de la GPL. La idea es que si encuentras que el software GPL es lo suficientemente útil como para usarlo en tu propio programa, se supone que debes poner tu fuente a disposición también; Si no desea que su fuente esté disponible, siempre puede usar otra solución sin GPL. Creo que la FSF argumentaría que desarrollar software de código cerrado es contrario al espíritu de sus objetivos y a los objetivos de la GPL (y, en cierta medida, la LGPL). – mipadi

0

Puede hacerlo con el software LGPL, pero no puede hacerlo con el software licenciado GPL.

LGPL 2.1 section 6 en trabajos combinados indica cómo puede usar la biblioteca en su programa de código cerrado. Puede llamar a un programa con licencia LGPL como lo hace, e incluso puede vincularlo dinámicamente.

La GPL no tiene tal excepción, cuando utiliza un programa/biblioteca GPL como parte de su programa, para que se perciba como una parte integral de su programa, debe licenciar todo bajo una licencia compatible con GPL. Ver this GPL-FAQ entry.

+2

Gracias por su respuesta. Pero sí dicen "Sin embargo, en muchos casos puede distribuir el software cubierto por GPL junto con su sistema patentado. Para hacer esto de manera válida, debe asegurarse de que los programas gratuitos y no libres se comuniquen a la distancia, que no estén combinados. de una manera que los haría efectivamente un solo programa ". Además, ¿qué piensas de la respuesta de mipadi? – marcgg

+4

Lo que no se da cuenta es que el póster no lo usa como "parte de su programa". Es cierto que están creando una dependencia, pero solo están llamando a un binario, no combinándolos en un solo programa. marcgg tiene razón. Me sorprende que haya tanta confusión alrededor de esto. –

+1

Si eso es cierto. Entonces no puedes ejecutar legalmente el software gpl bajo Windows. Como todas las ventanas están haciendo exactamente lo mismo, generando un programa. – rxantos

3

En general, es una de las pocas cosas que considero realmente desagradable de la GPL. Lo que lo empeora es lo contagioso que puede ser. Aún así, hay una forma de evitarlo.

En primer lugar, comience definiendo su propia interfaz para enviar datos. Esto se usará entre su aplicación y una biblioteca separada que creará. No reutilice nada del código GPL porque eso estaría bajo la licencia GPL. Sin embargo, no hay nada de malo en usar una estructura similar. Dado que esta interfaz es su propia creación, estaría bajo su propia licencia. Eres libre de usarlo como quieras.

A continuación, cree una biblioteca contenedora alrededor del código GPL que también implementará su interfaz personal. Esta biblioteca estaría bajo la licencia GPL y, por lo tanto, se contaminaría. Sin embargo, aunque exponga su interfaz al mundo exterior, su interfaz no puede contaminarse. No se deriva ni lo que sea. Es 100% tu propio código y puedes usar la misma interfaz para conectarte a una biblioteca diferente.

Esta biblioteca contenedora servirá como un búfer de protección entre su propio código de propiedad y el código GPL. Su propio código nunca sería GPL ya que no está usando ningún código GPL directamente. La interfaz también servirá como una solución para cambiar el código GPL por una solución diferente.

Es un truco para eludir la restricción de la licencia, pero como la interfaz es suya y solo suya, la GPL será bloqueada por ella. El código GPL y el código no GPL serían dos programas diferentes si se usan de esta manera.

Aún así, tenga en cuenta que es posible que necesite algunos consejos legales aquí. No hay muchos abogados aquí en SO. Pero es un truco que puede evitar esta licencia GPL.

+1

Pero si mi interfaz usa código gpl, entonces tiene que ser gpl, ¿no? – marcgg

+0

Sí, por lo tanto su interfaz NO debe usar código GPL. Defina su propia interfaz y asóciela a la interfaz GPL. El mapeo sería GPL pero su interfaz sería la suya. La interfaz se convertiría en parte del código GPL que necesita distribuir, pero dado que es su propia creación, puede otorgarse una licencia diferente para su propio código GPL. Se llama una licencia dual. –

+13

La vinculación de bibliotecas es un ejemplo de una forma, pero no es la única, de crear un trabajo derivado. La FSF ha declarado muchas veces que si está tomando medidas como esta con la intención de subvertir la GPL, todavía está violando la GPL. El intercambio de estructuras de datos complicadas y tener dependencias estrechas, independientemente de si pasan a través de una "biblioteca contenedora", vinculación (estática o dinámica), una llamada a procedimiento remoto, creación de proceso o cualquier otra forma de comunicación entre procesos, constituye una obra derivada. Consulte http://www.gnu.org/licenses/gpl-faq.html#GPLWrapper –

Cuestiones relacionadas