Czy mogę połączyć się z biblioteką GPL z zamkniętej aplikacji źródłowej?

34

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 libcprogramem 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 .solub .dll, czy wymagałoby to, aby moja aplikacja była oprogramowaniem typu open source?

john-charles
źródło
9
Zadajesz to samo pytanie w nadziei na inną odpowiedź. Nie można używać GPL w oprogramowaniu niezgodnym z GPL. Zupełnie proste.
Andrew T Finnell,
1
Czy on naprawdę Blimey. Odpowiedź jest prosta; dlaczego nie skontaktujesz się z autorami programu GPL i zapytasz, czy mają coś przeciwko? Jeśli mówią, że to w porządku, to wspaniale! Jeśli sprzeciwiają się, to próba uzbrojenia ich w dane prawne sprawi, że staniesz się bardzo niepopularny, bez względu na to, jak „słusznie” się czujesz.
James
3
@James: Jeśli wybrali GPL, to jest całkiem mocne stwierdzenie oni zrobić umysł. Ludzie, którzy nie mają nic przeciwko, wybierają przede wszystkim MIT, BSD lub LGPL. Bardzo rzadko można zobaczyć bibliotekę na pełnej licencji GPL. Kiedy to zrobisz, możesz być prawie pewien, że było to celowe.
Jan Hudec
@ Jan Może zależy od aplikacji i zamierzonego zastosowania Johna-Charlesa. Ale myślę, że to dziwne, jak JC się do tego zbliża. Czy JC próbuje tylko uzyskać odpowiedź, której chce? Na tej stronie jest wiele pytań, które można rozwiązać, mówiąc „po prostu z nimi porozmawiaj, bo głośno płacz”. :-)
James
@JanHudec: Zgadzam się. Argumentowałem za udostępnieniem części adresów IP naszej firmy w formie biblioteki GPL, ponieważ byłoby to zasadniczo bezużyteczne dla naszych konkurentów i nadal bardzo przydatne dla naszej społeczności.
MSalters

Odpowiedzi:

33

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

Martin Beckett
źródło
19
Brak libc to LGPL - możesz łączyć się z programami LGPL. Istnieje również ogólny wyjątek dla wywołań jądra / systemu, więc nie ma argumentu abotu co to jest wywołanie systemowe vs. wywołanie biblioteczne
Martin Beckett
6
LGPL nie jest nową licencją, została wydana po raz pierwszy w 1991 roku. Libc zawsze była LGPL.
FigBug
4
@ john-charles - właśnie dlatego LGPL został wynaleziony w 1991 roku z gplv2. Ponieważ Linux (i inne jądra FOSS) stał się popularny - i dlatego pierwotnie nazywał się Library-GPL - obawiano się, że każdy sprzedawca kompilatora będzie obfitował w libc, jeśli aplikacje komercyjne nie będą mogły korzystać z gcc.
Martin Beckett
1
@MartinBeckett To jest opinia FSF (nie możesz linkować do kodu GPLd, jeśli nie posiadasz licencji na GPL), jednak nie jest to bezdyskusyjne. Nie było żadnego ważnego procesu (o którym wiem, jeśli się mylę, proszę mnie poprawić), aby potwierdzić opinię FSF na temat linkowania.
K.Steff
2
@ john-charles - tak, całe prawo zwyczajowe jest poddawane testom w sądach, ale istnieje sporo orzecznictwa dotyczącego prawa autorskiego. Jeśli twierdzę, że moja niezmodyfikowana kopia DVD Batmana nie jest dziełem pochodnym i mogę sprzedawać tyle, ile chcę - MPAA raczej się nie zgodzi! GNU copyleft wykorzystuje prawa autorskie do egzekwowania umowy licencyjnej w całkiem sprytny sposób - jednym z powodów, dla których nigdy nie była testowana w sądzie, jest to, że wszyscy zawsze się załatwili
Martin Beckett
7

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
1
SLE odpowiada również na pytanie, czy program jest dziełem pochodnym kompilatora, ponieważ zawiera analizator składni wygenerowany przez kompilator
Martin Beckett
3
Nie, SLE umożliwia tworzenie kodu GPL przy użyciu niewolnego łańcucha narzędzi i standardowego środowiska wykonawczego, np. Visual Studio. Nigdy nie pozwala na łączenie niewolnej aplikacji z biblioteką GPL.
Jan Hudec
1
Dane wyjściowe programu GPL nie są objęte GPL. Zobacz gnu.org/licenses/gpl-faq.html#GPLOutput
Maximus Minimus
-1

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.

Tuntable
źródło
1
GPL nie jest wcale tak ogólnikowa, a orzecznictwo dotyczące dobrze rozumianego orzeczenia dotyczącego tego, co jest i nie jest dziełem pochodnym, jest dobrze omówione. Różnica między interfejsem systemu Linux a biblioteką libc polega na tym, że ten pierwszy jest niezbędny do stworzenia działającego oprogramowania (co zostało potwierdzone jako wyjątek od praw autorskich), podczas gdy ten drugi nie jest (można zaimplementować własne). Nie ma to nic wspólnego ze sposobem wywoływania operacji, co nie ma znaczenia prawnego. ANALNY, nie jest to porada prawna.
Jules
„70/30 mówią, że narusza”, a „30/70 nie narusza” - czy celowe jest, aby stosunek naruszania / nie naruszania był taki sam? „mimo że zasadniczo to samo” sugeruje, że miało być inaczej.
Mateusz Konieczny