Licencja MIT vs GPL [zamknięta]

122

Licencja MIT jest zgodna z GPL. Czy licencja GPL jest zgodna z MIT? tj. mogę dołączyć kod na licencji MIT do produktu na licencji GPL, ale czy mogę dołączyć kod na licencji GPL do produktu na licencji MIT?

Wydaje mi się, że główna różnica między licencją MIT a GPL polega na tym, że MIT nie wymaga modyfikacji z otwartym kodem źródłowym, podczas gdy GPL tak. Czy to jest poprawne? Czy GPL jest bardziej restrykcyjna niż licencja MIT?

fruzer
źródło
1
en.wikipedia.org/wiki/MIT_License Licencja jest również zgodna z GPL, co oznacza, że ​​...
Michael Petrotta

Odpowiedzi:

76

Wydaje mi się, że główna różnica między licencją MIT a GPL polega na tym, że MIT nie wymaga modyfikacji z otwartym kodem źródłowym, podczas gdy GPL tak.

Prawda - ogólnie. Nie musisz otwierać swoich zmian, jeśli używasz GPL. Możesz go zmodyfikować i używać do własnych celów, o ile go nie rozpowszechniasz. ALE ... jeśli to rozprowadzasz, cały projekt, który używa kodu GPL, również automatycznie staje się GPL. Co oznacza, że ​​musi być open-source, a odbiorca ma takie same prawa jak ty - co oznacza, że ​​może go obracać i rozpowszechniać, modyfikować, sprzedawać itp. I to obejmowałoby twój zastrzeżony kod, który wtedy nie już zastrzeżone - staje się open source.

Różnica w stosunku do MIT polega na tym, że nawet jeśli faktycznie rozpowszechniasz swój zastrzeżony kod, który korzysta z kodu licencjonowanego przez MIT, nie musisz tworzyć kodu open source. Możesz rozpowszechniać go jako zamkniętą aplikację, w której kod jest zaszyfrowany lub binarny. Dołączony kod licencjonowany przez MIT może być zaszyfrowany, o ile zawiera informację o licencji MIT.

czy GPL jest bardziej restrykcyjna niż licencja MIT?

Tak, bardzo.

Ravi Jayagopal
źródło
16
Mogę tylko zauważyć, że GPL nie tworzy oprogramowania „open source”. Oprogramowanie na licencji GPL staje się BEZPŁATNE (co oznacza ochronę wolności użytkownika). Wolne oprogramowanie jest ruchem starszym i bardziej znaczącym niż otwarte. Oto artykuł o różnicach: gnu.org/philosophy/open-source-misses-the-point.html . Dzięki
Jorge Orpinel
11
Z tych samych powodów można by argumentować, że MIT jest bardziej restrykcyjny, ponieważ nie chroni wszystkich wolności użytkownika i może prowadzić do prywatyzacji oprogramowania (= ograniczenie i utrata kontroli przez użytkownika).
Jeszcze
3
@tcurdt Dlaczego nie jest to „właściwe miejsce” do rozmowy o wolności? Dlaczego autocenzura? I nie, niestety nie to oznacza „za darmo”. Nawet „otwarte” nie oznacza tego. Żeby wyjaśnić, ani licencje MIT, ani GPL nie pozwalają na „nic z tym”. Tylko kod bez licencji może należeć do tej kategorii. Pozdrawiam
Jorge Orpinel
3
Znowu źle, tak właśnie powinno wyglądać stackoverflow dla stackoverflow.com/help/on-topic . Ktoś, kto uważa, że ​​to nie na temat, nie czyni tego. Niezależnie od tego, mam swobodę wypowiedzi i to jest rodzaj przestrzeni publicznej, więc ... Tak. Po prostu nie możesz znieść błędu. W rzeczywistości staram się pomóc Tobie i innym czytelnikom, jeśli mogę. W każdym razie powodzenia
Jorge Orpinel
8
@JorgeOrpinel "Tylko kod bez licencji może należeć do tej kategorii." To bardzo, bardzo źle, kod bez licencji jest WŁASNY / „wszelkie prawa zastrzeżone”. Jeśli będziesz chodzić i rozpowszechniać kod, który inni ludzie stworzyli bez licencji, ryzykujesz wiele problemów prawnych. Mówisz, że próbujesz „pomóc tobie i innym czytelnikom”, ale pozywanie czytelników do sądu nie jest zbyt pomocne. Po prostu FYI.
średnik
45

Czy mogę dołączyć kod na licencji GPL do produktu na licencji MIT?

Możesz. GPL jest wolnym oprogramowaniem, podobnie jak MIT, obie licencje nie ograniczają Cię do łączenia kodu, gdzie „dołączenie” jest zawsze dwukierunkowe.

W przypadku praw autorskich do dzieła połączonego (tj. Dwóch lub więcej utworów tworzą razem jeden utwór) nie ma większego znaczenia, czy jedno dzieło jest „większe” od drugiego, czy nie.

Jeśli więc włączysz kod na licencji GPL do produktu na licencji MIT, jednocześnie włączysz produkt na licencji MIT do kodu na licencji GPL.

Po drugie, OSI wymieniło następujące kryteria (bardziej szczegółowo) dla obu licencji (MIT i GPL):

  1. Bezpłatna redystrybucja
  2. Kod źródłowy
  3. Dzieła pochodne
  4. Integralność kodu źródłowego autora
  5. Brak dyskryminacji osób lub grup
  6. Brak dyskryminacji na polach wysiłków
  7. Dystrybucja licencji
  8. Licencja nie może dotyczyć konkretnego produktu
  9. Licencja nie może ograniczać innego oprogramowania
  10. Licencja musi być neutralna pod względem technologii

Oba pozwalają na tworzenie połączonych prac, o co prosiłeś.

Jeżeli połączenie tych dwóch utworów jest uważane za pochodne, to nie jest to również ograniczone przez obie licencje.

Obie licencje nie ograniczają rozpowszechniania oprogramowania.

Wydaje mi się, że główna różnica między licencją MIT a GPL polega na tym, że MIT nie wymaga modyfikacji z otwartym kodem źródłowym, podczas gdy GPL tak.

GPL nie wymaga od ciebie wypuszczania modyfikacji tylko dlatego, że je wprowadziłeś. To nie jest dokładne.

Możesz to połączyć z dystrybucją oprogramowania na GPL, o co nie pytałeś bezpośrednio.

Czy to prawda - czy GPL jest bardziej restrykcyjna niż licencja MIT?

Oto jak to rozumiem:

Jeśli chodzi o dystrybucję, musisz objąć cały pakiet licencją GPL. Kod MIT w pakiecie będzie nadal dostępny w ramach MIT, podczas gdy GPL dotyczy całego pakietu, jeśli nie jest ograniczona wyższymi prawami.

„Restrykcyjny” lub „bardziej restrykcyjny” / „mniej restrykcyjny” zależy w dużej mierze od punktu widzenia. Dla użytkownika oprogramowania MIT może skutkować bardziej ograniczonym oprogramowaniem niż to dostępne na GPL, nawet niektórzy nazywają GPL bardziej restrykcyjną obecnie. Ten użytkownik w szczególności będzie nazywał MIT bardziej restrykcyjnym. To subiektywne, aby to powiedzieć, a różni ludzie udzielą ci różnych odpowiedzi na to pytanie.

Ponieważ mówienie o ograniczeniach różnych licencji jest subiektywne, powinieneś pomyśleć o tym, co chciałbyś osiągnąć:

  • Jeśli chcesz ograniczyć użycie swoich modyfikacji, MIT może być bardziej restrykcyjny niż GPL w zakresie dystrybucji i może być tym, czego szukasz.
  • Jeśli chcesz mieć pewność, że wolność twojego oprogramowania nie jest tak bardzo ograniczona przez użytkowników, którym je rozprowadzasz, możesz chcieć wydać je na GPL zamiast MIT.

Dopóki jesteś autorem, to Ty decydujesz.

Tak więc najbardziej restrykcyjną osobą w historii jest autor, niezależnie od tego, na którą licencję się zdecyduje;)

hakre
źródło
1
„Kod MIT w pakiecie będzie nadal dostępny pod MIT” nie jestem tego do końca pewien. projekt GPL + MIT powinien oddać projekt open source, w tym część MIT. Z drugiej strony LGPL jest mniej inwazyjne dla całego projektu.
magallanes
13
Chociaż wyjaśnisz w dalszej części swojej odpowiedzi, bardzo mylące jest rozpoczęcie od stwierdzenia, że ​​„możesz” dołączyć kod na licencji GPL do projektu na licencji MIT. Projekt, który był pierwotnie licencjonowany przez MIT, nie może być już rozpowszechniany w całości na licencji MIT, jeśli zawiera kod dostępny tylko na GPL.
antinome
3
Mylące jest również twierdzenie, że restrykcyjność jest subiektywna. Rozsądnym i nie subiektywnym pytaniem jest pytanie „jakie działania mogę zgodnie z prawem wykonać z tymi plikami, które uzyskałem?” W ramach GPL ten zestaw działań jest w rzeczywistości odpowiednim podzbiorem tego, czym te działania byłyby objęte MIT.
antinome
1
@hakra: Włączenie kodu na licencji GPL do projektu na licencji MIT nie jest możliwe, ponieważ wynikowa całość nie jest już na licencji MIT, nawet jeśli jej nie rozpowszechniasz. (Gdyby tak było, wówczas warunki licencji MIT będzie pozwalają go rozpowszechniać!)
antinome
9
tl; dr: aplikacja na licencji MIT może zawierać kod GPL, ale wynikowa aplikacja nie jest na licencji MIT.
antinome,
16

Masz rację, że GPL jest bardziej restrykcyjna niż licencja MIT.

Nie możesz zawrzeć kodu GPL w produkcie licencjonowanym przez MIT. Jeśli rozpowszechniasz połączone dzieło, które łączy kod GPL i MIT (z wyjątkiem niektórych szczególnych sytuacji, np. „Zwykła agregacja”), dystrybucja ta musi być zgodna z GPL.

Możesz dołączyć kod na licencji MIT do produktu GPL. Cała połączona praca musi być rozpowszechniana w sposób zgodny z GPL. Jeśli dokonałeś zmian w częściach MIT kodu, będziesz musiał opublikować źródło tych zmian, jeśli rozpowszechniasz aplikację, która zawiera kod GPL i MIT.

Jeśli jesteś właścicielem praw autorskich do kodu GPL, możesz oczywiście zdecydować się na wydanie tego kodu na licencji MIT - w takim przypadku jest to twój kod i możesz go opublikować na dowolnej liczbie licencji.

JosephH
źródło
3
chyba że projekt jest objęty podwójną licencją, na przykład jquery.
buggedcom
7
@buggedcom - Możesz podwójnie licencjonować części, które były na licencji MIT, ale nie możesz podwójnie licencjonować połączonej biblioteki MIT / GPL - musi być licencjonowana tylko w ramach GPL. (Nie można brać części na licencji GPL i ponownie udzielać na nie licencji MIT, ponieważ jest to sprzeczne z warunkami GPL). W przypadku jQuery właściciele praw autorskich do kodu udostępnili go na podwójnej licencji, więc nie stanowi to problemu, ale gdyby „pożyczyli” jakiś kod GPL z innego miejsca, nie byliby już w stanie licencjonować MIT połączonego dzieła .
Mark H
AFAIK to nie do końca prawda. Według FSF GPL jest zgodna z licencją MIT [1] Niestety nie zmienia to faktu, że sam projekt nie jest już w pełni objęty licencją MIT… czego ludzie zwykle by się spodziewali. Nie byłbyś już w stanie używać projektu jako całości w kontekście komercyjnym bez wydania kodu. Aby uniknąć tego zamieszania, lepiej nie umieszczać kodu GPL w projekcie na licencji MIT. To, że nie możesz, jest jednak złe. [1] gnu.org/licenses/license-list.html#SoftwareLicenses
tcurdt,
... ale wydaje mi się, że zależy to od tego, co zdefiniujesz jako „produkt”
tcurdt,
2
Produkt na licencji MIT (być może „aplikacja” byłoby lepszym określeniem) nie może zawierać kodu GPL. Możesz dodać kod GPL do produktu MIT, ale wynikowa aplikacja może być rozpowszechniana tylko na licencji GPL. Nigdy wcześniej nie widziałem, aby ktoś opisywał aplikację, którą można rozpowszechniać wyłącznie na warunkach GPL, jako „produkt na licencji MIT”. Gdyby licencje nie były „kompatybilne”, nie można by w ogóle wyprodukować połączonego dzieła - fakt, że są one zgodne, oznacza, że ​​można wyprodukować połączone dzieło, które można rozpowszechniać i jest objęte licencją GPL.
JosephH
5

IANAL, ale tak jak ja to widzę ....

Chociaż można łączyć kod GPL i MIT, GPL niszczy. Co oznacza, że ​​pakiet jako całość podlega ograniczeniom GPL. Ponieważ jest to bardziej restrykcyjne, nie można go już używać w oprogramowaniu komercyjnym (lub raczej zamkniętym). Co również oznacza, że ​​jeśli masz projekt MIT / BSD / ASL, nie będziesz chciał dodawać zależności do kodu GPL.

Dodanie zależności GPL nie zmienia licencji twojego kodu, ale ograniczy to, co ludzie mogą zrobić z artefaktem twojego projektu. Z tego powodu ASF nie zezwala na zależności od kodu GPL w swoich projektach.

http://www.apache.org/licenses/GPL-compatibility.html

tcurdt
źródło
1
+1 W rzeczywistości Microsoft doskonale wskazuje na ten problem, GPL jest wirusowa, ponieważ zamienia każdy projekt w open source.
magallanes
10
To nie jest problem . GPL jest wirusowa z założenia. Jest przeznaczony dla osób, które chcą, aby ich kod był darmowy, aby inne osoby mogły z niego korzystać w dowolny sposób, ale wymagają również, aby inne osoby, które publikują kopie tego oprogramowania lub pochodnej, szanowały użytkowników w ten sam sposób. GPL dotyczy użytkowników . Nie chodzi o maksymalizację zysków przez firmy poprzez monopole egzekwowane przez państwo, więc fakt, że jest on rekursywny, jest w rzeczywistości jego pięknem i siłą, a nie „problemem”, który Microsoft może „doskonale wskazać”. Nie trzeba specjalnego wglądu, aby rozpoznać, że GPL jest wirusowa - Wikipedia wystarczy.
Carl Smith