remove how d33006 autodetect windows linux gpl freebsd nvidia

windows - how - ¿Depende el código GPL que se vincula con la biblioteca propietaria que se crea primero?



nvidia installer (5)

De las preguntas frecuentes de GNU GPL:

¿Puedo aplicar la GPL cuando escribo un complemento para un programa no gratuito?

Si el programa utiliza fork y exec para invocar complementos, entonces los complementos son programas separados, por lo que la licencia para el programa principal no los exige. Por lo tanto, puede usar la GPL para un complemento, y no hay requisitos especiales.

Si el programa vincula dinámicamente los complementos y se realizan llamadas a funciones y comparten estructuras de datos, creemos que forman un solo programa, que debe tratarse como una extensión tanto del programa principal como de los complementos. Esto significa que la combinación del complemento cubierto por la GPL con el programa principal no libre violaría la GPL. Sin embargo, puede resolver ese problema legal agregando una excepción a la licencia de su complemento, dando permiso para vincularlo con el programa principal no gratuito.

Vea también la pregunta que estoy escribiendo software libre que utiliza una biblioteca no libre .

Y:

¿Qué problemas legales surgen si uso bibliotecas incompatibles con GPL con el software GPL?

Ambas versiones de la GPL tienen una excepción a su copyleft, comúnmente llamada la excepción de la biblioteca del sistema. Si las bibliotecas incompatibles con la GPL que desea usar cumplen con los criterios de una biblioteca del sistema, entonces no tiene que hacer nada especial para usarlas; El requisito de distribuir el código fuente para todo el programa no incluye esas bibliotecas, incluso si distribuye un ejecutable vinculado que las contenga.

Los criterios para lo que cuenta como una "biblioteca del sistema" varían entre las diferentes versiones de la GPL. GPLv3 define explícitamente "Bibliotecas del sistema" en la sección 1, para excluirlo de la definición de "Fuente correspondiente". GPLv2 dice lo siguiente, cerca del final de la sección 3:

Sin embargo, como excepción especial, el código fuente distribuido no necesita incluir nada que se distribuya normalmente (en forma de fuente o binario) con los componentes principales (compilador, kernel, etc.) del sistema operativo en el que se ejecuta el ejecutable. a menos que ese componente acompañe al ejecutable.

...

Microsoft crea sus ventanas y la biblioteca MFC DLL, etc. Un desarrollo de código abierto escribe una nueva aplicación MFC y libera el código fuente como GPL. La aplicación tiene que vincularse con las bibliotecas / DLL de MS para ejecutarse en Windows, pero no creo que nadie pueda argumentar que ahora tenemos el derecho de forzar a la GPL de Microsoft a su DLL.

¿Significa esto que la licencia GPL realmente depende de cuál se "crea" primero? Si la biblioteca propietaria se crea primero (como las DLL de Windows) que se publica sin vincular y cualquier código GPL y luego un programa GPL se vincula con ella, entonces el programa GPL no puede convertir la biblioteca propietaria en GPL aunque el código propietario sea " vinculado "con el código GPL.

Si este es el caso, ¿pueden las compañías como NVidia o RealNetworks hacer lo siguiente? Supongamos que les gusta mantener en privado la biblioteca patentada del motor de decodificación de medios HDDecoding, pero también quieren "aprovechar" el código GPL de código abierto para mostrar su hardware.

  1. Crean una biblioteca propietaria para hacer decodificación de medios y liberan algunos códigos de muestra.
  2. Alguien (desarrollo de código abierto) crea un "complemento" que está vinculado a esta biblioteca patentada para código GPL, como XBMC, Mplayer o VLC.
  3. ¿Pueden argumentar que desde que crearon primero la biblioteca propietaria (al igual que MS crea todas las DLL primero), los programas GPL que se vinculan con su código propietario no los convierten en código GPL.

En teoría, se puede argumentar que el desarrollador de código abierto que crea el archivo GPL vlc.exe que se enlaza con la biblioteca de decodificadores de medios propiedad de NVidia está violando la licencia GPL.

Eso significa que todos los programas GPL que se ejecutan en Windows, como VLC, git, cygwin, etc., están violando la licencia GPL porque definitivamente necesitan vincularse con las bibliotecas de Microsoft Windows propietarias para ejecutarse.

Caso 2: ¿Qué está mal con esto?

NVidia puede crear una nueva biblioteca de abstracción de hardware que oculta las últimas funciones gráficas. También crean un controlador FreeBSD con esta biblioteca y liberan el código fuente del controlador BSD pero no el código fuente de la biblioteca.

Alguien (desarrollador de Linux) puede implementar el controlador de Linux que enlaza con esta biblioteca para crear un controlador de gráficos NVidia para Linux. Pero como NVidia no hizo esto, pueden mantener la fuente de la biblioteca "oculta" mientras habilitan el "soporte de Linux".

Sin duda viola el espíritu de la GPL.

¿Significa que ejecutar cualquier archivo ejecutable creado con una fuente GPL en Windows / Mac / Iphone / PSP3 también viola el espíritu de la GPL?


IANAL, pero el orden de la creación no importa. Si la vinculación de dos binarios sería una violación de la GPL, entonces no está permitida por la GPL, independientemente de cuál se haya creado primero.

El caso 1 está dirigido por la excepción de la biblioteca del sistema, como cita Michael Burr. Tenga en cuenta que no es dependiente del tiempo; si no fuera por la excepción de la biblioteca del sistema, sería una infracción de la GPL ejecutar el código GPL escrito en 2003 en Windows 98 (que se escribió antes del código GPL) que sería ejecutarlo en Vista (que fue escrito después del código GPL).

Estoy de acuerdo en que el caso 2 viola el espíritu de la GPL, pero, como el término es usado por la GPL, el controlador NVidia no está "vinculado" con el kernel de Linux porque está cargado como un módulo. No podría distribuir un kernel de Linux con el binario no libre de NVidia enlazado estáticamente, pero ¿quién distribuye los kernels enlazados estáticamente en estos días de todos modos?


Lo que significa, simplemente, es que no puede aplicar la GPL sobre el código o las bibliotecas que no son compatibles con la GPL y distribuir un trabajo combinado compilado, a menos que aplique una excepción de enlace .

La excepción de enlace proporciona una forma de distribuir ejecutables compilados que contienen bits no libres, mientras que no se necesita un permiso especial para distribuir el programa en formato de origen.

Esta excepción, por supuesto, depende de las bibliotecas no libres que le permiten distribuir programas que están vinculados contra ella (especialmente estáticamente).

Entonces, para responder a su primera pregunta, no ... esto no es un escenario de ''gallina o huevo''. Lo que recomiendo es que cuando se enfrente a la posibilidad de tener que escribir una excepción, probablemente sea mejor elegir una licencia con menos restricciones, como la licencia BSD de Apache o la cláusula 3.

En segundo lugar, no, no puede simplemente aplicar la GPL a su código con el propósito de cambiar la licencia por algo con lo que esté vinculado. Nuevamente, volvemos a la excepción de enlace, que es su responsabilidad proporcionar.

El spririt de la GPL vive en un mundo donde no existe el software propietario. RMS ha declarado esto como el objetivo final en muchas ocasiones. Lo que queda son los aspectos prácticos que deben abordarse para las personas que desean distribuir software libre en plataformas no libres.

Esta es una de las principales razones por las que Linux (como en el Kernel) sigue siendo solo GPL v2.


No puedes cambiar las licencias de otros programas enlazándolos, nunca. Si su licencia no permite la vinculación con programas que no son de código abierto, debe cambiar su licencia o dejar de vincularlos. La situación sería diferente si los otros programas vincularan al suyo. En ese caso, deben obtener su licencia o dejar de vincularse a su programa.


Tiene un malentendido fundamental de la forma en que las restricciones de la GPL entran en vigor. Tu primer ejemplo está cubierto por la "exención de la biblioteca del sistema", pero incluso si no lo fuera, no tendría el efecto que posees.

La GPL dice que si distribuye el programa GPL, o un derivado del mismo, también debe proporcionar la fuente al programa o derivado bajo términos equivalentes a la GPL (a las personas a quienes distribuyó el programa / derivado).

Esto significa que si distribuyo su programa GPL vinculado con algunos de los códigos de Microsoft, tengo que proporcionar la fuente a toda la bola de cera, o corro el riesgo de que usted sea demandado por violar sus derechos de autor. Tenga en cuenta que mientras Microsoft sea un tercero, esto no les impone ninguna restricción (¡por supuesto!). Si no tengo acceso al código de Microsoft, que es probable, entonces no puedo distribuir ese trabajo derivado sin estar en violación de su licencia.