Questo non è un problema chiaro. Prendi in considerazione due estremi dello spettro:
-
Il tuo software client proprietario è un client HTTP e restituisce risposte HTML. Può funzionare con qualsiasi server HTTP. Il server HTTP che utilizzi 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 interrompi 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 licenza sotto GPL, e concedi in licenza l'altro programma sotto licenza GPL-incompatibile.
Il primo caso è chiaramente a posto. Il secondo caso chiaramente non va bene. Non hai dato molte informazioni sul tuo caso particolare e, anche se lo hai fatto, solo una decisione del tribunale potrebbe decidere in via definitiva se hai ragione.
Le FAQ GPL hanno questo da dire su programmi interoperabili, con licenza separata :
However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.
The difference between this and “incorporating” the GPL-covered software is partly a matter of substance and partly form. The substantive part is this: if the two programs are combined so that they become effectively two parts of one program, then you can't treat them as two separate programs. So the GPL has to cover the whole thing.
Devi decidere se ritieni che il tuo server sia conforme allo standard di "due parti dello stesso programma" (e quindi ognuno di essi deve avere la licenza GPL) o meno. Le FAQ GPL forniscono alcune ulteriori spiegazioni su questo argomento su un'altra domanda :
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).
...
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.
Quindi, la comunicazione di rete supera certamente il test del "meccanismo di comunicazione", ma non è chiaro dove la coppia client / server ricade sul test di "semantica della comunicazione".