Evite la violación de GPL al sacar la biblioteca del proceso

21

Suponga que hay una biblioteca con licencia bajo GPL. Quiero usarlo es un proyecto de código cerrado. Hago lo siguiente:

  1. Cree una pequeña aplicación envolvente alrededor de esa biblioteca GPL que escuche socket, analice mensajes y llame a la biblioteca GPL. Luego devuelve los resultados.
  2. Libere sus fuentes (para cumplir con la GPL)
  3. Crear cliente para este contenedor en mi aplicación principal y no liberar fuentes.

Sé que esto agrega una gran sobrecarga en comparación con la vinculación estática / dinámica, pero estoy interesado en forma teórica.

Andrey
fuente
66
La envoltura que escriba tendrá licencia bajo la GPL. Por lo tanto, el programa que usa el contenedor aún estaría sujeto a los términos de la GPL para la vinculación, etc.
TZHX
44
¿por qué no contactar primero al autor y ver si puede licenciarlo bajo LGPL o similar?
jk.
8
@TZHX Creo que quiere decir que el contenedor sería una aplicación separada que actúa como un servidor, su código de propiedad estaría en el cliente
jk.
¿también a quién se distribuirá la aplicación de código cerrado? y qué versión de GPL es la licencia
jk.
2
@jwenting la pregunta dice claramente que se está quedando sin proceso
jk.

Respuestas:

32

Legalmente , diría que estaría bien (pero no soy abogado, consulte a un abogado para obtener asesoramiento legal).

Moralmente , es bastante reprensible. Si no le gusta la GPL, entonces la solución "adecuada" es no usar una biblioteca GPL.

Editar : Para aclarar, cualquiera que sea la posición legal de la GPL con respecto a si se permite o no la vinculación dinámica, la LGPL se creó específicamente con la intención de permitir la vinculación dinámica en el caso de las bibliotecas. Entonces, me parece claro que al elegir la GPL sobre la LGPL, el autor de la biblioteca lo hizo explícitamente para no permitir la vinculación dinámica. Usar un medio técnico para evitar una restricción legal que exprese la intención explícita del autor para su código es lo que es reprensible, en mi opinión.

Para el registro, no soy personalmente un fanático de la GPL (prefiero una licencia más permisiva como MIT o BSD). Sin embargo, soy un gran admirador de respetar el trabajo de otros desarrolladores, y si no quieren que vincules su biblioteca con software de código cerrado, entonces eso es prerrogativa.

Dean Harding
fuente
12
No creo que haya un problema moral aquí: la GPL parece permitir explícitamente su caso de uso
jk.
3
@vartec aquí es una cita de las preguntas frecuentes oficiales de GPL: "Vincular estática o dinámicamente con otros módulos está haciendo un trabajo combinado basado en. Por lo tanto, los términos y condiciones de la Licencia Pública General de GNU cubren toda la combinación". Si Stallman tiene una visión diferente de lo que es Open Source, no significa que lo odie. Es uno de los principales ideólogos de este movimiento.
Andrey
8
@vartec: Tengo la impresión de que no comprende que, cuando usa el código de ALGUIEN MÁS en SU ​​solicitud, USTED debe cumplir con los términos que EL puso en uso de SU código. No te gusta No use el código GPL de otra persona. Así de simple
John R. Strohm
3
Aquí está mi sugerencia: deduzca el código GPL del que parece tan dependiente y vea cómo resulta el caso judicial. GPL3 se creó para tapar solo esos agujeros legales en GPL2, por lo que tal vez se saldrá con la suya. Dudo que la gente haga desfiles en tu honor porque te saliste con la suya con una maniobra legal y si eres lo suficientemente efectivo, la gente licenciará su código con más términos de uso solo para molestarte. Al final, eso podría mejorar el mundo al evitar hilos como este.
Godeke
3
Estoy totalmente en desacuerdo con la afirmación de que es moralmente reprensible. Lo que es moralmente reprensible es decirles a las personas que no tienen derecho a hacer las cosas que la GPL les permite hacer. Cuando pongo un trabajo bajo la GPL, lo hago porque quiero que se apliquen las reglas de la GPL. Decirles a las personas que no deben ejercer los derechos que la GPL les otorga es censurable. Esto es algo que permite la GPL. Aquellos que colocan trabajos bajo la GPL lo hacen porque quieren permitir esto.
David Schwartz
6

IANAL pero creo que está bien, la sección relevante de GPL3 está al final de la sección 5:

Una compilación de un trabajo cubierto con otros trabajos separados e independientes, que no son, por su naturaleza, extensiones del trabajo cubierto, y que no se combinan con él, como para formar un programa más grande, en un volumen de almacenamiento o distribución medio, se denomina "agregado" si la compilación y sus derechos de autor resultantes no se utilizan para limitar el acceso o los derechos legales de los usuarios de la compilación más allá de lo que permiten los trabajos individuales. La inclusión de un trabajo cubierto en un agregado no hace que esta Licencia se aplique a las otras partes del agregado.

Esto probablemente dependerá exactamente de lo que haga su 'cliente', la respuesta de Mouviciel es probablemente una buena guía sobre cómo hacerlo de manera segura

Si crees que tu aplicación es una extensión de la biblioteca en lugar de algo agregado con ella, entonces probablemente tengas razón (deberías estar en un buen lugar para saberlo), en cuyo caso tu mejor opción es contactar al autor e intentar obtener un licencia diferente

Esto parece respaldar mi posición de que esto está explícitamente permitido por la GPL, suponiendo que se haga correctamente.

jk.
fuente
Lo leí, pero el problema es que el texto GPL está escrito en lenguaje legal , no en desarrollo . El truco con wrapper es hacer que la aplicación comercial sea "agregada", no "derivada". Pero creo que se trata de "extensiones de la naturaleza del trabajo cubierto".
Andrey
Bueno, para obtener ayuda con el lenguaje legal necesitará un abogado. Si crees que tu aplicación es una extensión de la biblioteca en lugar de algo agregado con ella, entonces probablemente tengas razón (deberías estar en un buen lugar para saberlo), en cuyo caso tu mejor opción es contactar al autor e intentar obtener un licencia diferente
jk.
1
@Andrey: Si la "naturaleza" de su programa está directamente relacionada con el código GPL, la sección citada anteriormente no se aplicaría. De su pregunta, parece que ese es el caso. Un contraejemplo podría ser un programa de análisis de intrusiones en la red que utiliza GNU readline a través del mecanismo que propone. (Readline es un caso de prueba interesante porque hay una alternativa de entrega con licencia BSD).
Fred Nurk
La cláusula "agregada" es dejar en claro que estar en la misma distribución de CD-Rom o Linux no está creando una derivada.
Sean McMillan
6

Consulte la sección Me gustaría incorporar software cubierto por GPL en mi sistema propietario. ¿Puedo hacer esto?

La pregunta es, ¿su aplicación de envoltura tiene algún uso por sí misma? Si creó una versión de línea de comando de su programa que era GPL, podría liberar la GUI con una licencia diferente. Por ejemplo, podría hacer un IDE para gcc que era de código cerrado o una herramienta de diferencia visual basada en diff.

Sin embargo, si su biblioteca finalizada no tiene otro uso que el que usa su programa, y ​​su programa no tiene ningún uso sin esta biblioteca, entonces es un trabajo derivado y necesitaría ser lanzado bajo la GPL.

FigBug
fuente
Tengo entendido que puede licenciar el contenedor bajo MIT y aún así estar bien.
Tostadora
2
Colin, absolutamente no. El contenedor se combina inequívocamente con la biblioteca GPL en un solo binario. Para usar el código GPL dentro de un binario, debe GPL su propio código para cumplir con la licencia.
Gannet concreto el
5

OMI, legalmente está bien. (IANAL) Para mejorar el aspecto moral del problema, no lo llame "envoltorio FooBar que hace que FooBar esté legalmente disponible para MyClosedApp", llámelo servidor. Que sea un pequeño programa de código abierto que "permita hacer FooBar a través de la red". Póngalo en SourceForge o dedíquele un sitio web, con la página del proyecto e instrucciones y demás. Luego, deje que "MyClosedApp" solo use el "servidor FooBar".

usuario281377
fuente
2

Según tengo entendido, puede dejar su software de código cerrado siempre que pueda hacer su trabajo sin la biblioteca GPL. Vea la biblioteca GPL como un complemento cuya ausencia no hace que su software sea inútil.

Mouviciel
fuente
1
Eso definitivamente está mal. su uso como complemento (también conocido como enlace dinámico) hace que la aplicación resultante sea "derivada" y esté sujeta a GPL
Andrey
No estoy seguro de que el complemento sea siempre sinónimo de enlace dinámico. Y ciertamente, en este caso, el OP no propone vincular dinámicamente nada, así que creo que el consejo de Mouviciel es válido
jk.
@jk bueno, si creas solo un complemento y se basa en la licencia GPL, esto huele a violación.
Andrey
44
La AGPL no lo prohibiría a menos que el socket estuviera sobre una red. Es bastante específico Además, no es una prueba de utilidad, sino de cuán cerca están el software propietario y GPL. La vinculación estática definitivamente es demasiado estrecha, los zócalos (excepto para el caso específico de AGPL) están definitivamente bien, la vinculación dinámica puede o no estar (he escuchado argumentos que suenan legales en cada lado, y todavía no hay una jurisprudencia estadounidense).
David Thornley
1
@Andrey: así que ahora estás diciendo que mientras un software de código cerrado como Photoshop pueda hacer su trabajo sin un componente GPL, uno puede distribuirlo sin convertirlo en GPL. Eso es exactamente lo que dice esta respuesta.
Doc Brown el
1
  1. intente encontrar una alternativa de código abierto, si no hay ninguna, elija la GPL;
  2. compruebe si es GPLv3 con cláusula Affero si es así, no hay nada que hacer;
  3. si es GPLv2, puede hacer exactamente lo que sugiere;

También hay una opción algo controvertida. En la mayoría de las legislaturas, la vinculación dinámica debería ser un límite para el "trabajo derivado". La lógica detrás de esto es que si bien se vincula dinámicamente solo se incluyen archivos de encabezado en su programa. En muchas legislaciones, los archivos de encabezado se consideran definición de API y se excluyen explícitamente de tener derechos de autor. Por otro lado, con el enlace dinámico, el enlace real con la biblioteca GPL se realiza en el sistema del usuario final. Pero como ya he dicho, hay mucha controversia con esto, Stallman está fuertemente enfadado contra esto.

vartec
fuente
¿Cuál es la diferencia entre GPL v2 y v3 que hace que mi pirateo sea imposible? Lo que hago no es vinculación dinámica, los desacoplamos tanto como sea posible.
Andrey
Uno de los objetivos de GPLv3 era evitar ese método de "elusión".
vartec
44
Primero, las variantes de GPL son licencias de código abierto oficiales, aprobadas por OSI (al igual que la licencia BSD sin cláusula publicitaria es una licencia de software libre aprobada por Stallman). En segundo lugar, ninguna versión de GPL (incluida Affero) restringe su capacidad para que el software patentado y GPL se comunique con métodos de comunicación estándar entre procesos, como sockets.
David Thornley
IMO GPLv3 que permite, por ejemplo, la cláusula DRM viola el punto 6. de la definición de código abierto opensource.org/docs/osd
vartec
1
@vartec: DRM no es un "campo de esfuerzo". Consulte "Por ejemplo, puede que no restrinja el uso del programa en una [empresa comercial] o que no se use para investigación genética". Al parecer, OSI cree que la GPL3 es de código abierto y cumple con todos los puntos de su definición, porque lo aprobaron.
Thomas Edleson
0

¿Sería legal para Adam Brown escribir un programa que utilizara una biblioteca GPL y actuara como un "servidor", si lanzara todo el código fuente a todo lo relacionado con él, pero el único código de cliente que lanzó fue bastante débil porque eso es todo había escrito del lado del cliente? No veo ninguna base para pensar que no lo haría.

Si Charles Dover encontró el "servidor" de Adam Brown y decidió escribir un programa de código cerrado para comunicarse con él, ¿la GPL restringiría sus acciones de alguna manera? No es que pueda verlo, ya que su único uso del software GPL sería como los archivos binarios que recibió de Adam Brown. Si distribuía los binarios de Adam, también tendría que incluir un enlace a la fuente, pero nada más en la GPL afectaría el código de Charles.

Con respecto a una persona que escribe un servidor con licencia GPL y luego usa el servidor para sus propios fines de código cerrado, no creo que deba haber ningún problema legal si al escribir el servidor hizo un esfuerzo de buena fe para hacerlo útil para otras personas que deseen utilizar el código GPL suministrado de la misma manera. En particular, la documentación de la interfaz publicada públicamente debería ser suficiente para permitir que un programador competente escriba código para un servidor que sería aceptado por el programa cliente tal como sería el original, y escribir programas cliente que utilizarían servidor de la misma manera que la aplicación del autor.

Super gato
fuente