Puoi utilizzare un programma GPL dal tuo programma senza che il tuo programma sia influenzato dalla GPL, ma non puoi collegare il codice GPL al tuo programma senza che il tuo programma sia soggetto ai termini della GPL.
Nell'esempio fornito nella domanda, in cui è stato scritto un wrapper della GUI attorno a un programma della riga di comando esistente, la GUI non è vincolata dai termini della GPL, a condizione che si tratti di un programma separato che esegue GPLed programma in un processo separato e comunica con esso solo tramite l'interfaccia esistente (s) - ad esempio, sulla riga di comando e / o tramite stdin / stdout.
Alcuni bit pertinenti delle domande frequenti sulla GPL :
Where's the line between two separate programs, and one program with
two parts? This is a legal question, which ultimately judges will
decide. We believe that a proper criterion depends both on the
mechanism of communication (exec, pipes, rpc, function calls within a
shared address space, etc.) and the semantics of the communication
(what kinds of information are interchanged).
If the modules are included in the same executable file, they are
definitely combined in one program. If modules are designed to run
linked together in a shared address space, that almost surely means
combining them into one program.
By contrast, pipes, sockets and command-line arguments are
communication mechanisms normally used between two separate programs.
So when they are used for communication, the modules normally are
separate programs. But if the semantics of the communication are
intimate enough, exchanging complex internal data structures, that too
could be a basis to consider the two parts as combined into a larger
program.
Can I release a non-free program that's designed to load a GPL-covered plug-in?
It depends on how the program invokes its plug-ins. For
instance, if the program uses only simple fork and exec to invoke and
communicate with plug-ins, then the plug-ins are separate programs, so
the license of the plug-in makes no requirements about the main
program.
If the program dynamically links plug-ins, and they make
function calls to each other and share data structures, we believe
they form a single program, which must be treated as an extension of
both the main program and the plug-ins. In order to use the
GPL-covered plug-ins, the main program must be released under the GPL
or a GPL-compatible free software license, and that the terms of the
GPL must be followed when the main program is distributed for use with
these plug-ins.
If the program dynamically links plug-ins, but the
communication between them is limited to invoking the ‘main’ function
of the plug-in with some options and waiting for it to return, that is
a borderline case.
Si noti che la GPL si applica in toto al programma della riga di comando sottostante in ogni caso - se lo si distribuisce (a differenza che gli utenti lo ottengono da un'altra fonte), si è responsabili di fornire una copia della GPL agli utenti , rendendo chiaro a loro che il programma della riga di comando è sotto GPL (anche se il wrapper della GUI non lo è), e rendendo disponibile il codice sorgente del programma della riga di comando su richiesta. Di nuovo dalle FAQ GPL:
If people were to distribute GPL-covered software calling it “part of”
a system that users know is partly proprietary, users might be
uncertain of their rights regarding the GPL-covered software. But if
they know that what they have received is a free program plus another
program, side by side, their rights will be clear.
Disclaimer standard: non sono un avvocato e, anche se fossi un avvocato, non sono il tuo avvocato. Se hai bisogno di una risposta definitiva, consulta un professionista legale appropriato che è autorizzato a esercitare nella tua giurisdizione.