Puede usar un programa GPL de su propio programa sin que su programa se vea afectado por la GPL, pero no puede vincular el código GPLed a su propio programa sin que su programa esté sujeto a los términos de la GPL.
En el ejemplo proporcionado en la pregunta, en la que ha escrito un contenedor GUI alrededor de un programa de línea de comandos existente, su GUI no está vinculada por los términos de la GPL, siempre que sea un programa separado que ejecute el programa GPL en un separe el proceso y se comunique con él solo a través de las interfaces existentes, por ejemplo, a través de la línea de comando y / o mediante stdin / stdout.
Algunas partes relevantes de GPL FAQ :
¿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).
Si los módulos están incluidos en el mismo archivo ejecutable, definitivamente se combinan en un programa. Si los módulos están diseñados para ejecutarse unidos en un espacio de direcciones compartido, eso seguramente significa combinarlos en un solo programa.
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 e intercambia estructuras de datos internas complejas, eso también podría ser una base para considerar las dos partes combinadas en un programa más amplio.
¿Puedo lanzar un programa no gratuito diseñado para cargar un complemento cubierto por la GPL?
Depende de cómo el programa invoca sus complementos. Por ejemplo, si el programa usa solo fork y exec simples para invocar y comunicarse con complementos, entonces los complementos son programas separados, por lo que la licencia del complemento no requiere requisitos sobre el programa principal.
Si el programa vincula dinámicamente los complementos, y realizan llamadas de función entre sí 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. Para usar los complementos cubiertos por la GPL, el programa principal debe publicarse bajo la GPL o una licencia de software libre compatible con la GPL, y que los términos de la GPL deben seguirse cuando el programa principal se distribuye para su uso con estos complementos
Si el programa vincula dinámicamente los complementos, pero la comunicación entre ellos se limita a invocar la función 'principal' del complemento con algunas opciones y esperar a que regrese, ese es un caso límite.
Tenga en cuenta que la GPL se aplica en su totalidad al programa de línea de comandos subyacente en cualquier caso: si lo distribuye (en lugar de que los usuarios lo obtengan de otra fuente), usted es responsable de proporcionar una copia de la GPL a los usuarios, haciéndolo aclararles que el programa de la línea de comandos está bajo la GPL (incluso si el contenedor de la GUI no lo está), y hacer que el código fuente del programa de la línea de comandos esté disponible para ellos a pedido. De las preguntas frecuentes de GPL nuevamente:
Si la gente distribuyera software cubierto por GPL llamándolo "parte de" un sistema que los usuarios saben que es en parte propietario, los usuarios podrían estar inseguros de sus derechos con respecto al software cubierto por GPL. Pero si saben que lo que han recibido es un programa gratuito más otro programa, uno al lado del otro, sus derechos estarán claros.
Descargo de responsabilidad estándar: no soy un abogado y, aunque fuera un abogado, no soy tu abogado. Si necesita una respuesta definitiva, consulte a un profesional legal apropiado que tenga licencia para ejercer en su jurisdicción.