Mi sistema contiene software GPL, ¿tiene que ser de código abierto?
En un artículo anterior, presentamos la GPL, una licencia de código abierto utilizada por Linux y otro software de código abierto. La GPL tiene el requisito de que si el software derivado del software GPL participa en el lanzamiento del software, entonces el software también debe cumplir con la GPL, es decir, el software debe ser de código abierto, lo que se denomina "infecciosidad" del GPL. Por ejemplo, si modifico un programa GPL, necesito abrir el código fuente de mi programa; si extraigo un fragmento de código de la GPL, necesito abrir el código fuente de mi programa; si uso una biblioteca GPL, necesito abrir el código fuente de mi programa; programa. Este tema es bastante controvertido. ¿Qué se debe hacer para cumplir con las disposiciones de la GPL? En el uso real, muchas personas no están seguras. En este artículo, solo discutiremos brevemente algunas cuestiones. .
Una función de biblioteca es una colección de API utilizadas por un programa cuando se ejecuta, como la biblioteca GNU C (también conocida como glibc). Todos sabemos que las funciones de la biblioteca generalmente implementan algunas funciones básicas subyacentes. El uso de funciones de la biblioteca no solo puede mejorar la eficiencia de ejecución del programa, sino también la calidad de la programación. Sin embargo, si una biblioteca usa la licencia GPL, ¿se infectará su programa si usa esta biblioteca en su programa? Hay diferentes puntos de vista sobre este tema, la Free Software Foundation (FSF) cree que esta situación infecta su programa, simplemente se vincula a la biblioteca GPL, luego debe abrir el código fuente al lanzar el programa completo; de lo contrario, no puede usar esta biblioteca. .
Pero como dijimos, las funciones de la biblioteca son funciones básicas de bajo nivel. Si utiliza el acuerdo GPL, restringirá el uso de las funciones de la biblioteca por parte de programas propietarios, lo que no favorece la promoción del software libre.
Por lo tanto, propusimos la Licencia pública general reducida GNU (Licencia pública general reducida GNU, abreviada como LGPL), que se utiliza principalmente para bibliotecas de funciones. Su característica más importante es que permite vincular software no libre. para funcionar con bibliotecas sin infectarse, por ejemplo, utilizando la biblioteca GUN C con licencia LGPL.
Por lo tanto, la Free Software Foundation cree que los programas que enlazan con bibliotecas GPL deben ser de código abierto, mientras que los programas que enlazan con bibliotecas LGPL no tienen por qué ser de código abierto.
En las notas de la FSF, hay instrucciones separadas para usar software en conjunto, principalmente para distinguir si se trata de programas independientes o partes diferentes del mismo programa. Por ejemplo, FSF cree que se pueden diferenciar programas por el mecanismo de comunicación entre ellos (exec, pipes, rpc, llamadas a funciones de espacio de direcciones que disfrutan, etc.) y la semántica de comunicación (qué información se intercambia).
Si todos sus programas están empaquetados en un archivo ejecutable, entonces definitivamente son un programa, y todo el programa cumple con la GPL, y los programas que utilizan tuberías, sockets y parámetros de línea de comando para comunicarse entre sí otros básicamente pueden considerarse programas independientes y diferentes programas pueden cumplir con diferentes protocolos. Si las estructuras de datos intercambiadas entre programas son particularmente complejas y semánticamente muy cercanas, generalmente pueden considerarse el mismo programa.
Pero la FSF también enfatizó que determinar si un procedimiento de agregación es independiente o un procedimiento más amplio es, en última instancia, una cuestión legal que debe ser decidida por un juez.
Linux usa la GPL, entonces, ¿los programas portados a Linux serán infectados por la GPL? De hecho, si su programa se ve afectado por la GPL no tiene nada que ver con su sistema operativo subyacente. Depende principalmente del primer punto que mencionamos anteriormente, qué protocolo utiliza la biblioteca que usa si su programa no usa la biblioteca en absoluto. en Linux o Si solo usa la biblioteca LGPL, naturalmente no estará infectado. Si usa la biblioteca GPL, estará infectado por la GPL.
Según la FSF, las bibliotecas publicadas bajo GPL son generalmente bibliotecas muy profesionales que no están disponibles en otras plataformas. Dado que son exclusivas de Linux, no hay nada de malo en hacerlas de código abierto.
MySQL utiliza una licencia de doble licencia y su versión comunitaria utiliza GPLv2. Tomando como ejemplo el desarrollo de Java, la comunicación entre el programa y la base de datos es a través de sockets. Según lo mencionado anteriormente en este artículo, nuestro programa Java no será infectado por MySQL, por lo que no tenemos que cumplir con la GPL. Si agrupamos todos estos controladores en un solo paquete, nuestro programa quedará infectado por este controlador y, cuando venda su programa, también deberá proporcionar el código fuente a la otra parte.
Pero la realidad es que rara vez escuchamos a las personas usar el código fuente cuando usan el programa de código abierto MySQL. Hay varias opiniones en Internet, y la mayoría de las personas básicamente ignoran este problema, y entre esas razones. Al no ser de código abierto, creo que la más convincente parece ser "Java proporciona JDBC, y el controlador Mysql es solo una implementación de la API JDBC. El controlador Mysql no es equivalente a la API JDBC. El controlador Mysql es solo una implementación de la API JDBC". Una implementación. El controlador MySQL es solo una implementación de la API JDBC, que puede ser reemplazada y no es una parte necesaria del programa.
Todavía hay mucho desacuerdo sobre este problema, y no existe una declaración autorizada o un precedente legal, por supuesto, si su programa no está diseñado para distribución, no tiene que preocuparse por este problema en absoluto, en última instancia, este es un problema legal
La naturaleza contagiosa de la GPL garantiza que el programa siga siendo de código abierto y de gran tamaño. La mayoría de los programadores tienen la libertad de utilizar programas, pero al mismo tiempo, la libertad de algunos programas propietarios para utilizar software GPL está restringida. En algunos casos muy claros, debemos cumplir con la GPL y abrir el código fuente del programa correspondiente. Si se le solicita que abra el código fuente en circunstancias ambiguas, déjelo en manos del juez.