interfaces GPL vs plugin no diseñadas teniendo en cuenta una aplicación específica

7

No busco ni necesito asesoramiento legal, pero me vino a la mente un experimento interesante.

Imagine la siguiente situación (realmente no puedo pensar en un ejemplo concreto y no estoy seguro de que exista una manifestación real): existe una api A (libre) gratuita con licencia bajo alguna licencia permisiva o incluso LGPL. La aplicación no libre B implementa esta API en el orden de los complementos del host, pero hay otros programas gratuitos que hacen lo mismo. Además, hay un complemento C que actúa como un complemento en la API A. Se vincula a la biblioteca D, que está bajo la GPL, por lo que C también está bajo la GPL. Los complementos que utilizan A se cargan en los hosts a través de un mecanismo similar a dlopen y utilizan una estructura de datos compleja para la comunicación del complemento host. Ni B ni C distribuyen ningún archivo que pueda ser necesario para que A funcione correctamente (como los encabezados que contienen las definiciones de estructura de A o las bibliotecas dinámicas que contienen funciones de ayuda para A escritas por los autores de A), pero estas cosas pueden existir.

Ahora algunos usuarios instalan la aplicación B y el complemento C en su máquina, junto con todo lo que pueda ser necesario para que la API A funcione correctamente. Luego procede y carga C en B y crea cierta propiedad intelectual con B que no es una pieza de software.

¿Ocurrió una violación de la GPL en algún momento y, de ser así, quién violó la GPL y por qué?

  • Los autores de C violan la licencia de D al hacer que C sea posible para ser utilizado en el host no libre B? Esta es una posibilidad porque no pueden dar una excepción de la GPL (como una descrita en enlace o enlace ) debido a los términos de la licencia de D.
  • Los autores de B violan las licencias de C y D al hacer que C sea posible cargar en B? Esta es una posibilidad porque enlace no permite los mecanismos que A utiliza para la comunicación entre lo libre y lo no libre. módulos.
  • Los autores de A, debido a que se puede usar la API (y en este caso, se usó) para la comunicación entre GPL y software no libre. Esto sería extremadamente absurdo.
  • El usuario, porque en el momento de cargar B en C, hizo un trabajo derivado de C. Creo que esto es imposible, porque no lo distribuye. Pero, ¿cambiaría la situación si decide lanzar un archivo de configuración de B que hace que B cargue C como complemento?
  • Nadie, porque A cuenta como una 'biblioteca de sistema', y tanto B como C interactúan directamente solo con A, no entre sí. En un mundo sano, esto sucedería ...

Un ejemplo concreto de A podría ser algún tipo de audio (piense en LADSPA) o api de procesamiento de imágenes. Sin embargo, no pude encontrar dicha interfaz (es decir, software libre, genérico y también implementado por herramientas comerciales). Un ejemplo del mundo real también podría ser bastante esclarecedor.

    
pregunta Kristóf Marussy 05.04.2012 - 21:23

4 respuestas

3

Dada su descripción, creo que A y B son irrelevantes para la pregunta, lo que importa son C y D, y la pregunta es si la GPL permite o no la vinculación dinámica. Si alguien puede violar la GPL, es C si no está bajo la GPL.

Despuésdeinvestigarunpoco,descubríqueel artículo de Wikipedia GPL tiene un buen resumen del problema. La respuesta es: se disputa. Los tres puntos de vista existentes, según este artículo:

  • Tanto el enlace dinámico como el estático infringen 1 la GPL. Este es el punto de vista de los creadores de la GPL (la Free Software Foundation), y crearon la LGPL por este motivo (para permitir el enlace dinámico sin violación).

  • La vinculación estática infringe, pero la GPL no tiene claridad sobre la vinculación dinámica : es difícil decirlo, ya que la GPL no proporciona instrucciones claras sobre lo que se considera trabajo derivado.

  • La vinculación es irrelevante : la GPL solo debe aplicarse al nivel del código fuente. En mi opinión, esta es la opción más sensata, ya que vincularse a un software para acceder a su funcionalidad es similar a presionar un botón en una GUI para hacer lo mismo.

Dado que la FSF dice que su intención con la GPL es rechazar ambas, creo que es más prudente que cualquiera de ellas

  • respete esa intención y use la GPL en su propio trabajo si se vincula con la GPL, incluso si la redacción no está clara

  • o mantente alejado del software GPL

Irónicamente, la GPL no es tan libre / libre como uno podría pensar. Sé que hay una razón para eso, pero mi punto es: no ponga GPL en su software sin pensarlo. Si está buscando una licencia gratuita y permisiva, las licencias MIT o BSD podrían representar mejor sus intenciones.

1: cuando digo "viola" me refiero a que viola si el "consumidor" de la vinculación no está bajo la GPL.

    
respondido por el Tamás Szelei 06.04.2012 - 10:18
3

La GPL no fue violada por nadie. Una violación de la GPL solo ocurre cuando el código se "distribuye", es decir , se transfiere de una parte a otra. El único código que cambió de manos en este ejemplo fue B, C y D. El creador de C cumplió con el requisito de D de que C se distribuya bajo la GPL. El creador de B no distribuyó C o D, y no es responsable del hecho de que el usuario lo combinó con C y D, creando un sistema híbrido. Mientras el usuario no distribuya ese sistema híbrido a nadie más, el usuario no está violando los términos de GPL de C o de D.

    
respondido por el Ross Patterson 08.04.2012 - 04:08
1

Ejemplos del mundo real:

  • Motif API y sus diversas implementaciones Motif (propietario), OpenMotif (Open Group Public License), LessTif (LGPL). Las bibliotecas son reemplazos directos, puede compilar dinámicamente su código con OpenMotif y ejecutarlo con LessTif o viceversa.

  • Controladores de Linux propietarios : en la mayoría de los casos, para evitar problemas de licencia, hay un contenedor GPL delgado (L) que carga el código de propietario. El propósito exclusivo del envoltorio puede ser la separación, como el ejemplo el controlador binario de Nvidia , o la separación puede ser solo un efecto secundario, como para Ejemplo en el caso de NDISwrapper .

respondido por el vartec 06.04.2012 - 11:33
0

Creo que esto es una laguna que permite que el código no gpl use el código gpl. El único ejemplo que conozco del componente vlc active x. VLC es gpl. El componente VLC activex también es GPL. Cualquier aplicación de Windows que pueda cargar componentes activex puede cargar el componente vlc activex sin compartir ningún encabezado o código. Creo que es su último punto de bala que se aplica.

    
respondido por el FigBug 06.04.2012 - 04:42

Lea otras preguntas en las etiquetas