Stworzyłem program oparty na projekcie LGPL i nie mogę publikować kodu źródłowego

13

Myślałem, że LGPL to licencja pobłażająca, podobnie jak MIT, BSD lub Apache. Ale dzisiaj czytam, że tylko linkowanie do LGPL (bibliotek itp.) Jest dozwolone z kodu o zamkniętym źródle - poza tym, że jest to copyleft - więc muszę opublikować kod oparty na programie LGPL.

Stworzyłem program dla mojego pracodawcy, który jest oparty na programie LGPL, ale ma znaczące modyfikacje. Oczywiście nie wolno mi udostępniać tego zmodyfikowanego kodu źródłowego. Jednocześnie muszę to zrobić, jeśli je rozpowszechnię (prawda?).

Zastanawiam się więc, czy istnieje obejście tego problemu, więc mogę zachować to zamknięte źródło (chciałbym móc opublikować to źródło) - jakieś sugestie?

Mój pomysł: czy mogę umieścić większość funkcji oryginalnej aplikacji LGPL w bibliotece zewnętrznej, napisać od podstaw podstawowy plik wykonywalny, ale odwołać się do biblioteki dla wszystkich funkcji, których nie zmodyfikowałem?

Obecnie wszystko znajduje się w pliku .jar (jest to Java / Swing). jeśli uważasz, że mój pomysł jest wykonalny pod względem prawnym / technicznym - ile wysiłku wymagałoby rozdzielenie tego, co napisałem i jaki jest oryginał? Nie jestem najbardziej obeznana z Javą.

Esuus
źródło
W tym poście facet mówi: „Dodatkowo LGPL można obejść, po prostu umieszczając go w nowej bibliotece dll i używając delegatów lub interfejsów, aby wywołać go z kodu źródłowego LGPL”. - czy ktoś może opracować nieco więcej, jak to zrobić z oryginalną aplikacją Java?
16
to nie jest legalna strona internetowa , nie otrzymam od nikogo tutaj żadnej porady prawnej, z wyjątkiem porady, aby uzyskać prawdziwą poradę prawną oczywiście.
5
LGPL dotyczy głównie dystrybucji i nie podałeś nam żadnych informacji na temat tego, w jaki sposób zamierzasz rozpowszechniać ten kod. Pytanie jest mało prawdopodobne, aby uzyskać dokładne odpowiedzi, dopóki tego nie zrobisz. W każdym razie powtórzę, że nie powinieneś korzystać z porad prawnych w Internecie .
Rein Henrichs
Uważam, że teraz rozumiem LGPL dość dobrze pod względem legalności. Tak więc naprawdę pytam was, jak sprawić, by działało to technicznie - choć oczywiście macie rację - w razie wątpliwości skonsultuję się z prawnikiem.
Esuus
Nie mówisz, jakiego oprogramowania używasz, ale niektórzy dostawcy oprogramowania GPL / LGPL (i innych) zapewniają licencje komercyjne dla osób w Twojej sytuacji.
Jaydee,

Odpowiedzi:

13

Po pierwsze, skorzystanie z porady prawnej tutaj (jak w przypadku internetów) nie jest dobrym pomysłem.

Po drugie, i to tylko ja mówię, a nie prawnik, powinieneś pomyśleć o tym, zanim wziąłeś program LGPL i zmodyfikowałeś go dla swojego pracodawcy.

Jeśli licencja była czymś, co można zignorować tylko dlatego, że jej się nie podobało, nie byłoby sensu mieć jej teraz, prawda?

Jeśli ty i / lub twój pracodawca nie jest skłonny opublikować kodu źródłowego ze swoimi modyfikacjami, musisz przestać używać tego kodu LGPL i go pozbyć.

Znów to tylko ja mówię.

Uzyskaj porady od prawdziwego prawnika.


W odpowiedzi na pytanie dotyczące obchodzenia licencji poprzez dodanie kodu do biblioteki DLL, zakładam, że działałoby to w następujący sposób.

To, co byś zrobił, to wystarczy zmienić oryginalny program, aby mógł on wywoływać funkcje w bibliotekach zewnętrznych. Musiałbyś to zrobić bez dostosowywania tego fragmentu kodu do swoich potrzeb, bibliotek, nazw funkcji itp.

Zmiany, które następnie publikujesz, zgodnie z wymogami licencji.

Następnie tworzysz własną bibliotekę zewnętrzną z własnym, zastrzeżonym kodem i prosisz ten program, aby załadował i wykonał go, używając tych modyfikacji, które wprowadziłeś.

Nie znając pełnego zakresu licencji LGPL, nie mogę powiedzieć, czy to wystarczy, aby uniknąć konieczności publikowania biblioteki, ale podejrzewam, że tak będzie.

Jednak znowu ...

Uzyskaj porady od prawnika

Lasse V. Karlsen
źródło
4
Zauważ, że FSF, który napisał rodzinę licencji GPL, rozważa dynamiczne łączenie w celu stworzenia dzieła pochodnego, więc może nie działać. (Inni uważają, że FSF jest w błędzie.) Nie sądzę, aby istniała prawna determinacja, chociaż mogę się mylić.
David Thornley,
Naprawdę? Jestem przekonany, że wiesz o tym więcej niż ja, David, ale wikipedia mówi, że możesz nawet dynamicznie łączyć się z bibliotekami licencjonowanymi na GPL bez konieczności publikowania na GPL: „Na przykład wyjątek łączenia GPL pozwala programom, które same się nie licencjonują zgodnie z GPL, aby połączyć się z bibliotekami licencjonowanymi na podstawie GPL, nie podlegając tym samym wymogom GPL ” Zastanawiam się teraz, jaka jest różnica między GPL i LGPL: Myślałem, że tylko LGPL na to pozwala.
Esuus
2
@Dave: Duży zespół prawny mojego pracodawcy nie zgodziłby się. Bardzo agresywnie chronią swoją własność intelektualną i wyraźnie zabronione jest łączenie kodu GPL z naszym własnym, chyba że dystrybuujemy kod w ramach GPL. Gdzie znalazłeś ten wyjątek? Nie widzę tego w GPLv2 ani v3. Wygląda na to, że odwołujesz się do wyjątku dotyczącego łączenia, który nie jest częścią waniliowej licencji GPL. Jednak właściciele praw autorskich mogą według własnego uznania dodać wyjątek do swojego kodu GPL. Skonsultowanie się z zespołem prawnym jest naprawdę najlepszą rzeczą.
Nieważne
5
Nie ufałbym Wikipedii w tej sprawie. Z tego co wiesz, wpis został napisany przez 14-latka, który czytał o licencjonowaniu w poprzedni weekend. Uzyskaj prawdziwą poradę. Możesz też postawić na farmę i mieć nadzieję, że Twoja firma nie będzie miała kłopotów. Cokolwiek działa.
Lasse V. Karlsen
Łączenie @Dave z GPL jest problemem. O ile mi wiadomo, był to jeden z głównych powodów, dla których FreeBSD porzuciło GCC na rzecz Clang / LLVM .
Legolas
4

Większość bibliotek otwartego oprogramowania opublikowanych na licencji LGPL lub porównywalnej licencji, przynajmniej tych, które są wystarczająco dobre do wykorzystania w twoich projektach, są zbudowane zgodnie z zasadą otwartego / zamkniętego: http://en.wikipedia.org/wiki/Open/closed_principle .

Powinieneś być w stanie refaktoryzować swój kod, aby twoja aplikacja była połączona z biblioteką LGPL, a wszystkie rozszerzenia były zawarte w twoim zamkniętym kodzie aplikacji.

Olaf
źródło
No cóż, użyty przeze mnie kod LGPL to aplikacja, a nie biblioteka ... więc pytanie brzmi: czy mogę zamienić ją w bibliotekę, czy - jak sugerował Lasse - zamienić mój kod w bibliotekę, a resztę LGPL / otworzyć
Esuus
1
@Dave: LGPL był znany jako Library GPL. Naprawdę nie widziałem żadnych aplikacji korzystających z tej licencji. Czego używałeś, jeśli nie jest to tajemnicą?
Olaf
FSF nazywa to teraz Małą GPL. Jedyne, co mogę teraz wymyślić dla aplikacji, to możliwość łączenia się w zastrzeżonych bibliotekach i tym podobnych.
David Thornley,
Co ciekawe, zarówno Mozilla, jak i OpenOffice.org są licencjonowane na licencji LGPL.
Esuus
@Dave: Więc jestem z @David Thornley. Mozilla zapewnia środki do tworzenia niestandardowych wtyczek, które mogą być kodem zamkniętym. Nie znam się na OpenOffice, ale założę się, że oni to robią. Czy używana aplikacja LGPL zapewnia jakieś funkcje rozszerzające, takie jak dodawanie wtyczek lub używanie języka skryptowego? Czy możesz użyć tego mechanizmu do swojego kodu?
Olaf
2

To samo zastrzeżenie: IANAL.

Nikt do tej pory nie wspomniał o tym, że nawet jeśli rozdzielisz kod, nadal musisz rozdzielić kod źródłowy na części LGPL lub przynajmniej podać informacje o tym, gdzie można je pobrać.

Jedynym sposobem na obejście tego jest nie dystrybuowanie ich w pierwszej kolejności.

Per Johansson
źródło
2

Nie sądzę, że potrzebujesz prawnika, aby zrozumieć, że próba obejścia licencji nie jest dobrą rzeczą. Wystarczy zdrowy rozsądek.

Zamiast tego możesz skontaktować się z oryginalnym autorem programu LGPL i poprosić / kupić o inną licencję prawną.

Jedynymi innymi alternatywami są zwolnienie źródła lub całkowite przepisanie go.

amadvance
źródło
1

IANAL, TINLA itp.

Myślałem, że LGPL to licencja pobłażająca, podobnie jak MIT, BSD lub Apache. Ale dzisiaj czytam, że tylko linkowanie do LGPL (bibliotek itp.) Jest dozwolone z kodu o zamkniętym źródle - poza tym, że jest to copyleft - więc muszę opublikować kod oparty na programie LGPL.

Tak, LGPL wymaga, abyś udostępnił kod źródłowy każdemu, kto otrzyma kopię dzieła, lub musisz rozpowszechniać swoje dzieło w formie, w której odbiorcy oprogramowania mogą zastąpić twoją wersję dzieła LGPL nowym wersja. W obu przypadkach wszystkie modyfikacje części utworu LGPL muszą być dostępne dla wszystkich odbiorców dzieła.

Stworzyłem program dla mojego pracodawcy, który jest oparty na programie LGPL, ale ma znaczące modyfikacje. Oczywiście nie wolno mi udostępniać tego zmodyfikowanego kodu źródłowego. Jednocześnie muszę to zrobić, jeśli je rozpowszechnię (prawda?).

Poprawny. Licencja wymaga, aby wszyscy odbiorcy oprogramowania mieli dostęp do kodu źródłowego.

Mój pomysł: czy mogę umieścić większość funkcji oryginalnej aplikacji LGPL w bibliotece zewnętrznej, napisać od podstaw podstawowy plik wykonywalny, ale odwołać się do biblioteki dla wszystkich funkcji, których nie zmodyfikowałem?

Może to stanowić dzieło pochodne i nadal będziesz musiał rozpowszechniać wszystkie skrypty budowania usuwające program do biblioteki.

Obecnie wszystko znajduje się w pliku .jar (jest to Java / Swing). jeśli uważasz, że mój pomysł jest wykonalny pod względem prawnym / technicznym - ile wysiłku wymagałoby rozdzielenie tego, co napisałem i jaki jest oryginał? Nie jestem najbardziej obeznana z Javą.

Java dodaje całą masę nowych problemów do LGPL, ponieważ nie jest jasne, co stanowi łączenie „statyczne” i „dynamiczne”. Ponieważ wyjątki LGPL w stosunku do GPL opierają się na tej koncepcji, w większości przypadków LGPL jest w rzeczywistości równoważna GPL. Będziesz musiał skonsultować się z zespołem prawnym firmy, aby odpowiedzieć na wszelkie pytania, które się pojawią.

Moja rada jest taka, że ​​jeśli ktoś spoza Twojej firmy będzie miał dostęp do programu, usuń go i zacznij od nowa. Jeśli nie możesz spełnić wymagań licencji, w ogóle nie możesz jej rozpowszechniać.

Jeśli program będzie dostępny tylko w firmie, musisz jedynie udostępnić źródło pracownikom firmy. Sugeruję dodanie go do istniejącej kontroli źródła w Twojej firmie. Spełni to wymagania LGPL, o ile nikt poza firmą nie będzie miał dostępu.

greyfade
źródło
1

możesz użyć wzorca adaptera i nie dotykać oryginalnego kodu. Również LGPL pozwala na dziedziczenie klas i zastępowanie funkcjonalności klas w swoim własnym projekcie.

niebo
źródło
0

Tak rozumiem, IANAL.

Sprawdź tekst wersji LGPL obejmującej używany kod. Uważam, że wymaganie jest takie, że każdy kod LGPL musi mieć możliwość wymiany - zwykle przy użyciu udostępnionego pliku biblioteki / jar. Jeśli możesz podzielić kod, którego używasz, czyli LGPL, na bibliotekę, możesz go zwolnić na licencji LGPL, jednocześnie uwalniając swoją aplikację na dowolnej licencji.

Sean McMillan
źródło
0

Nie możesz obejść licencji. Nawet jeśli znajdziesz lukę, jest to nadal nieetyczne (choć dla niektórych osób to inne pytanie). MOŻESZ zrobić, to skontaktować się z autorem tego oprogramowania, wyjaśnić sytuację i poprosić o osobną licencję. Jeśli jest skłonny udzielić specjalnej licencji za pewną cenę, możesz porównać to z kosztem przepisania oprogramowania bez korzystania z danego komponentu. I po prostu idź z tańszym.

Tamás Szelei
źródło