¿Puede un programa GPLv2 confiar en bibliotecas con licencia de Apache?

12

¿Puede un programa de software con licencia GPL (versión 2) depender de bibliotecas con licencia bajo APLv2 sin entrar en conflicto con la GPL? El lenguaje aquí me sugiere que quizás no.

En mi caso específico, estoy viendo un demonio que usa algunas bibliotecas externas con licencia APLv2.

ACTUALIZACIÓN (en respuesta a respuestas / comentarios).

  1. A los efectos de esta pregunta, no puedo volver a licenciar el programa principal (el demonio)
  2. El programa principal se ha ampliado con funcionalidades que utilizan apr-utily quizás otros componentes APLv2.

Mi pregunta es, ¿puedo liberar el demonio extendido bajo la GPLv2, o es algo que necesito guardar para mí (sin distribución) y / o volver a implementar sin APLv2 si estoy comprometido a (a) liberar esta extensión, y, (b) ¿ mantener el demonio GPL?

pilcrow
fuente
2
El documento que vinculó claramente indica que no. Sin embargo, la mayoría del código GPL tiene la disposición "o, a su elección, cualquier versión posterior", lo que significa que puede tratarlo como GPLv3 y eso está bien.
Jan Hudec

Respuestas:

7

Aclaremos algo de terminología primero. Cuando la FSF dice que una licencia es compatible con la GPL , no quieren decir lo que mucha gente interpreta que significa. Muchos interpretan que "compatible" significa que las dos piezas de software pueden coexistir felizmente en la misma aplicación.

Eso está cerca de lo que significa la FSF, pero la disposición copyleft de la GPL lleva las cosas un poco más allá.

De las preguntas frecuentes de GPL , el énfasis es mío.

Significa que la otra licencia y la GNU GPL son compatibles; puede combinar el código publicado bajo la otra licencia con el código publicado bajo la GNU GPL en un programa más grande.
Todas las versiones de GNU GPL permiten tales combinaciones de forma privada; También permiten la distribución de tales combinaciones, siempre que la combinación se publique bajo la misma versión GNU GPL .

Por lo tanto, una licencia es compatible con la GPL si sus términos pueden ser absorbidos debajo de la GPL.


Así que echemos un vistazo a APLv2 y GPLv3.

  • APLv2_Lib + GPLv3_Lib => Lib combinada ya que GPLv3 está bien.
  • APLv2_Lib + GPLv3_Lib => Lib combinada ya que APLv2 no está bien.

Y Apache dice tanto aquí :

Evitamos el software GPLv3 porque los autores de GPLv3 consideran que simplemente vincularlo crea un trabajo derivado. Queremos honrar su licencia.


Pero está trabajando con un demonio que tenía licencia GPLv2, no v3.

FSF tiene bastante claro que lo que quiere hacer no es aceptable para una distribución pública.

Tenga en cuenta que esta licencia no es compatible con GPL versión 2, porque tiene algunos requisitos que no están en esa versión GPL. Estos incluyen ciertas disposiciones de rescisión de la patente e indemnización.

Entonces, para responder a su pregunta:

No , no puede distribuir el demonio combinado utilizando material con licencia GPLv2 y APLv2 .
FSF declara explícitamente esa combinación como no permitida para la distribución pública.

Alternativas:

  1. Usted está autorizado para utilizarla de forma privada.

  2. También estaría bien volver a escribir la funcionalidad APLv2 y luego combinar su nuevo trabajo con el trabajo GPLv2.

  3. Podrías ver si el demonio se puede cambiar a GPLv3. Si es así, estaría en condiciones de fusionar el trabajo APLv2 en el ahora demonio GPLv3.


fuente
2

Mi opinión está de acuerdo con OP basada en el texto del enlace ASF de OP.

A ASF (Apache Software Foundation) no le gusta la idea de que el código ASFv2 sea parte de un sistema que usa GPLv2, en base a la información limitada de su caso y mi comprensión de las diversas licencias de software libre: independientemente de si el proyecto general tiene GPLv2 , o el proyecto general es GPLv2, que intenta incluir ASFv2.

Además, parece que un proyecto paraguas ASFv2 que tiene código GPLv3 no debería ocurrir, pero un proyecto paraguas GPLv3 puede tener código ASFv2.

El caveot, tal vez (según Gnu), es cómo interactúan entre sí. Si están vinculados, comparten las mismas copias de datos durante la ejecución, son uno en el mismo programa; sin embargo, si funcionan como procesos separados (es decir, bifurcados) que pasan datos entre diferentes procesos distintos, lo que está haciendo podría ser permisible porque, para ellos, son programas separados. Si utiliza el espacio de datos compartido durante la ejecución y no opera con procesos distintos, entonces lo que está haciendo podría no estar permitido, porque para ellos, son lo mismo o están demasiado estrechamente acoplados para ser distintos o independientes.

JustinC
fuente