MIT vs. BSD vs. Podwójna licencja

87

Rozumiem, że:

  • Projekty licencjonowane MIT mogą być wykorzystywane / rozpowszechniane w projektach licencjonowanych BSD .
  • Projekty licencjonowane BSD mogą być wykorzystywane / rozpowszechniane w projektach licencjonowanych MIT.
  • Licencje 2-klauzulowe MIT i BSD są zasadniczo identyczne .
  • 3-klauzula BSD = 2-klauzula BSD + klauzula „brak poparcia”
  • Wydanie podwójnej licencji pozwala użytkownikom wybierać spośród tych licencji - nie być związanym z obiema.

Jeśli wszystkie powyższe informacje są poprawne, jaki jest sens korzystania z podwójnej licencji MIT / BSD? Nawet jeśli BSD odnosi się do wersji z 3 klauzulami, to czy użytkownik nie może legalnie wybrać tylko licencji MIT?

Wygląda na to, że jeśli naprawdę chcesz zastosować klauzulę „brak poparcia”, musisz licencjonować ją jako BSD (nie dualną). Jeśli nie obchodzi Cię klauzula „brak poparcia”, wystarczy MIT sam, a MIT / BSD jest zbędny.

Podobnie, ponieważ zarówno licencje MIT, jak i BSD są „ kompatybilne z GPL ” i można je redystrybuować w projektach licencjonowanych na GPL , wówczas podwójne licencje MIT / GPL również wydają się zbędne.

ryanve
źródło
1
Czy możesz podać przykład licencji MIT + BSD? Zwykle jest to nadmiarowe w stosunku do podwójnej licencji na dwóch podobnie dopuszczalnych licencjach, ale widziałem nadużycie podwójnej licencji jako sposób na wyraźne stwierdzenie, że kod może być redystrybuowany na każdej z tych licencji.
yannis
@ Yannis Tak, zastanawiałem się, czy ludzie podwójnie licencjonowali je tylko po to, aby być bardziej wyraźnym dla osób, które nie wiedzą. Ale myślę, że to sprawia, że ​​jest to dla nich bardziej mylące.
ryanve
Ciekawe przeczytanie: tomhull.com/ocston/docs/mozgpl.html
Dipan Mehta
1
Z mojego doświadczenia wynika, że ​​ludzie używają podwójnego licencjonowania dla niezgodnych licencji. np. MPL + (L) GPL lub licencja płatna bez copyleft wraz z (A) GPL.
CodesInChaos

Odpowiedzi:

60

Rozumiem, że:

  1. Projekty licencjonowane MIT mogą być wykorzystywane / rozpowszechniane w projektach licencjonowanych przez BSD.
    PRAWDA (ale jeśli nie ma modyfikacji, użytkownicy mogą ją również pobrać z oryginalnych źródeł).

  2. Projekty licencjonowane BSD mogą być wykorzystywane / rozpowszechniane w projektach licencjonowanych MIT. Licencja
    FALSE MIT pozwala na dystrybucję bez kredytów składkowych; BSD nie.

  3. Licencje 2-klauzulowe MIT i BSD są zasadniczo identyczne.
    FAŁSZ Patrz wyżej.

  4. 3-klauzula BSD = 2-klauzula BSD + klauzula „bez potwierdzenia”
    PRAWDA

  5. Wydanie podwójnej licencji pozwala użytkownikom wybierać spośród tych licencji - nie być związanym z obiema.
    PRAWDA (tak mi się wydaje!)

Podobnie, ponieważ zarówno licencje MIT, jak i BSD są „kompatybilne z GPL” i można je redystrybuować w projektach licencjonowanych na GPL, wówczas podwójne licencje MIT / GPL również wydają się zbędne.

NO . Oto główna różnica. Licencja MIT i licencja Apache wymaga jedynie uznania oryginalnych posiadaczy praw autorskich. Jeśli wybierzesz, może rozprowadzać źródła; ale jeśli wybierzesz, możesz zachować nowy produkt pochodny bez otwierania kodu. W związku z tym możliwe jest użycie kodu opracowanego w ramach MIT i Apache - na licencji komercyjnej.

Jeśli kiedykolwiek użyjesz kodu z licencją opartą na GPL i zdarzy ci się go zmodyfikować, musisz rozpowszechniać zmodyfikowany kod również na licencji GPL. Innymi słowy, gdy jakakolwiek baza kodu GPL zostanie użyta w ramach projektu i jeśli chcesz opublikować ją jako produkt, musi ona zostać opublikowana wraz z kodem źródłowym i musi zostać opublikowana na licencji GPL. Nigdy nie może być licencją komercyjną ani zamkniętym źródłem i nie może być żadną inną licencją, która jest mniej rygorystyczna niż GPL.

Możliwe jest na przykład pobranie kodu licencji MIT, Apache lub BSD, zmodyfikowanego i rozpowszechnionego na licencji GPL. Gdy baza kodu jest rozpowszechniana jako GPL, jej dalsze pochodne wersje nie mogą być dystrybuowane na licencji MIT, Apache lub BSD, ale muszą być wyłącznie GPL.

Edycja:
Przykładowy przypadek podwójnej licencji: Załóżmy, że Nice Office został wydany na podstawie podwójnej licencji - MIT i GPL. Ma dwie możliwości. Niektóre osoby mogą stworzyć NicePro Office, które może być komercyjne i sprzedawać. Podczas gdy niektóre inne społeczności open source tworzą rozwidlenie NiceOpen Office. W takim przypadku może egzekwować dystrybucję GPL (oryginalnej wersji Nice Office oraz wersji NiceOpen Office), dlatego jeśli zaczynasz od NiceOpen Office, musisz przestrzegać tylko GPL, a nie licencji MIT.

Chodzi o to, że w przypadku podwójnej licencji pierwsza osoba, która uzyskuje licencję, ma wybór. Może wybrać jeden z dwóch sposobów - jednak druga osoba musi zastosować się do wyboru dokonanego przez pierwszą osobę. Nie może uchylić pierwotnych praw żadnego pokolenia i w żaden sposób nie może ograniczyć obowiązku posiadania odpowiedniej licencji.

EDYCJA 2 Dodanie ciekawej lektury - licencje GPL i MPL powodują poważne konflikty. Przeczytaj to. http://www.tomhull.com/ocston/docs/mozgpl.html

Dipan Mehta
źródło
4
@Dipan Jeśli projekt jest podwójnie licencjonowany na podstawie MIT / GPL, wówczas można go wykorzystać w zastrzeżonym projekcie b / c, użytkownik może wybrać tylko stosowanie MIT. Jeśli projekt posiada tylko licencję MIT, można ją rozpowszechniać na podstawie innych licencji, w tym GPL. To właśnie miałem na myśli przez redundantne.
ryanve
11
@DipanMehta Co rozumiesz przez „kredyty składkowe” w punkcie 2? Wygląda na to, że odwołujesz się do licencji 4-klauzulowej BSD, która nie jest weryfikowana przez FSF, tak jak 3-klauzula i 2-klauzula. Mówię o 3-klauzulowych i 2-klauzulowych, w takim przypadku jestem prawie pewien, że wszystkie pięć stwierdzeń jest prawdziwe .
ryanve
4
Możesz używać kodu licencjonowanego BSD w połączeniu z kodem licencjonowanym MIT; musisz tylko wspomnieć w materiałach projektu, że „BazApp używa libfoobar, który jest dystrybuowany na licencji BSD” lub coś w tym rodzaju. Licencje BSD i MIT są stosowane na poziomie pliku, a nie projektu.
mipadi
10
@Dipan_Mehta Jak już powiedział Ryanve, mówisz o oryginalnej 4-klauzulowej licencji BSD, podczas gdy OP mówi o poprawionych 3- i 2-klauzulowych licencjach BSD. 2-klauzulowa licencja BSD jest faktycznie równoważna licencji MIT. Tak twierdzi nawet strona OSI.
17
Punkt # 2 (kod BSD nie może być zawarty w kodzie MIT) działa wbrew każdej informacji, jaką kiedykolwiek czytałem o 3-klauzulowej i 2-klauzulowej BSD. Punkt 2 byłby prawdziwy w odniesieniu do (obecnie starożytnego i zapomnianego) 4-klauzulowego BSD, ale OP wyjaśnił, że to pytanie nie dotyczy 4-klauzulowego BSD. Wydaje się dość szkodliwe mieć tak bardzo mylące informacje w bardzo dobrej i wiarygodnej odpowiedzi.
apsillers
4

Twoje pięć punktów jest prawdą .

Inna odpowiedź wydaje się zakładać, że dołączasz starszą, rzadko używaną 4-klauzulową licencję BSD .

Jeśli interpretujesz „licencje BSD” jako odnoszące się do częściej używanych 3-klauzulowych lub 2-klauzulowych wariantów licencji BSD, wszystkie pięć twierdzeń w pytaniu jest prawdą.

Jeśli wszystkie powyższe informacje są poprawne, jaki jest sens korzystania z podwójnej licencji MIT / BSD?

Technicznie nie powinno być takiej potrzeby. Oba mogą być używane w tych samych sytuacjach.

Nawet jeśli BSD odnosi się do wersji z trzema klauzulami, to czy użytkownik nie może legalnie wybrać tylko licencji MIT?

Brzmi poprawnie.

Wygląda na to, że jeśli naprawdę chcesz zastosować klauzulę „brak poparcia”, musisz licencjonować ją jako BSD (nie dualną). Jeśli nie obchodzi Cię klauzula „brak poparcia”, wystarczy MIT sam, a MIT / BSD jest zbędny.

Zgadza się. Jeśli zależy ci na tej konkretnej klauzuli, nie ma sensu licencjonować tej samej pracy na podstawie licencji bez tej klauzuli.

Podobnie, ponieważ zarówno licencje MIT, jak i BSD są „kompatybilne z GPL” i można je redystrybuować w projektach licencjonowanych na GPL, wówczas podwójne licencje MIT / GPL również wydają się zbędne.

Tak.

Chociaż czasami oprogramowanie może twierdzić, że jest podwójnie licencjonowane jako MIT i GPL (lub jakaś licencja zezwalająca i GPL), ale w rzeczywistości odnoszą się do dwóch różnych wersji oprogramowania.

Na przykład niektóre programy mogą być kompilowane i dystrybuowane z licencją permisywną, taką jak BSD lub MIT, ale jeśli pominie się niektóre biblioteki, a zatem i niektóre funkcje, można je rozpowszechniać jako GPL. Pominięte biblioteki będą zazwyczaj bibliotekami stron trzecich, które nie są kompatybilne z GPL, ale nadal mogłyby być dystrybuowane.

thomasrutter
źródło