Czy można przypisać GPL pracy pochodnej?

13

Istnieją trzy projekty oprogramowania: A, B i C.

A jest publikowane każdemu i jest licencjonowane na licencji GPL.

B rozszerza A, jest również publikowane, ale nie ma informacji o licencji lub jest błędnie licencjonowane na licencji LGPL. Zasadniczo narusza licencję A, ponieważ nie jest GPL. Kod źródłowy B jest nadal dostępny.

C rozszerza B. Czy C można opublikować na licencji GPL? Motywacja brzmiałaby: „A to GPL, każda pochodna również musi być GPL, więc B to GPL, a C może być także GPL”.

Andrej
źródło
5
Jaka część B rozciąga się na C? Jeśli wszystkie są już w A, nie widzę problemu. Jeśli C rozszerza części B, których nie ma w A, rzeczy stają się interesujące.
Nazwałbym
1
Uważam również, że możesz przynajmniej opublikować C na licencji GPL, ponieważ GPL jest kompatybilna z LGPL. Ale IANAL
Basile Starynkevitch
2
@Tichodroma, C rozszerza części B, ale B nie może istnieć bez A :)
Andrej
Czy autor C napisał również (część) A? Jeśli nie, nie mamy pojęcia, jaką licencję autorzy A udzielili B, więc nie mamy pojęcia, czy możemy na tym bazować?
dcorking

Odpowiedzi:

23

Po pierwsze, B narusza GPL na A. Ale to nie jest dokładnie twoja obawa i nie ma znaczenia dla pytania tutaj (kto wie, może B otrzymał licencję LGPL od A na swój kod, aby mógł zostać wydany na licencji LGPL? ).

Pytanie brzmi: „Czy możesz zbudować oprogramowanie GPL w oparciu o kod LGPL?” Odpowiedź na to pytanie brzmi: „tak”.

LGPL jest mniej restrykcyjna niż GPL (dlatego też B narusza licencję na A, o ile nie wprowadzono innych postanowień), ale pozwala również dość łatwo przywrócić ją do projektu GPL.

Z licencji LGPL:

  1. Kod obiektowy zawierający materiał z plików nagłówka biblioteki. Forma kodu obiektowego aplikacji może zawierać materiał z pliku nagłówkowego, który jest częścią biblioteki. Możesz przekazać taki kod obiektowy zgodnie z wybranymi warunkami, pod warunkiem, że jeśli dołączony materiał nie jest ograniczony do parametrów numerycznych, układów struktury danych i akcesoriów lub małych makr, funkcji i szablonów wbudowanych (o długości dziesięciu lub mniej wierszy), wykonaj obie następujące czynności:

    a) Z każdą kopią kodu wynikowego zawiadamiaj wyraźnie, że Biblioteka jest w nim używana oraz że Biblioteka i jej wykorzystanie są objęte niniejszą Licencją.
    b) Dołącz kod obiektu z kopią GNU GPL i niniejszym dokumentem licencyjnym.

Jest to część licencji. Możesz łatwo zbudować oprogramowanie GPL w oparciu o kod LGPL.

Istnieją pewne różnice w wersjach , na które należy zwrócić uwagę, aby upewnić się, że kod jest licencjonowany we właściwy sposób, zgodnie z właściwą wersją GPL.


W przypadku braku informacji o licencji nie masz prawa do jej rozszerzenia. B nie powinien był być dystrybuowany, ale jego wkłady nie są licencjonowane na licencji open source. To mógł być wewnętrzny projekt, który został opublikowany lub inne wydarzenie.

Nie jest prezentowany na licencji zgodnej z rozszerzeniem na GPL. Rozważ sytuację, w której firma korzystająca wewnętrznie z oprogramowania GPL (akceptowalna - nie stanowi naruszenia), błędnie podała swoje repozytorium do publicznej wiadomości.

W tym przypadku jest całkiem możliwe, że projekt C sam narusza prawo autorskie (materiał dodany przez B, który nie jest licencjonowany na licencji GPL, ponieważ nie powinien był być dystrybuowany).

Jeden nie może zmusić licencję na źródło cudzej. Jest to zgodne z licencją lub narusza ją. Jeśli narusza to prawo, jak określono w licencji:

Nie możesz rozpowszechniać ani modyfikować utworu objętego programem, z wyjątkiem przypadków wyraźnie określonych w niniejszej Licencji. Wszelkie próby rozpowszechnienia lub modyfikacji w inny sposób są nieważne i automatycznie wygasają Twoje prawa wynikające z niniejszej Licencji (w tym wszelkie licencje patentowe udzielone zgodnie z trzecim akapitem sekcji 11).

Naruszenie GPL nie oznacza, że ​​materiał jest objęty GPL, ale raczej, że nie można go rozpowszechniać.


źródło
3
Dobra odpowiedź. Czy zastanawiałeś się nad przyjęciem propozycji Open Source Stackexchange ?
Philipp
5
@Andrej Jedyną osobą, która ma prawo określić, w jaki sposób B ma być licencjonowana, są osoby, które napisały B. Jeśli A jest licencją GPL, mają opcję „nie rozpowszechniać” lub „licencjonować jako GPL”. To, że zostało omyłkowo rozpowszechnione, nie oznacza, że ​​jest licencjonowane jako GPL.
6
Również miłe złapanie na „nie wiesz, czy B otrzymał inną licencję od autorów A;” możliwe, że B w ogóle nie narusza praw autorskich A, ponieważ nie wiesz, że B korzysta z A na licencji GPL (autorzy A mogą wydawać tyle licencji dowolnego rodzaju, ile chcą i mogą np. oferować na licencji GPL i sprzedaj licencję, która pozwala na używanie go w zastrzeżonym kodzie).
cpast
1
W przypadku, gdy autor B otrzymuje literę A na licencji GPL, fakt dystrybucji nie wymusza na GPL licencji B. Czy są jednak jakieś licencje, które by to zrobiły? Czy ktoś może opublikować swoje oprogramowanie i mieć pewność, że każdy uzyska dostęp do wszystkich przyszłych opublikowanych instrumentów pochodnych? I pozwól każdemu narzucić licencję na instrumenty pochodne. (Mogę zacząć nowe pytanie na ten temat :))
Andrej
2
Po czwarte, umowa EULA jest o wiele, wiele, dużo bardziej prawnie wątpliwa niż GPL. GPL nie nakłada żadnych ograniczeń; wszelkie ograniczenia wynikają z ustawowego prawa autorskiego (w niektórych przypadkach GPL uchyla te ograniczenia). Właśnie dlatego GPL działa tak dobrze - nie ma czegoś takiego jak „naruszenie GPL”, są tylko naruszenia praw autorskich . Dzięki umowie EULA musisz skłonić ludzi do wyrażenia zgody na ograniczenie się; oznacza to, że znajdujesz się w dziedzinie prawa umów, które jest bardzo mroczne i pełne możliwości obrony, tak jakby ktoś się nie zgodził (nie musisz zgadzać się na prawa autorskie).
cpast
4

Są właściciele praw autorskich: Istnieje prawo autorskie do dzieł stworzonych przez A, prawo autorskie do dodatków B i prawo autorskie do wszelkich zmian dokonanych przez C. C musi sprawdzić, czy ma pozwolenie na korzystanie z oprogramowania, na którym A i B posiadają prawa autorskie.

A był licencjonowany na licencji GPL. Jestem całkiem pewien, że GPL daje ci pozwolenie na korzystanie z pracy A na warunkach GPL, nawet jeśli otrzymałeś je od B, który licencjonował je nieprawidłowo. Mogą występować problemy praktyczne: na przykład musisz być w stanie podać kod źródłowy. Jeśli otrzymałeś oprogramowanie bez kodu źródłowego, nie możesz opublikować go zgodnie z warunkami GPL.

B był licencjonowany na podstawie innej licencji. B powinien był mieć licencję GPL, ale nie był. Jeśli licencja B daje ci więcej praw niż GPL, tak naprawdę nie masz żadnych z tych praw do kodu A - B nie może dać ci dodatkowych praw do kodu A. Możesz użyć kodu A na warunkach GPL, ponieważ A na to zezwala, oraz dodatkowego kodu B na licencji B.

Jeśli B wyda swój kod na bardziej rygorystycznej licencji niż GPL, B najprawdopodobniej popełni naruszenie praw autorskich. Nie możesz używać kodu B na licencji GPL. Jest to często mylone: ​​GPL nie może zmusić B do zrobienia czegokolwiek. Daje to tylko wybór B: Opublikuj w ten sposób, jest to zgodne z prawem lub opublikuj w inny sposób i jest to nielegalne. B ma prawo zrobić coś nielegalnego i ponieść konsekwencje (być pozwanym za naruszenie praw autorskich). Nie masz żadnych praw do kodu B, których B ci nie dał.

gnasher729
źródło
3

Technicznie możliwe jest rozszerzenie biblioteki GPL o kod, który sam nie jest objęty licencją GPL. Problem polega na tym, że kiedy rozpowszechniasz stworzoną przez siebie pracę pochodną, ​​musisz przestrzegać wszystkich wymagań, jakie stawia ci GPL.

W twojej sytuacji oznacza to, że możliwe jest posiadanie biblioteki A na licencji GPL i nowego kodu w bibliotece B na licencji LGPL. Połączone dzieło (biblioteka B) jest skutecznie dystrybuowane na licencji GPL i może być dystrybuowane jako takie, ponieważ licencja LGPL jest zgodna z licencją GPL (możesz użyć kodu licencji LGPL w projekcie licencjonowanym GPL).
W tej sytuacji doskonale jest mieć nowy kod w bibliotece C na licencji GPL, a wynikowe prace również na licencji GPL.

Bart van Ingen Schenau
źródło
Działa to tylko dlatego, że części B LGPLed mogą być używane z GPLed A na licencji GPL. Jeśli nowy kod był objęty jakąś licencją sprzeczną z GPL (np. Wszelkie prawa zastrzeżone), nie możesz założyć, że B jako całość została skutecznie rozpowszechniona na GPL.
cpast
1
@cpast: Masz rację, zapomniałem wspomnieć, że LGPL jest kompatybilny z GPL. Jeśli licencje były niezgodne, nie można rozpowszechniać wyniku.
Bart van Ingen Schenau