Odpowiedzi:
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.
Zależy, co masz na myśli, używając go?
Zależy również dokładnie, która wersja / wariant GPL jest objęty innym kodem.
Zastrzeżenie prawne: Nie jestem prawnikiem.
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.
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.