Este no es un problema claro. Considere dos extremos del espectro:
Su software cliente propietario es un cliente HTTP y genera respuestas HTML. Puede funcionar con cualquier servidor HTTP. El servidor HTTP que utiliza para su servicio utiliza componentes GPL.
Tiene un programa que utiliza componentes con licencia GPL. Elige un punto arbitrario en la operación de ese programa y divide el programa en dos programas. Los dos programas se comunican a través de un salto de red totalmente superfluo. Coloca todos los componentes con licencia GPL en el primer programa y licencia bajo la GPL, y licencia el otro programa bajo una licencia incompatible con la GPL.
El primer caso está claramente bien. El segundo caso claramente no está bien. No ha brindado mucha información sobre su caso en particular, e incluso si lo hizo, solo un fallo de la corte podría decidir definitivamente si está en lo correcto.
Las preguntas frecuentes de GPL tienen esto que decir sobre los programas interoperables, con licencia por separado :
Sin embargo, en muchos casos puede distribuir el software cubierto por la GPL junto con su sistema propietario. Para hacer esto de manera válida, debe asegurarse de que los programas gratuitos y no gratuitos se comuniquen a distancia , que no se combinen de una manera que los convierta efectivamente en un programa único.
La diferencia entre esto y "incorporar" el software cubierto por la GPL es en parte una cuestión de fondo y en parte de forma. La parte sustantiva es esta: si los dos programas se combinan para que se conviertan efectivamente en dos partes de un programa, entonces no se pueden tratar como dos programas separados. Entonces, la GPL tiene que cubrir todo.
Debe decidir si cree que su cliente es un servidor que cumple con el estándar de "dos partes del mismo programa" (y, por lo tanto, debe tener una licencia bajo la GPL) o no. Las preguntas frecuentes de GPL ofrecen más explicaciones sobre este tema en otra pregunta :
¿Dónde está la línea entre dos programas separados y un programa con dos partes? Esta es una pregunta legal, que finalmente los jueces decidirán. Creemos que un criterio adecuado depende tanto del mecanismo de comunicación (exec, tuberías, rpc, llamadas de función dentro de un espacio de direcciones compartidas, etc.) como de la semántica de la comunicación (qué tipos de información se intercambian).
...
Por el contrario, las tuberías, los sockets y los argumentos de la línea de comandos son mecanismos de comunicación que normalmente se usan entre dos programas separados. Entonces, cuando se usan para la comunicación, los módulos normalmente son programas separados. Pero si la semántica de la comunicación es lo suficientemente íntima, intercambiando estructuras de datos internos complejos, eso también podría ser una base para considerar las dos partes combinadas en un programa más amplio .
Entonces, la comunicación de red ciertamente pasa la prueba del "mecanismo de comunicación", pero no está claro dónde cae su par cliente / servidor en la prueba de "semántica de la comunicación".
Dos procesos que se comunican a través de una red no implican la creación de un trabajo derivado como lo hace el enlace de un ejecutable con una biblioteca. Por lo tanto, el código GPL en el servidor no se aplica al código del cliente.
De acuerdo con la GPL, debe distribuir el código fuente modificado cuando distribuye binarios. Como no está distribuyendo los binarios del servidor, no es necesario que distribuya el código fuente del servidor.
La GNU Affero GPL es una licencia similar a la GPL con verbage adicional diseñado para cerrar este mismo agujero de bucle que desea aprovechar (consulte: http://www.gnu.org/licenses/why-affero-gpl.html y http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL ).
Descargo de responsabilidad: soy un desarrollador, no un abogado.
fuente
¿El software del cliente depende del software del servidor para su correcto funcionamiento? En otras palabras, ¿funcionará el software del cliente sin estar conectado al servidor?
Si la respuesta a eso es "sí", y el servidor simplemente proporciona una característica adicional, y no soporte básico, para su software de cliente, entonces probablemente esté en claro. Si el software del servidor es una parte integral del software del cliente y proporciona una funcionalidad básica al software del cliente (es decir, el software del cliente no funcionará sin el servidor), entonces la combinación es un trabajo derivado, cubierto por la GPL.
fuente