Przepisywanie kodu GPL w celu zmiany licencji


23

Znalazłem bibliotekę GPL (bez podwójnej licencji), która robi dokładnie to, czego potrzebuję. Niestety, licencja GPL na bibliotekę jest niezgodna z licencją innej biblioteki, z której korzystam. Dlatego postanowiłem przepisać bibliotekę GPL, aby licencję można było zmienić.

Moje pytanie brzmi: jak obszerne muszą być zmiany w bibliotece, aby móc zmienić licencję? Innymi słowy, jaki jest najtańszy sposób to zrobić?


3
Tańsze może być opłacenie autora biblioteki GPL za udostępnienie jej na innej licencji.
quant_dev

3
Zamiast pytać, NAJLEPSZY sposób, powiedz nam całą historię i zapytaj: „Co należy zrobić?”
John R. Strohm,

4
Jeśli druga biblioteka nie jest kompatybilna z GPL, być może jest to biblioteka, którą musisz zmienić.
Paul Butcher,

1
Jaką licencję ma inna biblioteka?
Andres F.,

Odpowiedzi:


34

Nie jestem prawnikiem, ale AFAIK, jeśli widziałeś kod biblioteki GPLed, każda biblioteka emulacji, którą napiszesz, byłaby skażona i mogłaby zostać uznana przez sędziego za dzieło pochodne, jeśli jest zbyt podobna do jego oceny.

Tak więc procesem byłoby napisanie specyfikacji funkcjonalnej i poproszenie kogoś, kto nie widział kodu GPLed, do napisania biblioteki.

Edycja: Zauważ, że w sposobie sformułowania pytania „Jak duże muszą być zmiany w bibliotece, aby móc zmienić licencję?” odpowiedź jest AFAIK jasna: cokolwiek zrobisz, jeśli po prostu zmodyfikujesz bibliotekę, musisz przestrzegać warunków licencji, co umożliwia jej modyfikację w pierwszej kolejności.


3
Problem skażenia prawdopodobnie nie stanowi poważnego problemu w praktyce. W przypadkach, w których dokonuje się inżynierii wstecznej kodu podmiotu komercyjnego, zapora ogniowa między czytnikiem a podmiotem wdrażającym jest niezbędna do (zasadniczo nieuniknionego) procesu o naruszenie, aby można było wykazać, że nie było możliwości skopiowania kodu z innej wersji . W przypadku większości kodów GPL, chyba że rażąco naruszasz zasady, nikt Cię nie pozwie, ponieważ nie leży to w ich interesie.
Mark Bessey

1
Rosyjska ruletka może ci się spodobać. Jeśli z jakiegokolwiek powodu - konkurencji dziedziczącej kod w ten czy inny sposób, lub po prostu konkurencji decydującej o sfinansowaniu procesu - zostaniesz pozwany i skazany, co może utopić Twoją firmę. Nawet jeśli nie zostaniesz pozwany, jeśli wiadomo, że zła reputacja może stanowić problem.
AProgrammer

2
Myślę, że problem „skażenia” dotyczy głównie NDA. W przypadku praw autorskich nie ma to sensu. Weź pod uwagę, że prawa autorskie dotyczą także książek, nowych gazet, filmów itp. George Lucas prawdopodobnie widział serial Star Trek w telewizji przed stworzeniem Star Wars. Czy to sprawia, że ​​Star Wars jest dziełem pochodnym? Jeśli reporter gazety słyszy o czymś w radiu, czy to uniemożliwia mu pisanie o tym samym wydarzeniu?
user281377,

6
Podejście do czystego pokoju to tylko sposób na udowodnienie, że nie naruszyłeś prawa autorskiego. W moim rozumieniu - i znowu nie jestem prawnikiem - rzeczy opracowane bez znajomości oryginalnego dzieła mogą nie naruszać praw autorskich (ale mogą naruszać patenty). Rzeczy opracowane z tą wiedzą mogą, ale nie muszą naruszać prawa autorskie - trudniej jest udowodnić, że podobieństwa wynikają z przypadkowych zdarzeń lub natury problemu, który sprawia, że ​​podejście jest naturalne.
AProgrammer

1
@ammoQ: W Stanach Zjednoczonych dawno temu istniało pozew o naruszenie praw autorskich (pakiet oprogramowania statystycznego?), w którym firma została uznana za naruszoną, mimo że każdy wiersz kodu został przepisany. Zwróć uwagę, że Gwiezdne Wojny nie są szczególnie podobne do Star Trek i że reporter z gazety nie napisze historii wyłącznie z tego, co usłyszał w radiu.
David Thornley,

21

Zwykle można obejść ten problem, najpierw kontaktując się z właścicielem biblioteki i pytając, czy udostępni go na innej licencji.

Jeśli pracujesz nad projektem typu open source, w którym GPL nie jest kompatybilna, istnieje duża szansa, że ​​to zrobią, niektóre projekty kończą się licencją GPL tylko dlatego, że wydaje się to najlepszym wyborem.

Oczywiście dotyczy to obu bibliotek. Uzyskanie podwójnej licencji zezwalającej na mniej liberalną nie powinno stanowić problemu.

Jeśli pracujesz z produktem komercyjnym, wielu autorów bibliotek wyda wydanie na innej licencji, jeśli odpowiednio je wynagrodzisz.


8
Warto spróbować, ale to nie działa, jeśli właściciel biblioteki zaakceptował lub wykorzystał wkłady GPL, co ma miejsce w przypadku wielu bibliotek.
Brian,

^ Chyba że mieli umowę „współtwórcy”, która przeniosła prawa autorskie do pierwotnych autorów: softwareengineering.stackexchange.com/a/225577/93511
Jonathan

17

Rozumiem, że jeśli zaczniesz od pracy i ją zmodyfikujesz, bez względu na to, jak obszerne są modyfikacje, końcowy wynik jest dziełem pochodnym oryginału. Musisz napisać bibliotekę od zera. Jeśli napiszesz bibliotekę od zera, ale zobaczyłeś kod, to jeśli jest zbyt podobny, możesz ponownie zostać pozwany za naruszenie praw autorskich.

Reguły te nie są specyficzne dla oprogramowania, mają zastosowanie do wszelkiego rodzaju rzeczy chronionych prawem autorskim.

Nie jestem prawnikiem i nie jest to porada prawna. Prawdopodobnie nie jestem także w twojej jurysdykcji i zawsze powinieneś wątpić w porady prawne oferowane w Internecie. Jeśli chcesz uzyskać rzetelną poradę prawną, musisz zapłacić prawnikowi.


4

IANAL, ale wiem, że w USA żaden stopień modyfikacji nie stworzy pracy niepochodnej. Jeśli ma jakikolwiek kod skopiowany ze starej biblioteki lub ma wystarczające wewnętrzne podobieństwo, że wpędziłoby cię to w kłopoty z powodu plagiatu na zajęciach uniwersyteckich, to nie jesteś w pobliżu nowej pracy. Zmiana niektórych nazw funkcji lub zmiennych nic nie da, ani przenoszenie fragmentów kodu w źródle. Będziesz musiał samodzielnie go odtworzyć, aby nawet mieć szansę. IOWs, musisz spojrzeć tylko na interfejsy, które zapewnia, i zdecydować, jak zapewnić tę funkcjonalność i odtworzyć ją w ten sposób, aby mieć szansę. Nawet wtedy nadal możesz nie wyjść z lasu, jeśli ktoś naprawdę troszczy się i wścieka.

Ostatecznie najlepiej jest skontaktować się z autorem biblioteki i mieć nadzieję, że uda się znaleźć rozwiązanie pozwalające na bardziej liberalne licencjonowanie biblioteki.


1

Jeśli wszystko inne, co jest tu sugerowane (prośba o podwójną licencję, przepisywanie) jest niedopuszczalne, pamiętaj, że nadal nie jest jasne, czy dynamiczne łączenie z zastrzeżonym programem / biblioteką jest uważane za pracę pochodną. FSF twierdzi, że tak, ale wielu prawników (w tym Lawrence Rosen) zakwestionowało to.

Możesz więc połączyć swoje oprogramowanie z biblioteką GPLed, a następnie upewnić się, że kod źródłowy jest dystrybuowany z każdą kopią oprogramowania. Jeśli ktoś Cię pozwie, musi udowodnić, że jego rozumienie tego trudnego i mrocznego aspektu GPL jest prawidłowe. Jak się wydaje (np. Galoob vs Nintendo), nie można być absolutnie pewnym, co powoduje, że pochodna działa, a co nie.


lub przynajmniej zapytaj, czy lib może być również LGPL.
Johan

2
Problem z dynamicznym łączeniem jest trudny, ale nie licz na sędziego, który Cię orzeknie. Sędzia może orzec, że akceptujesz definicje Gnu, jeśli korzystasz z licencji Gnu, i prawdopodobnie nie chcesz opierać swojego oprogramowania na wynikach sprawy sądowej, która jeszcze się nie wydarzyła.
David Thornley,

1

Jedynym sposobem, w jaki nie można by uzyskać pracy pochodnej, byłoby samodzielne przepisanie całego kodu bez użycia oryginalnego kodu. Co jest prawdopodobnie niemożliwe.

Istnieje wiele łatwiejszych sposobów korzystania z GPL:

  • jasne: uruchom go, uzyskaj dostęp przez gniazdo. Socket jest granicą licencji GPL (chyba że jest niesławnym GPLv3 z klauzulą ​​Affero );
  • w szarej strefie: dynamicznie połącz. Istnieje wiele kontrowersji, jeśli dynamiczne łączenie jest lub nie jest ograniczone do pracy pochodnej. Kilka punktów widzenia tutaj . Może to również zależeć od jurysdykcji, w której się znajdujesz.

Pamiętaj również, że GPL jest licencją dystrybucyjną , więc musisz licencjonować swoją pracę tylko wtedy, gdy rozpowszechniasz pliki binarne na rzecz osób trzecich. Jesteś zobowiązany jedynie do udostępnienia źródła, bez obowiązku udostępniania go ogółowi społeczeństwa, chyba że udostępnisz pliki binarne ogółowi społeczeństwa. Jeśli używasz swojego kodu na przykład tylko na swoich serwerach, nie masz obowiązku wydawania żadnego kodu. Tak na przykład Google robi to z ulepszonymi jądrami Linuksa.


Nie jestem pewien, czy gniazdo jest barierą. Według naszych prawników inżynierowie są zbyt skupieni na środkach technicznych, podczas gdy globalny efekt jest kontrolowany przez prawo. Publikowanie interfejsu gniazda i przykładowe użycie w emacs lisp było dla nich w porządku. Ale dawanie możliwości automatycznego instalowania emacsa wraz z naszym programem nie było. Masz prawo do dystrybucji. Pamiętaj jednak, że nie możesz uniemożliwić dystrybutorowi dalszego rozpowszechniania.
AProgrammer

@AProgrammer: nawet FSF mówi, że jeśli jest to osobny proces, to są to osobne programy, a więc nie pochodne pracy. Często zadawane pytania dotyczące wtyczek, ale logika nadal obowiązuje: gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins
vartec

Pytanie dotyczy wtyczki, a wtyczka z natury nie jest niezbędna. Nie postawiłbym mojej firmy na to, że struktura programu w dwóch procesach, jednym z GPL, ponieważ korzystał z bibliotek GPL, a drugim nie dlatego, że chcemy zachować prywatność źródła, jest legalna. Zwłaszcza, gdy oba są dystrybuowane razem. Ale to twój telefon.
AProgrammer

1
@A: dystrybucja z innymi programami jest „agregacją” i jest wyraźnie dozwolona przez GPL. I nie, to nie mój telefon. Osobiście nie dotknąłbym biblioteki GPL nawet przy pomocy kija o długości 10 stóp.
vartec

1

IANAL i, w każdym razie, może to nic nie znaczyć z prawnego punktu widzenia, ale wierzę, że w książce Stevena Levy'ego „Hakerzy” opisuje, jak w pewnym momencie RMS napisał kod * nix dla pieniędzy w ciągu dnia, a nocą napisał to samo rzeczy w domu, żeby mógł być częścią ... GNU? ... to było przed Linuksem ... jakimś wolnym systemem typu Unix. Uważam, że musiał odróżnić kod domowy od kodu dnia, ale w zasadzie robił dokładnie to, co sugerujesz.

To prawdopodobnie nie ma znaczenia prawnego, ale ... Nie jestem pewien, czy Apple i / lub Microsoft dostały pozwolenie / licencję czy coś takiego, ale dzwonki nie opracowały interfejsu pulpitu / ikony / myszy, który był używany na komputerach Mac (lub Lisa?), który był następnie używany przez Microsoft.


To byłby Xerox PARC, a nie Bell Labs.
Marnen Laibow-Koser

A Jobs zawarł umowę z Xerox, która pozwoliła Apple iść do laboratorium w Palo Alto. W tym czasie nikt w firmie Xerox nie dbał o tę technologię.
aledalgrande

0

Nie ma na to odpowiedzi, z wyjątkiem procesu przed sędzią w Twojej jurysdykcji. Ale czy chcesz to zaryzykować? Lub spróbuj ponownie napisać bibliotekę GPL, testy itp. Czy na pewno inna biblioteka jest niezgodna z GPL? Jest to w rzeczywistości dość niezwykłe, chyba że chcesz dystrybuować obie biblioteki na warunkach bibliotek innych niż GPL.


Możesz uzyskać listę licencji Gnu na stronie gnu.org/licenses/license-list.html i zauważysz, że jest ona podzielona na bezpłatne licencje zgodne z GPL, bezpłatne licencje niezgodne z GPL i licencje niewolne. GPL ma pewne szczególne wymagania, których inne licencje często nie spełniają, a jednym z celów GPLv3 było ułatwienie kompatybilności.
David Thornley,

0

Jak duże muszą być zmiany w bibliotece, aby móc zmienić licencję?

W większości części świata musisz zacząć od zera, a nie wycinać i ominąć. Potrzebujesz nowych nazw dla funkcji / klas / zmiennych itp., A struktura powinna być inna. Więc jesteś bezpieczny.

Z drugiej strony, jeśli narzędzie różnicujące nie może znaleźć żadnych podobieństw, to ...


2
Jeśli narzędzie różnicowe nie może znaleźć żadnych podobieństw, może to stanowić naruszenie praw autorskich. Spójrz na to z nieprogramowego punktu widzenia: piszę książkę, tłumaczysz ją na szwedzki, a zgodnie z amerykańskim (i prawdopodobnie szwedzkim) prawem autorskim stworzyłeś pochodne dzieło.
David Thornley,

@David Thornley Tak, masz rację co do prac pochodnych.
Johan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.