Okej, zanim wszyscy zaczną krzyczeć na temat duplikatów pytań, tak, widziałem już kilka takich pytań tutaj. Ale nikt nie odpowiada na pytanie.
Jeśli łączę się z biblioteką GPL bez modyfikacji tej biblioteki, czy muszę zwolnić kod źródłowy?
Zgodnie z tym pytaniem odpowiedź brzmi tak!
Ale ta odpowiedź nie jest dla mnie zadowalająca. Odpowiedź w zasadzie mówi, że nie mogę używać kodu GPL w żaden sposób bez uczynienia mojego kodu otwartym.
Ale jeśli poprzednie jest prawdziwe, to oznaczałoby to, że żadna osoba ani organizacja nigdy nie może wydać żadnego zastrzeżonego oprogramowania na Linuksie. Co musi być nie tak. Po prostu dlatego, że aby dowolna aplikacja mogła zrobić coś użytecznego, otworzyć pliki, napisać do konsoli, utworzyć połączenia TCP, aplikacja musi być połączona z libc
programem GPL.
Moje pytanie brzmi zatem: jeśli GPL stwierdza, że tak jak wszystkie poprzednie odpowiedzi na stronie, że tak jest, że program, który łączy się z innym programem GPL, musi być samą GPL, w jaki sposób można stworzyć / wydać / sprzedać dowolną zastrzeżoną aplikację w ogóle, który działa w systemie Linux? Ponieważ, jak opisano powyżej, ta aplikacja musi być podobna do kodu GPL, aby działała w systemie Linux.
Bardziej praktyczny przykład mówi, że łączę się z biblioteką współdzieloną, która jest edytowana na licencji GPL w aplikacji innej niż GPL, czy to zmusiłoby aplikację do edycji innej niż GPL? Mówiąc dokładniej, jeśli korzystam z biblioteki GPL bez modyfikacji, a następnie rozpowszechniam tę bibliotekę jako .so
lub .dll
, czy wymagałoby to, aby moja aplikacja była oprogramowaniem typu open source?
Odpowiedzi:
Jeśli łączysz się z biblioteką GPL, utworzyłeś dzieło pochodne, a twój kod musi być GPL - różni się to od kodu L GPL, który konkretnie umożliwia dynamiczne łączenie kodu o różnej licencji. Biblioteki systemowe, w tym libc, są wszystkie LGPL.
Istnieje również specjalne wyłączenie dla nagłówków jądra Linux i libgcc (biblioteki domyślnie wywoływanej przez kompilator).
źródło
W ogólnym przypadku masz rację, ponieważ nie możesz połączyć się z biblioteką GPL, rozpowszechniać kodu, a następnie nie udostępniać kodu jako GPL.
Istnieje jednak wyjątek od biblioteki systemowej który łączy ludzi z bibliotekami Linuksa i nadal wypuszcza ich produkty na podstawie licencji innych niż GPL.
Innym wyjątkiem jest sytuacja, w której dwie licencje są ze sobą kompatybilne. Sprawdź stronę licencji zgodną z FSF, aby przeczytać więcej.
Wreszcie, autorzy lib GPL mogą tworzyć określone wyjątki, na przykład do użytku niekomercyjnego lub hobbystycznego.
Niestety istnieje zbyt wiele możliwości, by mieć twardą i szybką regułę. Bez więcej szczegółów w twoim pytaniu twoja odpowiedź brzmi „prawdopodobnie nie, ale może możesz”.
źródło
Krótka odpowiedź jest taka, że nikt tak naprawdę nie wie. (Ta dyskusja dotyczy GPL, a nie LGPL.)
GPL ma niejasny język na temat „dzieł pochodnych”, które różne osoby interpretują na różne sposoby. Konsensus wydaje się być taki, że statyczne łączenie narusza, ale wywoływanie przez przerwania systemowe (np. Do jądra Linuksa) nie. Ta ostatnia opiera się głównie na fakcie, że firmy takie jak Oracle dostarczają Linuxa i nie zostały pozwane - nie jest jasne w licencji.
Dynamiczne łączenie jest niejasne, prawdopodobnie 70/30 twierdzi, że narusza. Wywołanie programu przy użyciu potoków lub zdalnych wywołań procedur prawdopodobnie nie narusza zasad 30/70, nawet jeśli jest to w zasadzie to samo. Wywoływanie przez COM lub za pomocą Java Jar jest całkowicie niejasne.
Zasadniczo, jeśli istnieją jakiekolwiek wątpliwości i nie lubisz prawników, trzymaj się z dala od GPL.
źródło