Licencja publiczna Mozilla (MPL 2.0) a ogólna licencja publiczna mniejsza GNU (LGPL 3.0)


24

Chciałbym wypuścić bibliotekę oprogramowania napisaną w klasowym, obiektowym języku programowania (Java) w internetowej usłudze hostingowej kodu źródłowego , która umożliwia scalenie wideł projektu z głównym projektem (GitHub poprzez pull upraszanie). Poszukałem w Internecie i zastanawiałem się, jak licencjonować oprogramowanie. Czy mam rację w następujących założeniach (z perspektywy IANAL )?

  • Zarówno LGPL, jak i MPL promują dzielenie się modyfikacjami oprogramowania licencjonowanego LGPL / MPL wykorzystywanego w innych projektach oprogramowania. Zamiast wymagać od użytkowników zmodyfikowanej biblioteki hostowania oddzielnego rozwidlenia biblioteki, mogę promować wkład w oryginalną bibliotekę (np. Poprzez żądania ściągania).

  • Główną różnicą jest sposób, w jaki kod licencjonowany MPL / LGPL musi być powiązany z projektem. Pliki kodu źródłowego MPL można kopiować bezpośrednio do (ewentualnie) zastrzeżonego projektu oprogramowania ( linkowanie statyczne ), podczas gdy kod licencyjny LGPL musi być dynamicznie łączony (luźno powiązany z ewentualnym zastrzeżonym projektem oprogramowania, aby użytkownicy końcowi mogli zmienić licencjonowane oprogramowanie biblioteka innej wersji licencjonowanej biblioteki oprogramowania).

  • Dynamiczne łączenie, a tym samym LGPL, stwarza dodatkowe przeszkody w pakowaniu zastrzeżonego oprogramowania, bez promowania większego wkładu do biblioteki oprogramowania open source niż przez statyczne łączenie (a tym samym MPL). Istnieje zmodyfikowana licencja LGPL, która umożliwia łączenie statyczne.

  • Nie ma innych istotnych różnic (z perspektywy IANAL ).

  • Te starsze wersje licencyjne nie moich potrzeb tak dobre jak te najnowsze.

Jak widać, moim głównym wymaganiem jest to, aby modyfikacje biblioteki oprogramowania, które mogą okazać się przydatne dla ogółu społeczeństwa, pozostały otwarte, bez nakładania ograniczeń na korzystanie z biblioteki oprogramowania w zastrzeżonym produkcie.
Żadna licencja nie wymaga również, aby rozszerzenia biblioteki oprogramowania, które są związane z oryginalnym dziełem, były udostępniane jako oprogramowanie typu open source, ponieważ zakres stosownego terminu może być dowolnie mały / ogromny, co kończy się jako GPL, której nie można stosowany w zastrzeżonym produkcie (bez zwalniania całego źródła).

Kusi mnie, aby użyć zmodyfikowanego LPGL , ale z drugiej strony zniechęcają mnie niepopularność. Na podstawie powyższych punktów wolę MPL.
Pytanie: Czy moje powyższe stwierdzenia są prawidłowe? Którą licencję powinienem wybrać biorąc pod uwagę moje wymagania?


Rozwiązanie: Przy pomocy dyskusji w zaakceptowanej odpowiedzi wybieram MPL ze względu na popularność , swobodę linkowania i ponieważ jest to oficjalna, niezmodyfikowana licencja .



Dodatkowe pytania i odpowiedzi dotyczące licencjonowania oprogramowania byłyby moim zdaniem bardzo przydatne. Dzięki!
mucaho,

1
Naprawdę nie widzę w tym pytania. Czy możesz wyjaśnić, jakie jest twoje aktualne pytanie?
Bart van Ingen Schenau

Odpowiedzi:


15

Wydaje mi się, że dokładnie określiłeś różnice między Licencją Publiczną Mozilli i Małą Ogólną Licencją Publiczną GNU , i jedno z nich może dobrze odpowiadać Twoim potrzebom, ale pomijasz najważniejszą różnicę między tymi dwiema licencjami:

Kto może tworzyć nowe wersje?

Zarówno MPL (sekcja 10), jak i LGPL (sekcja 14) zawierają w swojej licencji prawo do zastąpienia obecnej wersji inną wersją i nie ma faktycznych ograniczeń co do tego, co może wchodzić w te licencje. Chociaż jest wysoce nieprawdopodobne, że Fundacja Mozilla lub Fundacja Wolnego Oprogramowania zrobią coś tak szalonego, jak, powiedzmy, klauzula, która mówi, że „wszelkie wkłady w to oprogramowanie stają się naszą własnością”, nie jest wykluczone, że jedna z organizacje wydadzą nową wersję licencji, której nie lubisz.

Co podnosi kolejną kwestię dotyczącą używania „Zmodyfikowanej licencji LGPL”.


Zmodyfikowana licencja to nie ta sama licencja!

Chociaż masz dość zdumiewającą umiejętność określania własnych warunków licencyjnych i możesz w zasadzie powiedzieć „możesz to rozpowszechniać zgodnie z GPL, ale musisz umieścić moje imię w swoich kredytach i zapłacić mi 1% wszelkich przychodów, które wygenerujesz” , za każdym razem, gdy to robisz, tworzysz nową licencję w oparciu o czyjąś pracę. Oznacza to, że NIE korzystasz z MPL ani LGPL, korzystasz z nowej „licencji mucaho”.

Oznacza to, że prawdopodobnie nie uzyskasz żadnej pomocy od autora oryginalnej licencji, jeśli musisz bronić swojej interpretacji licencji w sali sądowej, i jest całkiem możliwe, że złożą pozew, że ICH wersja powinna mieć zastosowanie i nie twoje.


Oczywiście oba są drobnymi punktami. Nawet „popularność licencji” nie ma znaczenia, chyba że oczekujesz, że kod zostanie bezpośrednio włączony do większych projektów.

Osobiście uważam, że MPL jest lepszym wyborem, jeśli lubisz zastrzeżoną kompatybilność lub jeśli wybierasz między faktyczną MPL a inną licencją, którą musisz ręcznie edytować na podstawie LGPL. O ile nie masz powodu, aby nie korzystać z MPL, idź z czymś opartym na fundacji zamiast na fundamencie, który mógłby zostawić cię w sądzie bez żadnej pomocy.


Jeśli chodzi o tworzenie nowych wersji, warto odnotować przypadek utworzenia przez FSF przepisu pozwalającego Wikipedii na ponowne licencjonowanie treści jako CC-SA.
Christian

Dzięki! Tylko dla wyjaśnienia: @DougM powiedział „Zarówno MPL (sekcja 10), jak i LGPL (sekcja 14) zawierają w swojej licencji prawo do zastąpienia obecnej wersji inną wersją” . Nadal mogę wybrać, czy moje oprogramowanie pozostanie licencjonowane na starej wersji, czy też chcę przejść na nowszą wersję licencji, prawda (patrz MPL2.0 sekcja 10.2)? Więc jeśli poprawnie interpretuję kwestię nowych wersji, tylko użytkownicy mojej biblioteki LPGL / MPL są w niekorzystnej sytuacji, jeśli zdecyduję się przejść na nowszą wersję i ta nowsza wersja im nie odpowiada?
mucaho

2
Ani LGPL, ani MPL nie mają mechanizmu cofania przyznania licencji. Raz ktoś ma kod, to ich kompetencji zgodnie z warunkami tej licencji na zawsze . I mogą wybrać, czy postępować zgodnie z istniejącą wówczas licencją, czy jakąkolwiek licencją następczą. (Możesz zmienić nowe dystrybucje na nową wersję, ale każdy, kto chce rozwidlić cna, również to robi. Nawet jeśli ich „fork” nie zmieni żadnej innej części twojego programu.)
DougM

Ach, dzięki za wyjaśnienie! Czy mógłby Pan wyjaśnić „mają prawo do zastąpienia obecnej wersji inną wersją” , proszę? Czy to oznacza (w mało prawdopodobnym przypadku), że FSF może wprowadzić klauzulę, która mówi „wszystkie wkłady w to oprogramowanie stają się naszą własnością” w istniejącym już LGPLv3.0 z mocą wsteczną ?
mucaho

1
Mogliby spróbować , ale prawdopodobnie nie udałoby się to. Mogliby jednak powiedzieć „możesz ukraść nazwę każdego projektu, który rozwidlasz na LGPL4” lub innej nieoczekiwanej wersji. (Prawdopodobnie nie zrobią tego, ale zarówno oni, jak i Mozilla technicznie MOGĄ, choć sądy mogą nie pozwolić im na egzekwowanie takiej klauzuli).
DougM

4

Odpowiedź DougM i AER ma rację. MPLv2 i LGPLv3 z wyjątkiem statycznym są takie same w odniesieniu do zdarzeń, które wyzwalałyby copyleft. Myślę jednak, że brakuje nam kolejnej bardzo ważnej różnicy między LGPL i MPL. Po uruchomieniu copyleft, copyleft dotyczy:

  • dla MPL: do dokładnie takich samych plików w oryginalnej bibliotece
  • w przypadku LGPL: do „pracy opartej na bibliotece” w przeciwieństwie do „pracy korzystającej z biblioteki”. Więc LGPL może potencjalnie rozszerzyć swoje copyleft na nowe pliki.

Edge-case: Korzystanie z MPL pozwala użytkownikom nie udostępniać swoich ulepszeń

MPL jest licencją typu copyleft na poziomie plików. Oznacza to, że jeśli ktoś osadzi go w większym projekcie (statycznie lub dynamicznie) i dokona zmiany w pliku, musi jedynie zwolnić zmianę dokonaną w tym konkretnym pliku.

Jeśli obawiasz się, aby integralność bazy kodu była otwarta, istnieją przypadki skrajne, w których ten efekt MPL copyleft może nie być wystarczający.

Na przykład ktoś może wziąć jeden z głównych plików projektu, dodać „import my_private_new_file” i zmodyfikować główną metodę, na przykład dodając „my_private_new_file.newAwesomeFeature.run ()” .

I w ten sposób mógł dodać nowe funkcje do twojego projektu, jednocześnie zwalniając jedynie zmodyfikowany plik główny i zachowując logikę nowej funkcji jako zamknięte źródło w „my_private_new_file” .

Ponowne przesłanie głównego pliku do społeczności daje po prostu informację, że „hej, dodałeś nową funkcję”, ale nie pozwala ci to włączyć tej nowej funkcji do otwartej ... Może to być denerwujące, jeśli nowa funkcja jest blisko związane z problemem, który stara się rozwiązać twoja biblioteka.

Oczywiście jest to przypadek skrajny i jest mało prawdopodobne, aby ktoś chciał to zrobić, ale jest to ryzyko, o którym należy pamiętać podczas korzystania z MPLv2.

LGPL jest napisane, aby zabraniać takich zachowań. Widzieć:

Cytuję oryginalną licencję LGPL:

Zwróć szczególną uwagę na różnicę między „dziełem opartym na bibliotece” a „dziełem korzystającym z biblioteki”. Pierwszy zawiera kod pochodzący z biblioteki, podczas gdy drugi musi być połączony z biblioteką, aby uruchomić.

Copyleft dotyczy tylko „pracy opartej na bibliotece”. Czym w praktyce jest „dzieło oparte na bibliotece”? Pozostawia przestrzeń do interpretacji. Co jest nie tylko miłe, ponieważ oznacza, że ​​przestrzeganie licencji staje się bardziej skomplikowane, a przez to przerażające. Może to spowodować, że niektórzy ludzie po prostu nie będą korzystali z Twojej biblioteki.

W tym sensie LGPL jest bardziej restrykcyjne niż MPL, ale także bardziej chroni integralność projektu.

MPL ułatwia użytkownikom z zastrzeżonego świata naprawianie biblioteki i korzystanie z niej, przy jednoczesnym udostępnianiu poprawki

Zaletą MPL jest to, że jeśli użytkownik znajdzie błąd w bibliotece, może go naprawić bezpośrednio w pliku, bez konieczności rozdawania całego kodu, ale tylko dostarczając poprawki. Praktycznie rzecz biorąc, przekazując swoją pracę klientowi, może on po prostu podać link do widelca twojego projektu zawierającego poprawkę i jest dobry.

Dzięki zastosowaniu LGPL sprawy są bardziej skomplikowane. Jeśli ktoś rozwiąże twój projekt, naprawi błąd i osadzi go statycznie w swoim zastrzeżonym oprogramowaniu, musi rozpowszechnić wśród swoich użytkowników „pracę opartą na bibliotece” na licencji LGPL. Co jest dość niejasnym pojęciem, szczególnie gdy biblioteka jest osadzona statycznie ... Pod tym względem uważam, że był to pierwotny powód, dla którego nie ma czegoś takiego jak „statyczny” wyjątek w oryginalnej wersji LGPL. Ułatwia identyfikację „dzieła opartego na bibliotece”: jest to biblioteka dynamiczna, którą wywołujesz w swoim oprogramowaniu.

W rezultacie MPL sprawia, że ​​interesujący dostawcy mogą łatwiej używać ORAZ wysłać poprawkę do Twojej biblioteki niż LGPL.

Jednocześnie większość sprzedawców będących własnością firmy nie ma zasobów ani czasu, aby zanurzyć się w skomplikowanej bibliotece i najprawdopodobniej nie naprawiliby tego samodzielnie. Wolą otworzyć problem w repozytorium GitHub lub wysłać wiadomość e-mail z listy mailingowej i poczekać na naprawę.

Pod tym względem LGPL wymusza bardziej tego rodzaju zachowanie. Ale czy egzekwowanie jest naprawdę potrzebne?

Wniosek

Wybór między LGPL i MPL jest trudnym pytaniem i, jak zwykle w przypadku licencji na oprogramowanie, zależy od celu. Obie licencje są bardzo podobne, ale jednocześnie bardzo różne. Zostały zaprojektowane z myślą o bardzo różnych celach i filozofii.

LGPL została opracowana przez Fundację Wolnego Oprogramowania, aby umożliwić powszechne korzystanie z bibliotek Wolnego Oprogramowania w świecie zastrzeżonym, ale zawsze mając na uwadze ideę promowania Wolnego Oprogramowania i walki z zastrzeżonym oprogramowaniem. Wszystko to jest częścią strategii wobec ich ideologii. Zobacz: https://www.gnu.org/licenses/why-not-lgpl.html

MPL to praktyczna licencja opracowana przez Mozillę w celu wymuszania pewnego rodzaju udostępniania w stosunku do oryginalnej biblioteki, przy jednoczesnym zachęcaniu ludzi do tworzenia zastrzeżonego oprogramowania i dodatków (w tym samej Mozilli), co jest praktyką, którą FSF autoryzuje za pośrednictwem LGPL, ale nadal uważa się za szkodliwy.

W gruncie rzeczy MPLv2 jest uważany przez wielu za licencję poboczną, podczas gdy LGPLv3 z wyjątkiem statycznym jest rzadko nazywany w ten sposób.

EDYTOWAĆ

Zapomniałem wspomnieć o czymś ważnym. LGPLv3 (z wyjątkiem statycznym lub bez) zabrania tivoizacji . Możesz myśleć, że jest to „szczegół”, ale tak naprawdę nie jest, w zależności od twojego celu. Czy zależy Ci na wolności użytkowników? To nie jest szczegół. Czy zależy Ci na tym, aby Twoja biblioteka mogła być używana na urządzeniu Apple? VLC bardziej dba o to, aby go używać, dlatego zdecydowali się na LGPLv2, który nie zawiera takich ograniczeń. Podobnie jest to jeden z powodów, dla których Linux nadal korzysta z GPLv2 . MPLv2 również nie ma żadnych ograniczeń tiviozacji, oczywiście, ponieważ jest to licencja stworzona z myślą o bardziej „praktycznej” filozofii Open Source, a nie ideologii FSF.

Mogłyby istnieć inne „drobne” rzeczy, które tęskniłem.

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.