¿La LGPL me permite hacer esto?

16

Estoy planeando desarrollar un software comercial usando un software LGPL.

En el software LGPL que estoy usando algunas funciones en una clase no están completamente implementadas. Quiero modificar el código LGPL para que la clase y las funciones no implementadas se hagan visibles fuera de la dll agregando dllexport enfrente de la clase y agregando palabras clave virtuales enfrente de la función.

Luego planeo implementar esas funciones en mi software propietario. Estoy listo para distribuir el código LGPL modificado, pero no el software propietario que implementa las funciones de la manera que quiero.

¿Eso viola los términos y condiciones de LGPL?

Daenyth
fuente
66
El problema con su pregunta aquí es que no está tratando de usar la licencia en el espíritu en que fue escrita. Probablemente podamos responder preguntas sobre el significado previsto de las licencias, pero no podemos entrar en detalles legales de manera confiable . Para eso, solo podemos recomendar un abogado. Además, lo que está haciendo depende de una pregunta legal (¿qué es un trabajo derivado del software LGPLed?) Que no se ha resuelto en los EE. UU. En la jurisprudencia, y he visto opiniones diferentes entre los abogados reales. (No soy abogado, pero he estado siguiendo estos problemas casualmente.)
David Thornley
Difícil de decir. Lea esto: javalobby.org/java/forums/t15903.html : están hablando de Java, pero parece aplicable a cualquier lenguaje OO.
Mike Baranczak

Respuestas:

26

Esta es una pregunta compleja, pero creo que lo que propones no está permitido.

Usted está sugiriendo ganchos añadir a la biblioteca para que sea más fácil para que usted pueda subclase la biblioteca y, por tanto, por lo menos. para evitar el espíritu de la LGPL.

El problema es que si subclasifica una clase que está sujeta a la licencia LGPL en su propio código, entonces su trabajo se convierte en un trabajo basado en la biblioteca , en lugar de un trabajo que utiliza la biblioteca, lo que significa que su código es un derivado trabajo cubierto en la sección 2 ( LGPL v2.1 ) en lugar de uno cubierto en la sección 6 ( LGPL v2.1 ). Es decir, queda sujeto a la LGPL !

Creo que Stephen Colebourne ofrece un buen resumen sobre javalobby.

No soy un gran admirador de hablar con las sugerencias de su abogado , pero en este caso creo que valdría la pena hacerlo si planea continuar con esto, de lo contrario podría recibir una carta desagradable del Software Libre Equipo legal de la fundación .

Alternativamente, puede preguntarle directamente a la FSF . Desde su página de contacto :

Para preguntas sobre licencias de software libre y derechos de autor

Consulte nuestras Preguntas frecuentes sobre licencias , la lista de licencias , información general sobre copyleft y páginas relacionadas . Si quedan preguntas, envíe un correo electrónico a <[email protected]>.

Por cierto, en la pregunta relacionada Reflexión y LGPL , gbjbaanb responde con la perspectiva LGPL 3.0 .

Mark Booth
fuente
44
Me gusta la sugerencia de "preguntar al FSF"
ZJR
Mi lectura fue que querían exponer más funciones en la biblioteca LGPL. Siempre y cuando la lib resultante siga siendo LGPL y un usuario del software del OP sea libre de reemplazar la lib con su versión integrada, estaría feliz
Martin Beckett
3
@MartinBeckett: no del todo, el interlocutor está tratando de eludir la LGPL modificando la biblioteca para que le resulte más fácil modificar subrepticiamente la biblioteca en su código fuente cerrado. Si agregara su nueva funcionalidad de biblioteca a la LGPL directamente y luego la usara en su propio código, no habría problema. Es el hecho de que él está tratando de mantener su nueva funcionalidad de código cerrado y aún siendo parte de la biblioteca, ese es el problema.
Mark Booth
66
LGPL 3.0 establece: "La definición de una subclase de una clase definida por la Biblioteca se considera un modo de utilizar una interfaz proporcionada por la Biblioteca". Por lo tanto, esto debería permitirse, al menos bajo LGPL 3.0.
David
3
@David: creo que al modificar la biblioteca LGPL para permitirle anular una función que normalmente no se podría anular, está reconociendo tácitamente que su código está lo suficientemente estrechamente acoplado como un 'basado en' en lugar de un relación 'utilizada por' con la biblioteca, por lo que se activa el copyleft débil.
Mark Booth
13

Norma No soy un abogado exención de responsabilidad.

LGPL requiere que las modificaciones al código fuente de la biblioteca se distribuyan a cualquiera que haya usado su código. No , no requiere que el código, que utiliza la biblioteca, sea y publicado bajo la misma licencia de código abierto.

Wikipedia para una descripción más detallada, pero no jurídica, de LGPL, incluida una sección sobre herencia colectiva .

muestreador
fuente
+1. Para resumir: creemos que no viola LGPL (sino IANAL)
MarkJ
@ Mark J. - Como explico en mi respuesta , no estoy seguro de que, tal como se plantea, la pregunta sea simplemente una cuestión de herencia de clase.
Mark Booth
9
Creo que a la gente le gusta escribir IANAL porque contiene "ANAL".
g33kz0r
5

"Quiero modificar el código LGPL ..." esto dice lo suficiente que debe liberar cualquiera de ese código modificado. Luego, extender si el código modificado es o no un trabajo derivado queda en disputa y, de ser así, queda sujeto a la LGPL.

Lo que parece que estás tratando de hacer es evitar la LGPL, que en este caso con estas técnicas no puedes.

Si se trata de un trabajo derivado, los términos del programa deben permitir la "modificación para uso propio del cliente y la ingeniería inversa para la depuración de dichas modificaciones". Si un trabajo que usa un programa LGPL es un trabajo derivado o no es un problema legal.

Pero si lo que intenta hacer es evitar la LGPL, me pondría en contacto con la FSF según lo recomendado por Mark Booth .

Comunidad
fuente
1
El problema es que la LGPL permite algunas formas de trabajos derivados, mientras que no permite otras. He actualizado mi respuesta para hacer una distinción entre los trabajos derivados que entran en la categoría de trabajo basado en la biblioteca (que debía ser LGPL) y el trabajo que usa la biblioteca (que no lo hace).
Mark Booth
@ MarkBooth Estoy de acuerdo con usted y con otros, que en este caso es work based onporque están haciendo cambios a LGPL para exponer el código privado anterior.
1

Mi suposición: (pero IANAL) debe liberar como código abierto la biblioteca modificada como código LGPL y luego colocarla en un programa comercial. Eso funcionaria. Efectivamente, terminaría teniendo una bifurcación de código abierto de la biblioteca y luego venderá un front-end para ello.

Pero como muchos otros dijeron con razón, pregúntele a la FSF : es un escenario patológico intrigante que tiene allí; podrían preguntarse tanto como usted si es aplicable o no. (o al menos molestarse lo suficiente como para publicar una entrada de preguntas frecuentes sobre el tema)

ZJR
fuente
1

https://www.gnu.org/licenses/lgpl-java.html

Si distribuye una aplicación Java que importa bibliotecas LGPL, es fácil cumplir con LGPL. La licencia de su aplicación debe permitir a los usuarios modificar la biblioteca y aplicar ingeniería inversa a su código para depurar estas modificaciones. Esto no significa que deba proporcionar el código fuente ni ningún detalle sobre las partes internas de su aplicación. Por supuesto, algunos cambios que los usuarios pueden hacer en la biblioteca pueden romper la interfaz, lo que hace que la biblioteca no pueda funcionar con su aplicación. No necesita preocuparse por eso: las personas que modifican la biblioteca son responsables de hacer que funcione.

En resumen, no hay ningún problema con la herencia siempre que no cambie el código de la biblioteca en sí, pero incluso si lo cambia, debe liberar solo el código modificado de la biblioteca, no el código de la aplicación.

Nik.B
fuente
1
Su respuesta contradice varias otras respuestas, pero no proporciona mucho para respaldar sus reclamos. Otras respuestas son más detalladas y explican mejor sus afirmaciones. Por favor, editar su respuesta para proporcionar citas relevantes de la licencia o la FSF con el fin de respaldar su reclamo.
¿Cómo realmente mi respuesta no proporciona mucho para respaldar mis reclamos? Había puesto un enlace a la página oficial de GNU que despeja la confusión sobre LGPL y la herencia de clases. Incluso se actualiza para cubrir LGPL v3.
Nik.B