Wydaje się, że Oracle licencjonuje cały związany z Javą kod open source na licencji GPL z wyjątkiem ścieżki klas . Z tego, co rozumiem, wydaje się, że pozwala to łączyć biblioteki z własnym kodem w produkty, które nie muszą być objęte GPL.
- Jak to działa?
- Jakie są przykłady tego, jak mogę i nie mogę korzystać z tych klas?
- Dlaczego zastosowano tę nową licencję w przeciwieństwie do licencji LGPL, która wydaje się pozwalać na prawie takie same rzeczy, ale jest lepiej ustalona i zrozumiana?
- Jakie są różnice w stosunku do LGPL?
Odpowiedzi:
Po pierwsze, nie jestem prawnikiem. Ale przestudiowałem wiele licencji i rozumiem związane z nimi problemy.
Po drugie, wiem, że to stare pytanie, ale myślę, że wciąż jest to zamieszanie i troska. Jeśli nie jest to problem, powinien być. Wybór licencji to wielka sprawa, której nie można w prosty sposób zmienić na późniejszym etapie, szczególnie jeśli w grę wchodzi wielu współpracowników.
(L) GPL zostało napisane z myślą o C / C ++, niestety. Mówi o „kodzie źródłowym”, „kodzie obiektowym”, „łączeniu dynamicznym”, „łączeniu statycznym”, „kompilatorach” i „tłumaczu kodów obiektowych”. Przetłumaczenie tego na inne języki, które nie stosują tych samych technik kompilacji (takich jak kod bajtowy Javy, kompilacja w czasie Pythona lub interpretowana natura Javascript) wymaga pewnych domysłów i założeń. Kiedy mówisz o prawie - tj. Myślisz o ewentualnych sprawach sądowych, w których spierają się dwie strony - brak wyraźnego rozróżnienia to ZŁA RZECZ.
Standardowy kawałek kodu na licencji GPL jest dość prosty. Oczekuje się, że każdy, kto użyje tego kodu, udostępni swój kod wszystkim użytkownikom podczas jego dystrybucji lub sprzedaży. To jest wirus GPL, który Richard Stallman chciał stworzyć i zrobił to jasno i czysto.
LGPL była pierwotnie próbą dopuszczenia „biblioteki”, która nie byłaby wirusowa. Ale nadal chcieli, aby użytkownik końcowy mógł samodzielnie zastąpić bibliotekę, stąd różnica między łączeniem „statycznym” i „dynamicznym” - użytkownik mógł zamienić się na inną bibliotekę dynamicznie połączoną, więc nie musiałaby mieć licencję GPL. Link statyczny wymagał od użytkownika posiadania licencji GPL. Licencja faktycznie mówi o „plikach nagłówkowych”, które są jasne w C / C ++, ale oczywiście nie są jasne, gdy jesteś w świecie Java, Python, Javascript itp. Więc L („biblioteka”) rzeczy LGPL jest co najwyżej zabłocona.
To prowadzi do sedna sprawy. Wszystko niejasne jest ZŁE w świecie praw. Jeśli zastanawiam się nad budowaniem czegoś przy użyciu komponentu GPL lub LGPL, chcę mieć pewność, jaka będzie moja sytuacja prawna w przyszłości, jeśli wyląduję w sądzie. Ale na dzień dzisiejszy nie jestem pewien, ponieważ tak naprawdę nie było dobrych spraw sądowych ustanawiających precedens prawny, tylko intelektualne argumenty na takich forach.
Tutaj wyjątek Classpath jest nieoceniony. Wyraźnie stwierdza, że kodem licencji jest (L) GPL, ale wszystko, co korzysta z tego kodu, może być zgodne z dowolną licencją. Żadnych jeśli, i albo ale. Jeśli zmienisz kod podstawowy (np. Naprawiając błędy), nadal musisz opublikować te zmiany w ramach GPL. Ale używanie NIE zaraża cię.
Z perspektywy biznesowej rozumiem, dlaczego niektórzy nie chcą dotykać kodu GPL 10-biegunowym biegunem. Sytuacja prawna jest niejasna, a firma może zostać ukąszona dekadą w dół, gdy ostatecznie ustanowi się precedens prawny. Lub mogą utknąć w sądzie przez lata walcząc o ustanowienie prawnego precedensu. Niezależnie od tego, po prostu nie chcą ryzykować kosztu tej bitwy. Dodanie klauzuli wyjątku Classpath eliminuje pytania prawne i pozwala uniknąć (poważnych) potencjalnych spraw sądowych.
Dla mnie wyjątek Classpath różni się znacznie od LGPL. Jest to prawnie czysty sposób na narysowanie jasnej linii, umożliwiający korzystanie z kodu źródłowego lub bibliotek GPL lub LGPL bez licencji GPL.
źródło
GPL z wyjątkiem ścieżki klasy w większości przypadków zachowuje się jak LGPL.
Oznacza to, że musisz mieć możliwość dostarczenia źródła dla biblioteki na żądanie. Nie oznacza to, że musisz mieć możliwość wysyłki własnego źródła. Zdarza się, że nie musisz wysyłać sposobu zastąpienia biblioteki, jeśli łączysz się z nią statycznie, ale nie możesz użyć klucza publicznego, aby zapobiec zamianie.
źródło
Wygląda na to, że licencje w stylu „GPL z wyjątkiem klasy” mogą być starsze niż LGPL.
Być może jedynym powodem, dla którego ktokolwiek nadal go używa, jest to, że kodu GPL nie można migrować do kodu LGPL bez pisemnej zgody wszystkich, którzy kiedykolwiek wnieśli kod.
źródło