Czy LGPL pozwala mi to zrobić?

16

Planuję opracować oprogramowanie komercyjne przy użyciu oprogramowania LGPL.

W oprogramowaniu LGPL, z którego korzystam, niektóre funkcje w klasie nie są w pełni zaimplementowane. Chcę zmodyfikować kod LGPL, aby klasa i niezaimplementowane funkcje były widoczne poza biblioteką dll przez dodanie dllexport przed klasą i przez dodanie wirtualnego słowa kluczowego przed funkcją.

Następnie planuję zaimplementować te funkcje w moim zastrzeżonym oprogramowaniu. Jestem gotów rozpowszechnić zmodyfikowany kod LGPL, ale nie zastrzeżone oprogramowanie, które implementuje funkcje tak, jak chcę.

Czy to narusza warunki LGPL?

Daenyth
źródło
6
Problem polega na tym, że pytanie tutaj jest, że nie próbujesz używać licencji w duchu, w jakim została napisana. Prawdopodobnie możemy odpowiedzieć na pytania dotyczące zamierzonego znaczenia licencji, ale nie możemy w żaden sposób rzetelnie podać szczegółów prawnych . W tym celu możemy jedynie polecić prawnika. Co więcej, to, co robisz, zależy od pytania prawnego (co jest pochodną pracy oprogramowania LGPL?), Które nie zostało rozstrzygnięte w Stanach Zjednoczonych w orzecznictwie, i widziałem różne opinie wśród prawdziwych prawników. (Nie jestem prawnikiem, ale od niechcenia śledzę te problemy.)
David Thornley
Ciężko powiedzieć. Przeczytaj to: javalobby.org/java/forums/t15903.html - mówią o Javie, ale wydaje się, że dotyczy dowolnego języka OO.
Mike Baranczak

Odpowiedzi:

26

To złożone pytanie, ale uważam, że to, co proponujesz, jest niedozwolone.

Sugerujesz dodanie haczyków do biblioteki, aby ułatwić ci podklasę biblioteki, a tym samym przynajmniej. ominąć ducha LGPL.

Problem polega na tym, że jeśli podklasujesz klasę, która podlega licencji LGPL we własnym kodzie, wówczas twoja praca staje się pracą opartą na bibliotece , a nie pracą korzystającą z biblioteki, co oznacza, że ​​twój kod jest pochodną praca, która jest objęta sekcją 2 ( LGPL v2.1 ) zamiast pracy objętej sekcją 6 ( LGPL v2.1 ). To znaczy, że staje się przedmiotem licencji LGPL !

Myślę, że Stephen Colebourne stanowi dobre podsumowanie dotyczące javalobby.

Nie jestem wielkim fanem szarpanina rozmawiającego z twoimi sugestiami prawnika , ale w tym przypadku myślę, że warto to zrobić, jeśli planujesz to kontynuować, w przeciwnym razie możesz dostać paskudny list z Wolnego Oprogramowania Zespół prawny fundacji .

Alternatywnie możesz poprosić FSF bezpośrednio. Z ich strony kontaktowej :

W przypadku pytań dotyczących licencjonowania wolnego oprogramowania i praw autorskich

Sprawdź najczęściej zadawane pytania dotyczące licencjonowania , listę licencji , ogólne informacje o copyleft i powiązane strony . Jeśli pytania pozostaną, wyślij e-mail na adres <[email protected]>.

Nawiasem mówiąc, w powiązanym zapytania Odbicie i LGPL , gbjbaanb odpowiedzi z LGPL 3,0 punktu widzenia .

Mark Booth
źródło
4
Podoba mi się sugestia „zapytaj FSF”
ZJR
Czytałem, że chcieli udostępnić więcej funkcji w bibliotece LGPL. Tak długo, jak powstały plik lib jest nadal licencją LGPL, a użytkownik oprogramowania OP może swobodnie zamieniać bibliotekę lib na wersję wbudowaną - byłbym szczęśliwy
Martin Beckett
3
@MartinBeckett - Niezupełnie, pytający próbuje ominąć LGPL, modyfikując bibliotekę, aby ułatwić mu ukrytą modyfikację biblioteki w swoim zamkniętym kodzie źródłowym. Gdyby dodawał swoją nową funkcję biblioteki bezpośrednio do LGPL, a następnie używał jej we własnym kodzie, nie byłoby problemu. Problem polega na tym, że stara się zachować własne, zamknięte źródło funkcjonalności, ale wciąż jest częścią biblioteki.
Mark Booth
6
LGPL 3.0 stwierdza: „Zdefiniowanie podklasy klasy zdefiniowanej przez bibliotekę jest uważane za tryb korzystania z interfejsu dostarczonego przez bibliotekę”. Powinno to być dozwolone, przynajmniej zgodnie z LGPL 3.0.
David
3
@David - Uważam, że modyfikując bibliotekę LGPL, aby umożliwić przesłonięcie funkcji, której normalnie nie można pominąć, milcząco przyznajesz, że twój kod jest wystarczająco ściśle powiązany, że ma postać „opartą na”, a nie „używany przez” relację z biblioteką, więc aktywuje się słaby copyleft.
Mark Booth
13

Standard Nie jestem zrzeczeniem się prawnika.

LGPL wymaga modyfikacji kodu źródłowego biblioteki, aby był dystrybuowany do każdego, kto używał twojego kodu. To ma nie wymagać, że kod, który używa biblioteki, być otwartym pozyskiwane i wydany na tej samej licencji.

Wikipedia zawiera bardziej szczegółowy, ale nie prawnikowy opis LGPL, w tym rozdział dotyczący dziedziczenia klas .

unholysampler
źródło
+1. Podsumowując: uważamy, że nie narusza to LGPL (ale IANAL)
MarkJ
@ MarkJ - Jak wyjaśniam w mojej odpowiedzi , nie jestem pewien, czy postawione pytanie jest po prostu kwestią dziedziczenia klas.
Mark Booth
9
Myślę, że ludzie po prostu lubią pisać IANAL, ponieważ zawiera „ANAL”.
g33kz0r
5

„Chcę zmodyfikować kod LGPL ...” oznacza to wystarczająco dużo, że musisz zwolnić dowolny ze zmodyfikowanych kodów. Następnie rozszerzenie, czy rozszerzenie tego zmodyfikowanego kodu jest dziełem pochodnym jest sporne, a jeśli tak, to staje się przedmiotem licencji LGPL.

Wygląda na to, że próbujesz obejść licencję LGPL, której w tym przypadku nie możesz zrobić przy pomocy tych technik.

Jeśli jest to praca pochodna, warunki programu muszą zezwalać na „modyfikację na własny użytek klienta i inżynierię wsteczną do debugowania takich modyfikacji”. To, czy praca korzystająca z programu LGPL jest dziełem pochodnym, czy nie, jest kwestią prawną.

Ale jeśli próbujesz obejść LGPL, skontaktowałbym się z FSF zgodnie z zaleceniami Marka Bootha .

Społeczność
źródło
1
Problem polega na tym, że LGPL zezwala na niektóre formy dzieł pochodnych, a na inne nie. Zaktualizowałem moją odpowiedź, aby rozróżnić między dziełami pochodnymi, które należą do kategorii prac opartych na bibliotece (która musi być LGPL), a pracą, która korzysta z biblioteki (która nie).
Mark Booth
@MarkBooth Zgadzam się z tobą i innymi, że w tym przypadku dzieje się tak, work based onponieważ wprowadzają zmiany w LGPL w celu ujawnienia wcześniej prywatnego kodu.
1

Zgaduję: (ale IANAL) powinieneś zwolnić zmodyfikowaną bibliotekę jako open source jako kod LGPL, a następnie upuścić ją w programie komercyjnym. To powinno działać. W efekcie skończysz z widelcem biblioteki typu open source, a następnie sprzedasz za niego interfejs.

Ale, jak wielu innych słusznie powiedziało, zapytaj FSF : masz intrygujący scenariusz patologiczny; mogą zastanawiać się tak samo jak ty, czy ma to zastosowanie, czy nie. (lub przynajmniej zawracać sobie tym głowę na tyle, aby opublikować wpis FAQ na ten temat)

ZJR
źródło
1

https://www.gnu.org/licenses/lgpl-java.html

Jeśli dystrybuujesz aplikację Java, która importuje biblioteki LGPL, łatwo jest przestrzegać LGPL. Licencja aplikacji musi umożliwiać użytkownikom modyfikowanie biblioteki i inżynierii wstecznej kodu w celu debugowania tych modyfikacji. Nie oznacza to, że musisz podać kod źródłowy lub jakiekolwiek szczegóły dotyczące wewnętrznych elementów aplikacji. Oczywiście niektóre zmiany, które użytkownicy mogą wprowadzić w bibliotece, mogą uszkodzić interfejs, uniemożliwiając bibliotece pracę z aplikacją. Nie musisz się tym martwić - ludzie, którzy modyfikują bibliotekę, są odpowiedzialni za to, aby działała.

Krótko mówiąc, nie ma problemu z dziedziczeniem, o ile nie zmienisz samego kodu biblioteki, ale nawet jeśli go zmienisz, musisz zwolnić tylko zmodyfikowany kod biblioteki, a nie kod aplikacji.

Nik. B.
źródło
1
Twoja odpowiedź jest sprzeczna z kilkoma innymi odpowiedziami, ale nie zapewnia wiele na poparcie Twoich roszczeń. Inne odpowiedzi są bardziej szczegółowe i lepiej wyjaśniają ich twierdzenia. Proszę edytować swoje odpowiedzi, aby zapewnić odpowiednie cytaty z licencji lub FSF, aby z powrotem swoje roszczenia.
W jaki sposób moja odpowiedź nie zapewnia wiele na poparcie moich roszczeń? Umieściłem link do oficjalnej strony GNU, która usuwa zamieszanie związane z LGPL i dziedziczeniem klas. Jest nawet zaktualizowany, aby objąć LGPL v3.
Nik.B