To nie jest jednoznaczny problem. Rozważ dwa skrajne krańce spektrum:
Twoje zastrzeżone oprogramowanie klienckie jest klientem HTTP i wyświetla odpowiedzi HTML. Może współpracować z dowolnym serwerem HTTP. Serwer HTTP, którego używasz dla swojej usługi, używa komponentów GPL.
Masz program, który korzysta z komponentów licencjonowanych przez GPL. Wybierasz dowolny punkt w działaniu tego programu i dzielisz go na dwa programy. Oba programy komunikują się przez całkowicie zbędny przeskok sieci. Umieszczasz wszystkie komponenty objęte licencją GPL w pierwszym programie i licencji na licencji GPL, a drugi program na licencji niezgodnej z GPL.
Pierwszy przypadek jest wyraźnie w porządku. Drugi przypadek wyraźnie nie jest w porządku. Nie podałeś wielu informacji na temat konkretnej sprawy, a nawet jeśli tak, tylko orzeczenie sądu może ostatecznie zdecydować, czy masz rację.
Często zadawane pytania na temat licencji GPL dotyczą współdziałających programów oddzielnie licencjonowanych :
Jednak w wielu przypadkach możesz rozpowszechniać oprogramowanie objęte GPL wraz z własnym systemem. Aby zrobić to poprawnie, musisz upewnić się, że wolne i niewolne programy komunikują się na odległość ramienia , że nie są one połączone w sposób, który uczyniłby z nich skutecznie jeden program.
Różnica między tym a „włączaniem” oprogramowania objętego GPL jest częściowo kwestią merytoryczną, a częściowo formą. Część merytoryczna jest następująca: jeśli dwa programy zostaną połączone tak, że staną się skutecznie dwiema częściami jednego programu, nie można traktować ich jako dwóch oddzielnych programów. Więc GPL musi obejmować całość.
Musisz zdecydować, czy uważasz, że Twój klient jest serwerem spełniającym standard „dwóch części tego samego programu” (a zatem każda z nich musi być licencjonowana na licencji GPL), czy nie. Często zadawane pytania na temat GPL zawierają dalsze wyjaśnienia na ten temat dotyczące innego pytania :
Gdzie przebiega granica między dwoma oddzielnymi programami i jednym programem z dwiema częściami? To pytanie prawne, które ostatecznie rozstrzygną sędziowie. Uważamy, że właściwe kryterium zależy zarówno od mechanizmu komunikacji (exec, potoki, rpc, wywołania funkcji we wspólnej przestrzeni adresowej itp.), Jak i semantyki komunikacji (jakie rodzaje informacji są zamieniane).
...
Natomiast potoki, gniazda i argumenty wiersza poleceń są mechanizmami komunikacji zwykle stosowanymi między dwoma oddzielnymi programami. Kiedy są używane do komunikacji, moduły zwykle są osobnymi programami. Ale jeśli semantyka komunikacji jest wystarczająco intymna, wymieniając złożone wewnętrzne struktury danych, to również może być podstawą do rozważenia tych dwóch części w połączeniu z większym programem .
Komunikacja sieciowa z pewnością przechodzi test „mechanizmu komunikacji”, ale nie jest jasne, gdzie twoja para klient / serwer przypada na test „semantyki komunikacji”.