È possibile utilizzare un programma GPL dal proprio programma senza che il programma sia interessato dalla GPL, ma non è possibile collegare il codice GPL al proprio programma senza che il programma diventi soggetto ai termini della GPL.
Nell'esempio fornito nella domanda, in cui è stato scritto un wrapper GUI attorno a un programma da riga di comando esistente, la GUI non è vincolata dai termini della GPL, purché si tratti di un programma separato che esegue il programma GPL in un processo separato e comunica con esso solo tramite le interfacce esistenti, ad esempio tramite la riga di comando e / o tramite stdin / stdout.
Alcuni bit rilevanti dalle FAQ di GPL :
Dov'è la linea tra due programmi separati e un programma con due parti? Questa è una domanda legale, che alla fine i giudici decideranno. Riteniamo che un criterio adeguato dipenda sia dal meccanismo di comunicazione (exec, pipe, rpc, chiamate di funzione all'interno di uno spazio di indirizzi condiviso, ecc.) Sia dalla semantica della comunicazione (che tipo di informazioni vengono scambiate).
Se i moduli sono inclusi nello stesso file eseguibile, vengono sicuramente combinati in un unico programma. Se i moduli sono progettati per funzionare collegati insieme in uno spazio di indirizzi condiviso, ciò significa quasi sicuramente combinarli in un unico programma.
Al contrario, pipe, socket e argomenti della riga di comando sono meccanismi di comunicazione normalmente utilizzati tra due programmi separati. Pertanto, quando vengono utilizzati per la comunicazione, i moduli sono normalmente programmi separati. Ma se la semantica della comunicazione è abbastanza intima, scambiando complesse strutture di dati interni, anche quella potrebbe essere una base per considerare le due parti come combinate in un programma più ampio.
Posso rilasciare un programma non gratuito progettato per caricare un plug-in coperto da GPL?
Dipende da come il programma invoca i suoi plug-in. Ad esempio, se il programma utilizza solo fork e exec semplici per invocare e comunicare con i plug-in, i plug-in sono programmi separati, quindi la licenza del plug-in non richiede requisiti per il programma principale.
Se il programma collega dinamicamente i plug-in e si scambiano chiamate funzionali e condividono strutture di dati, riteniamo che formino un singolo programma, che deve essere trattato come un'estensione sia del programma principale che dei plug-in. Per utilizzare i plug-in coperti da GPL, il programma principale deve essere rilasciato sotto licenza GPL o una licenza di software libero compatibile GPL e che i termini della GPL devono essere seguiti quando il programma principale viene distribuito per l'uso con questi plug-in.
Se il programma collega dinamicamente i plug-in, ma la comunicazione tra loro si limita a invocare la funzione "principale" del plug-in con alcune opzioni e ad attendere che ritorni, questo è un caso limite.
Si noti che la GPL si applica integralmente al programma da riga di comando sottostante in ogni caso - se lo si distribuisce (anziché far sì che gli utenti lo ottengano da un'altra fonte), si è responsabili di fornire una copia della GPL agli utenti, rendendola chiarire loro che il programma da riga di comando è sotto licenza GPL (anche se il wrapper della GUI non lo è) e rendere disponibile il codice sorgente del programma da riga di comando su richiesta. Dalle domande frequenti su GPL:
Se le persone distribuissero il software coperto da GPL definendolo "parte di" un sistema che gli utenti sanno essere parzialmente proprietario, gli utenti potrebbero non essere sicuri dei propri diritti in merito al software coperto da GPL. Ma se sanno che quello che hanno ricevuto è un programma gratuito e un altro programma, fianco a fianco, i loro diritti saranno chiari.
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.