Zadzwoń do oprogramowania GPL z oprogramowania innego niż GPL

30

Czy mogę (legalnie) korzystać z programu wydanego na licencji GPL z innego programu, który piszę i nie muszę przestrzegać GPL (dla programu, który piszę)?

Na przykład mam GUI, które korzysta z programu (który jest objęty GPL), czy mogę ukryć kod w GUI, a nawet go sprzedać?

Valmond
źródło

Odpowiedzi:

30

Możesz korzystać z programu GPL z własnego programu bez GPL, ale nie możesz połączyć kodu GPL z własnym programem, dopóki Twój program nie będzie podlegał warunkom GPL.

W przykładzie podanym w pytaniu, w którym napisałeś opakowanie GUI wokół istniejącego programu wiersza poleceń, twoje GUI nie jest związane warunkami GPL, pod warunkiem, że jest to osobny program, który uruchamia program GPL w oddzielny proces i komunikuje się z nim tylko przez istniejące interfejsy (interfejsy) - np. przez linię poleceń i / lub przez stdin / stdout.

Kilka istotnych bitów z GPL FAQ :

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.), A także od semantyki komunikacji (jakie rodzaje informacji są zamieniane).

Jeśli moduły są zawarte w tym samym pliku wykonywalnym, zdecydowanie są one łączone w jednym programie. Jeśli moduły są zaprojektowane do działania w połączeniu ze wspólną przestrzenią adresową, prawie na pewno oznacza to połączenie ich w jeden program.

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ą oddzielnymi 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.


Czy mogę wydać niewolny program przeznaczony do ładowania wtyczki objętej GPL?

Zależy to od tego, jak program wywołuje wtyczki. Na przykład, jeśli program używa tylko prostego fork i exec do wywoływania i komunikowania się z wtyczkami, to wtyczki są osobnymi programami, więc licencja wtyczki nie wymaga żadnych wymagań dotyczących programu głównego.

Jeśli program dynamicznie łączy wtyczki, a one wywołują do siebie wywołania funkcji i współużytkują struktury danych, uważamy, że tworzą one jeden program, który należy traktować jako rozszerzenie zarówno programu głównego, jak i wtyczek. Aby korzystać z wtyczek objętych GPL, program główny musi zostać wydany na licencji GPL lub zgodnej z GPL licencji wolnego oprogramowania, a warunki GPL muszą być przestrzegane, gdy program główny jest dystrybuowany do użytku z tymi wtyczki.

Jeśli program dynamicznie łączy wtyczki, ale komunikacja między nimi ogranicza się do wywołania funkcji „głównej” wtyczki z niektórymi opcjami i oczekiwania na jej powrót, jest to przypadek graniczny.

Pamiętaj, że GPL ma zastosowanie w pełni do bazowego programu wiersza polecenia - jeśli go rozpowszechniasz (w przeciwieństwie do konieczności uzyskiwania go przez użytkowników z innego źródła), jesteś odpowiedzialny za dostarczenie kopii GPL użytkownikom jasne dla nich, że program wiersza poleceń jest objęty GPL (nawet jeśli nie ma opakowania GUI), i udostępnienie im kodu źródłowego tego wiersza na żądanie. Z GPL FAQ ponownie:

Gdyby ludzie rozpowszechniali oprogramowanie objęte GPL, nazywając je „częścią” systemu, który według użytkowników jest częściowo zastrzeżony, użytkownicy mogą nie być pewni swoich praw dotyczących oprogramowania objętego GPL. Ale jeśli wiedzą, że otrzymali darmowy program plus inny program obok siebie, ich prawa będą jasne.

Standardowe wyłączenie odpowiedzialności: Nie jestem prawnikiem i nawet gdybym był prawnikiem, nie jestem twoim prawnikiem. Jeśli potrzebujesz ostatecznej odpowiedzi, skonsultuj się z odpowiednim prawnikiem, który jest uprawniony do wykonywania zawodu w Twojej jurysdykcji.

Dave Sherohman
źródło
1
Należy zauważyć, że stanowisko FSF w sprawie łączenia jest pozycją mniejszości. (I, IMO, to nie ma żadnego sensu. Zautomatyzowany proces nie może stworzyć nowego dzieła.)
David Schwartz
1
Jednak FSF napisał GPL. To sprawia, że ​​ich opinia jest o wiele bardziej aktualna. „Kiedy mówimy X, mamy na myśli, że {...}” jest ogólnie akceptowane w sądzie. „Kiedy powiedziałeś X, miałeś na myśli {...}”, ale nie tak.
MSalters
Co to znaczy „używa tylko prostego fork i exec do wywołania” - czy ktoś może to wyjaśnić?
Krunal,
Więc więc GPL można łatwo ominąć, po prostu pisząc owijarkę do rur, aby uruchomić kod GPL w oddzielnym procesie? Wydaje się, że GPL jest nieistotna i niemożliwa do wyegzekwowania. Co jeśli napiszę własną bibliotekę i połączę się z nią wraz z biblioteką GPLed. Czy moja osobna, samodzielna biblioteka jest następnie objęta licencją GPL? Co jeśli połączę się z biblioteką innej osoby podczas korzystania z kodu GPL? Czy ich biblioteka jest objęta licencją GPL? Jeśli odpowiesz „nie” na którekolwiek z tych pytań, otworzy się ogromna luka umożliwiająca łatwe ominięcie GPL. Jeśli odpowiesz tak, to naruszasz prawo autorskie.
Cerin
@Cerin - GPL naprawdę dotyczy tylko kodu, który rozpowszechniasz. Tak więc, chociaż możesz napisać program, który łączy zarówno licencje GPLed, jak i niezgodne z GPL, nie możesz następnie rozpowszechniać tego programu wśród stron trzecich, ponieważ uruchamiałby kod GPLed i niezgodny z GPL w tym samym procesie. („Używanie bez redystrybucji” jest przez wielu postrzegane jako luka w GPL, ponieważ oznacza to, że usługi sieciowe i tym podobne mogą całkowicie ominąć GPL, ponieważ same uruchamiają oprogramowanie, zamiast dawać je użytkownikom. GNU AGPL jest próba rozwiązania tego problemu.)
Dave Sherohman
0

Zależy, co masz na myśli, używając go?

  • wkompiluj to w swój kod
  • użyj wspólnej biblioteki
  • uruchom plik wykonywalny

Zależy również dokładnie, która wersja / wariant GPL jest objęty innym kodem.

  • GPL
  • LGPL
  • AGPL
  • Prawdopodobnie inni

Zastrzeżenie prawne: Nie jestem prawnikiem.

Martin York
źródło
-2

To zależy od tego, jak dokładnie twój program „używa” programu GPL. Często zadawane pytania na temat GPL zawierają dość długie wyjaśnienia , ale wciąż pozostawiają wiele do interpretacji:

Nie możesz włączyć oprogramowania objętego GPL do zastrzeżonego systemu. (...) Jednak w wielu przypadkach możesz rozpowszechniać oprogramowanie objęte licencją GPL wraz ze swoim zastrzeżonym 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. (...) 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. Zatem GPL musi obejmować całość.Jeśli dwa programy pozostają dobrze rozdzielone, jak kompilator i jądro, lub jak edytor i powłoka, możesz traktować je jako dwa osobne programy - ale musisz to zrobić poprawnie. Problem polega po prostu na formie: jak opisujesz to, co robisz. Dlaczego nam na tym zależy? Ponieważ chcemy upewnić się, że użytkownicy wyraźnie rozumieją wolny status oprogramowania objętego GPL w kolekcji.

Myślę, że w twoim przykładzie GUI, które istnieje głównie w celu wywołania programu GPL z linii poleceń, oba wyraźnie tworzą jeden program, więc będziesz musiał zwolnić swój kod na GPL.

Michael Borgwardt
źródło
Nie, nie „wyraźnie tworzą jednego programu”. Tak długo, jak bazowy program wiersza poleceń jest w stanie funkcjonować bez nakładki GUI, są one łączone przez „zwykłą agregację” i nie są „skutecznie pojedynczym programem”. Zwróć uwagę na przykłady w cytowanym tekście - kompilator znajduje się na jądrze i nie będzie działał bez niego, ale jądro będzie działało bez kompilatora.
Dave Sherohman
1
@Dave: To, czy bazowy program wiersza polecenia może nadal działać bez nakładki GUI, może mieć znaczenie, jeśli kwestionowany jest status licencji programu wiersza poleceń - ale pytanie dotyczy GUI, które jest całkowicie bezużyteczne bez program wiersza poleceń i dlatego jest ponad wszelką wątpliwość, że tworzą one jeden program.
Michael Borgwardt
Zastąpmy jeden z przykładów z cytowanej części i zobaczmy, jak to wytrzyma. „... ale pytanie dotyczy kompilatora, który bez jądra jest całkowicie bezużyteczny, a zatem bez wątpienia jest prawdą, że tworzą one jeden program”. Z wyjątkiem oczywiście tego, że cytowany tekst wyraźnie mówi „możesz traktować je jako dwa osobne programy”. Gdyby to była tylko kwestia zależności, to nigdy nie można uruchomić zamkniętego oprogramowania w systemie Linux, ponieważ oprogramowanie to byłoby „całkowicie bezużyteczne” bez jądra (GPLed).
Dave Sherohman,
@Dave: Oczywiście z wyjątkiem tego, że kompilatory i wszelkiego rodzaju zamknięte oprogramowanie NIE są bezużyteczne bez jądra Linuksa, ponieważ mogą i działają na wszystkim, co implementuje standardy bibliotek POSIX i / lub C, i zapewniają znaczną funkcjonalność . Zupełnie inna sprawa niż opakowanie GUI, które istnieje wyłącznie w celu obsługi jednego konkretnego programu wiersza poleceń.
Michael Borgwardt,
3
Ale mylisz się co do GUI. To samo opakowanie GUI będzie działać z innymi programami CLI, w szczególności późniejszymi wersjami oryginału. Jest to istotne w tym kontekście, ponieważ oznacza, że ​​pierwotne prawa GPL do programu bazowego mogą być nadal wykonywane. Jeśli przekompiluję go, aby był o 10% szybszy, CLI mi nie przeszkodzi.
MSalters
-3

Nie.

Kod GPL może być używany tylko przez inny kod GPL.

Powołując się na pierwszą linię artykułu GPL wikipedii :

GPL jest pierwszą licencją typu copyleft do użytku ogólnego, co oznacza, że ​​utwory pochodne mogą być rozpowszechniane wyłącznie na tych samych warunkach licencyjnych.

Poza tym GPL ma kilka stron i istnieje w kilku wersjach.


Ostrzeżenie, osobisty rant przed nami!

Osobiście bardzo nie lubię licencji GPL, ponieważ jest bardzo restrykcyjna i przypomina wirusy. Nazywają to „darmowym”, ale w rzeczywistości jest wręcz przeciwnie, kod GPL nie może być używany przez nic poza innym kodem GPL. W ten sposób zmuszanie innych projektów do korzystania z GPL lub zmuszanie do przepisywania całych bibliotek, niezależnie od tego, czy bieżący projekt jest open source, czy nie. Były ogromne projekty typu open source, takie jak na przykład freeBSD, które były zmuszone przepisać setki tysięcy wierszy kodu linux, ponieważ ich licencja była niezgodna, była zbyt „darmowa” w sensie „rób co chcesz”, co oczywiście jest niezgodny z GPL.

Jeśli chcesz naprawdę „darmowej” licencji w sensie „rób co chcesz”, polecam licencję BSD lub MIT… właściwie większość innych licencji jest OK. To tylko GPL jest bardzo problematyczne, ponieważ jest ono restrykcyjne i jak zmusza do niego innych. Wreszcie jest to zbyt skomplikowane.

Ach, tak, to także bilet w jedną stronę. GPL może używać kodu / bibliotek licencjonowanych z większości licencji, ale te biblioteki / kod nie mogą z kolei używać kodu GPL.

Dagnele
źródło
Mówi „dzieła pochodne”. Czy obejmuje to oprogramowanie, które dynamicznie łączy się z kodem GPL?
prawej
@WTP: zdecydowanie tak - celem LGPL jest posiadanie innej licencji, która na to pozwala.
Michael Borgwardt,
3
Powłoka GUI owinięta wokół programu wiersza polecenia nie jest „dziełem pochodnym” w rozumieniu praw autorskich.
Dave Sherohman
1
@Dave Sherohman - to nie wydaje się jasne. Przyjęta odpowiedź na to pytanie brzmi: „IMHO, w duchu, czystym opakowaniem, które jedynie ujawnia funkcjonalność programu GPL, powinno być GPL”. Nie chodzi tylko o techniczny aspekt ich komunikacji, ale o cel. Na przykład tłumaczenie książki tworzy dzieło pochodne. Konwersja go do formatu Kindle byłaby dziełem pochodnym. Widziałem, jak sędzia orzekł, że dodanie GUI tworzy dzieło pochodne. Strzec się.
Scott Whitlock,