¿Puedo utilizar comercialmente software con licencia GPL en mi servidor si solo distribuyo el software del cliente?

15

Yo entiendo las reglas de la GPL establece que si distribuyo cualquier software usando el código GPL, luego de que el código debe ser licenciado bajo la GPL .

Sin embargo, me pregunto cuáles son las reglas en este caso: estoy creando un servicio donde venderé y distribuiré software del lado del cliente .

El software del lado del cliente no tiene absolutamente ningún código GPL. Es 100% mi propio código.

Sin embargo, el software del cliente se conectará a mi servidor, que internamente usa el código GPL.

Estoy no distribuyendo el software del lado del servidor; el software del lado del servidor vivirá en un servidor dedicado que yo solo controlo, pero el software del lado del cliente no funcionará sin conectarse a dicho servidor.

¿Cuenta esto como un solo software? Si tuviera que hacer esto, ¿tendría que licenciar mi código fuente del lado del cliente como GPL? ¿O puedo vender el software del lado del cliente sin liberar su código fuente?

Steven Jeffries
fuente

Respuestas:

12

Este no es un problema claro. Considere dos extremos del espectro:

  1. 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.

  2. 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".

apsillers
fuente
¿Sería razonable basar la distinción en la medida en que la interacción entre los programas era pública? Si, por ejemplo, implemento un sistema de juego de ajedrez que utiliza un programa de interfaz de usuario GPL que se comunica con un motor de ajedrez patentado, y documentar cómo cualquier otra persona que desee escribir su propio motor de ajedrez podría hacer que use esa misma interfaz de usuario, creo que eso debería satisfacer el espíritu (y con suerte la letra) de GPL aunque, a menos que alguien escribiera un motor alternativo, la interfaz de usuario de la interfaz de usuario no tendría otro propósito que hablar con el programa propietario.
supercat
Hmm Hice esta pregunta tan vagamente porque tenía curiosidad sobre la GPL en general. Sin embargo, creo que entiendo la diferencia ahora. Si mi servidor tiene información de cuenta de usuario que mi software de cliente necesita para ejecutarse, entonces eso viola claramente la GPL. Si mi servidor es algo así como un servidor de retransmisión de paquetes que solo permite que dos versiones del software de mi cliente se comuniquen entre sí, entonces estaría bien. ¿Estoy en lo correcto en estos supuestos?
Steven Jeffries
4

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.

J. Lenthe
fuente
3
Sólo una nota de advertencia: Si el cliente está diseñado específicamente para comunicarse con este software de servidor, entonces es muy posible que la FSF hace considerar servidor y de cliente como un producto. Vea también aquí en las preguntas frecuentes de GPL
Bart van Ingen Schenau
Por otro lado, si un tercero escribe software de cliente para comunicarse con su servidor, sin haber visto nunca el software del servidor o una licencia, ese argumento parece ridículo. Y significaría que Microsoft podría demandar a cualquiera que escriba software que se conecte a servidores de Outlook, por ejemplo.
gnasher729
2

¿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.

Robert Harvey
fuente
Erraré por precaución y no utilizaré el código GPL en mi servidor en ese momento.
Steven Jeffries
2
@StevenJeffries Esta respuesta va en contra de la práctica actual y los requisitos de la GPL. Mientras no distribuya un software o un trabajo derivado, soy libre de usar el software GPL en un servidor, por ejemplo, Linux o GCC o WordPress. El simple uso de un software no crea un trabajo derivado. En el caso de la GPL, se considera correcto cuando al menos se trata de una separación a nivel de proceso (sin memoria compartida, sin estructuras de datos compartidas). Ver la respuesta de J. Lenthe para una solución correcta y para referencias.
amon
@amon: Si ni siquiera comparte estructuras de datos entre el servidor y el cliente, tiene razón. Sin embargo, dudo que ese sea el caso. La distinción que estoy dibujando (es que el software del cliente depende del software del servidor para su correcta ejecución) no es arbitraria; Es uno de los dos requisitos esenciales para lo que la FSF considera que no es un "trabajo derivado"; el otro es la "comunicación a la altura de los brazos". No confíes en mi palabra; léalo usted mismo en el sitio web de la FSF.
Robert Harvey
@amon: Puedes leer más sobre eso aquí .
Robert Harvey
@amon Otro elemento de preguntas frecuentes sobre GPL muy relevante (bueno como seguimiento después de leer el enlace de Robert) es este, particularmente los últimos tres párrafos: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers