Czy mogę komercyjnie korzystać z oprogramowania licencjonowanego GPL na moim serwerze, jeśli dystrybuuję tylko oprogramowanie klienckie?

15

I zrozumieć zasady GPL stwierdzając, że jeśli rozprowadzać żadnego oprogramowania przy użyciu kodu GPL, a następnie, że kod musi być na licencji GPL .

Zastanawiam się jednak, jakie są zasady w tym przypadku: tworzę usługę, w której będę sprzedawał i dystrybuował oprogramowanie po stronie klienta .

Oprogramowanie po stronie klienta absolutnie nie zawiera kodu GPL. To w 100% mój własny kod.

Jednak oprogramowanie klienckie będzie łączyć się z moim serwerem, który wewnętrznie korzysta z kodu GPL.

Ja nie rozpowszechnianiu moje oprogramowanie po stronie serwera; oprogramowanie po stronie serwera będzie działało na dedykowanym serwerze, który sam kontroluję, ale oprogramowanie po stronie klienta nie będzie działać bez połączenia z tym serwerem.

Czy to się liczy jako jedno oprogramowanie? Gdybym to zrobił, czy musiałbym licencjonować mój kod źródłowy po stronie klienta jako GPL? Czy mogę sprzedawać oprogramowanie po stronie klienta bez wydawania kodu źródłowego?

Steven Jeffries
źródło

Odpowiedzi:

12

To nie jest jednoznaczny problem. Rozważ dwa skrajne krańce spektrum:

  1. 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.

  2. 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”.

apsillery
źródło
Czy uzasadnione byłoby oparcie rozróżnienia na stopniu, w jakim powiązania między programami były publiczne? Jeśli np. Wdrożę system gry w szachy, który korzysta z programu interfejsu użytkownika GPL, który komunikuje się z zastrzeżonym silnikiem szachowym, i udokumentuję, jak ktoś inny, kto chciałby napisać własny silnik szachowy, mógłby użyć tego samego interfejsu użytkownika, myślę, że powinno to zadowolić ducha (i mam nadzieję, że literę) GPL, chociaż, chyba że ktoś napisał alternatywny silnik, interfejs użytkownika nie miałby innego celu niż rozmowa z zastrzeżonym programem.
supercat
Hmm Zadałem to pytanie tak niejasno, ponieważ byłem po prostu ciekawy ogólnie GPL. Myślę jednak, że teraz rozumiem różnicę. Jeśli mój serwer ma informacje o koncie użytkownika, które musi uruchomić oprogramowanie mojego klienta, to wyraźnie narusza GPL. Jeśli mój serwer jest czymś w rodzaju serwera przekazywania pakietów, który pozwala tylko na komunikację między dwiema wersjami oprogramowania klienckiego, byłoby to w porządku. Czy mam rację w tych założeniach?
Steven Jeffries
4

Dwa procesy komunikujące się przez sieć nie pociągają za sobą tworzenia pracy pochodnej, jak to robi połączenie pliku wykonywalnego z biblioteką. Zatem kod GPL na serwerze nie dotyczy kodu klienta.

Zgodnie z GPL wymagane jest rozpowszechnianie zmodyfikowanego kodu źródłowego podczas dystrybucji plików binarnych. Ponieważ nie dystrybuujesz plików binarnych serwera, nie musisz dystrybuować kodu źródłowego serwera.

GNU Affero GPL jest licencją podobną do GPL z dodatkowym verbage zaprojektowanym w celu zamknięcia tej bardzo pętlowej dziury, z której chcesz skorzystać (patrz: http://www.gnu.org/licenses/why-affero-gpl.html i http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL ).

Oświadczenie: Jestem programistą, a nie prawnikiem.

J. Lenthe
źródło
3
Tylko uwaga ostrzeżenia: Jeśli klient jest zaprojektowany specjalnie do komunikowania się z tego oprogramowania serwera, to całkiem możliwe, że FSF robi rozważyć serwera i oprogramowania klienckiego jako jeden produkt. Zobacz także tutaj w GPL FAQ
Bart van Ingen Schenau
Z drugiej strony, jeśli strona trzecia pisze oprogramowanie klienckie do komunikowania się z twoim serwerem, nawet nie widząc oprogramowania serwera ani licencji, argument ten wygląda absurdalnie. Oznaczałoby to, że Microsoft może pozwać na przykład każdego, kto pisze oprogramowanie łączące się z serwerami Outlook.
gnasher729
2

Czy oprogramowanie klienckie zależy od oprogramowania serwera do jego prawidłowego działania? Innymi słowy, czy oprogramowanie klienckie będzie działać bez połączenia z serwerem?

Jeśli odpowiedź na to pytanie brzmi „tak”, a serwer zapewnia dodatkową funkcję oprogramowania klienckiego, a nie podstawową obsługę, prawdopodobnie nie ma wątpliwości. Jeśli oprogramowanie serwera jest integralną częścią oprogramowania klienta i zapewnia podstawową funkcjonalność oprogramowania klienta (tj. Oprogramowanie klienta nie będzie działać bez serwera), wówczas kombinacja jest dziełem pochodnym objętym GPL.

Robert Harvey
źródło
Będę się zachowywał ostrożnie i nie będę wtedy używał kodu GPL na moim serwerze.
Steven Jeffries
2
@StevenJeffries Ta odpowiedź jest sprzeczna zarówno z obecną praktyką, jak i wymogami GPL. Dopóki nie rozpowszechniam oprogramowania ani prac pochodnych, mogę swobodnie korzystać z oprogramowania GPL na serwerze, np. Linux, GCC lub WordPress. Samo używanie oprogramowania nie tworzy dzieła pochodnego. W przypadku GPL uważa się, że jest w porządku, gdy występuje co najmniej separacja na poziomie procesu (brak pamięci dzielonej, brak wspólnych struktur danych). Zobacz odpowiedź J. Lenthe na prawidłowe rozwiązanie i odniesienia.
amon
@amon: Jeśli nawet nie udostępniasz struktur danych między serwerem a klientem, masz rację. Wątpię jednak, żeby tak było. Rozróżnienie, które rysuję (czy oprogramowanie klienckie jest zależne od oprogramowania serwera do poprawnego wykonania), nie jest arbitralne; jest to jeden z dwóch zasadniczych wymagań, które FSF uważa za „dzieło pochodne”; drugi to „komunikacja na odległość ramion”. Nie wierz mi na słowo; przeczytaj to sam na stronie FSF.
Robert Harvey
@amon: Możesz przeczytać więcej na ten temat tutaj .
Robert Harvey
@amon Kolejny bardzo istotny artykuł na temat GPL FAQ (dobry jako kontynuacja po przeczytaniu linku Roberta) jest ten, szczególnie trzy ostatnie akapity: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers