Questo non è un problema chiaro. Considera due estremità estreme dello spettro:
Il software client proprietario è un client HTTP e esegue il rendering delle risposte HTML. Può funzionare con qualsiasi server HTTP. Il server HTTP che usi per il tuo servizio utilizza componenti GPL.
Hai un programma che utilizza componenti con licenza GPL. Scegli un punto arbitrario nell'operazione di quel programma e suddividi il programma in due programmi. I due programmi comunicano su un hop di rete totalmente superfluo. Metti tutti i componenti con licenza GPL nel primo programma e la licenza in base alla GPL e concedi in licenza l'altro programma con una licenza incompatibile con GPL.
Il primo caso è chiaramente ok. Il secondo caso chiaramente non va bene. Non hai fornito molte informazioni sul tuo caso particolare e, anche se lo facessi, solo una sentenza del tribunale potrebbe decidere definitivamente se hai ragione.
Le FAQ di GPL hanno questo da dire sui programmi interoperabili, con licenza separata :
Tuttavia, in molti casi è possibile distribuire il software coperto da GPL insieme al proprio sistema proprietario. Per fare ciò validamente, è necessario assicurarsi che i programmi liberi e non liberi comunichino a distanza , che non siano combinati in modo da renderli effettivamente un unico programma.
La differenza tra questo e "incorporare" il software coperto da GPL è in parte una questione di sostanza e in parte di forma. La parte sostanziale è questa: se i due programmi sono combinati in modo da diventare effettivamente due parti di un programma, non puoi trattarli come due programmi separati. Quindi la GPL deve coprire tutto.
Devi decidere se ritieni che il tuo client sia un server conforme allo standard di "due parti dello stesso programma" (e quindi deve essere autorizzato ciascuno ai sensi della GPL) oppure no. Le FAQ di GPL forniscono ulteriori spiegazioni su questo argomento su un'altra domanda :
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).
...
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 .
Pertanto, la comunicazione di rete supera certamente il test del "meccanismo di comunicazione" ma non è chiaro dove la coppia client / server cada nel test di "semantica della comunicazione".