Mozilla Public License (MPL 2.0) gegen Lesser GNU General Public License (LGPL 3.0)

23

Ich möchte eine in einer klassenbasierten, objektorientierten Programmiersprache (Java) geschriebene Softwarebibliothek auf einem webbasierten Quellcode-Hosting-Service veröffentlichen, mit der Forks des Projekts per Pull in das Hauptprojekt (GitHub) eingebunden werden können Anfragen). Ich habe im Internet recherchiert und viel darüber nachgedacht, wie ich die Software lizenzieren soll. Bin ich in den folgenden Annahmen korrekt (aus IANAL- Sicht)?

  • Sowohl LGPL als auch MPL unterstützen die Weitergabe von Änderungen an der LGPL / MPL-lizenzierten Software, die in anderen Softwareprojekten verwendet wird. Anstatt von den Benutzern der geänderten Bibliothek zu verlangen, dass sie einen separaten Zweig der Bibliothek hosten , kann ich dafür werben , zur ursprünglichen Bibliothek beizutragen (z. B. über Pull-Anforderungen).

  • Der Hauptunterschied besteht darin, wie MPL / LGPL-Lizenzcode in das Projekt eingebunden werden muss. MPL-Quellcodedateien können direkt in ein (möglicherweise) proprietäres Softwareprojekt kopiert werden ( statische Verknüpfung ), während LGPL-Lizenzcode dynamisch verknüpft werden muss (lose Verknüpfung mit dem möglicherweise proprietären Softwareprojekt, damit Endbenutzer die lizenzierte Software austauschen können Bibliothek für eine andere Version der lizenzierten Softwarebibliothek).

  • Dynamische Verknüpfungen und damit LGPL stellen zusätzliche Hindernisse für das Packen des proprietären Softwareprodukts dar, ohne dass mehr Beiträge zur Open-Source-Softwarebibliothek geleistet werden als durch statische Verknüpfung (und damit MPL). Es gibt eine modifizierte LGPL, die eine statische Verknüpfung ermöglicht.

  • Es gibt keine weiteren relevanten Unterschiede (aus IANAL- Sicht).

  • Die älteren Lizenzversionen passen nicht so gut zu meinen Bedürfnissen wie die neuesten.

Wie Sie sehen, besteht meine Hauptanforderung darin, dass Änderungen an der Softwarebibliothek, die sich für die breite Öffentlichkeit als nützlich erweisen könnten, Open Source bleiben, ohne die Verwendung der Softwarebibliothek in einem proprietären Produkt einzuschränken.
Es gibt keine Lizenz, die auch die Veröffentlichung von Erweiterungen der Softwarebibliothek, die für das Originalwerk relevant sind, als Open Source erfordert , da der Umfang des Begriffs beliebig klein / groß sein kann und somit als GPL enden kann, was nicht der Fall sein kann in einem proprietären Produkt verwendet (ohne die gesamte Quelle freizugeben).

Ich bin versucht, die modifizierte LPGL zu verwenden , aber andererseits von der Unbeliebtheit entmutigt. Aufgrund der obigen Punkte bevorzuge ich MPL.
Frage: Sind meine obigen Aussagen korrekt? Welche Lizenz sollte ich unter Berücksichtigung meiner Anforderungen auswählen?


Lösung: Mit Hilfe der Diskussion in der akzeptierten Antwort entscheide ich mich, mich an die MPL zu halten, weil sie beliebt ist , frei verlinkt werden kann und eine offizielle, nicht modifizierte Lizenz ist .

mucaho
quelle
4
Ich werde Ihre Frage dem Vorschlag für eine Q & A-Site zur Open Source-Lizenzierung hinzufügen .
Max Truxa
Eine zusätzliche Frage und Antwort zur Softwarelizenzierung wäre meiner Meinung nach sehr nützlich. Vielen Dank!
Mucaho
1
Ich sehe da drin keine Frage. Können Sie klarstellen, was Ihre eigentliche Frage ist?
Bart van Ingen Schenau

Antworten:

14

Ich glaube, Sie haben die Unterschiede zwischen der Mozilla Public License und der GNU Lesser General Public License genau angegeben, und beide mögen Ihren Anforderungen gerecht werden, aber Sie überspringen den wichtigsten Unterschied zwischen den beiden Lizenzen:

Wer kann neue Versionen erstellen?

Sowohl die MPL (Abschnitt 10) als auch die LGPL (Abschnitt 14) gewähren in ihrer Lizenz das Recht, die aktuelle Version durch eine neuere Version zu ersetzen, und es bestehen keine tatsächlichen Einschränkungen hinsichtlich der Inhalte dieser Lizenzen. Während es höchst unwahrscheinlich ist, dass entweder die Mozilla Foundation oder die Free Software Foundation etwas so Verrücktes tun, wie beispielsweise eine Klausel einzuführen, die besagt, dass "alle Beiträge zu dieser Software unser Eigentum werden" Organisationen werden eine neue Lizenzversion veröffentlichen, die Ihnen nicht gefällt.

Womit ein weiterer Punkt zur Verwendung einer "modifizierten LGPL" angesprochen wird.


Eine modifizierte Lizenz ist nicht dieselbe Lizenz!

Während Sie ziemlich erstaunliche Fähigkeit haben eine eigene Lizenzbedingungen zu spezifizieren, und im Wesentlichen sagen könnte „können Sie dies gemäß der GPL verteilen, aber Sie müssen meinen Namen in Ihr Guthaben setzen und zahlen mir 1% aller Einnahmen , die Sie erzeugen“ , Jedes Mal, wenn Sie dies tun, erstellen Sie eine neue Lizenz, die auf der Arbeit einer anderen Person basiert. Dies bedeutet, dass Sie NICHT die MPL oder die LGPL verwenden, sondern eine neue "mucaho-Lizenz".

Das bedeutet, dass Sie wahrscheinlich keine Hilfe vom Autor Ihrer ursprünglichen Lizenz erhalten, wenn Sie Ihre Interpretation der Lizenz in einem Gerichtssaal verteidigen müssen, und es ist durchaus möglich, dass sie Klage erheben, um zu sagen, dass IHRE Version gelten soll und nicht deins.


Beides sind natürlich Kleinigkeiten. Auch die "Beliebtheit der Lizenzen" spielt keine Rolle, es sei denn, Sie erwarten, dass Ihr Code direkt in größere Projekte integriert wird.

Persönlich denke ich, dass die MPL die bessere Wahl ist, wenn Sie proprietäre Kompatibilität bevorzugen oder wenn Sie zwischen der tatsächlichen MPL und einer anderen Lizenz wählen, die Sie manuell basierend auf der LGPL bearbeiten müssen. Wenn Sie keinen Grund haben, die MPL nicht zu verwenden, entscheiden Sie sich für etwas, das von einer Stiftung unterstützt wird, anstatt für etwas, das Sie ohne jegliche Hilfe in einem Gerichtssaal zurücklassen könnte.

DougM
quelle
In Bezug auf die Erstellung neuer Versionen ist der Fall zu erwähnen, dass die FSF eine Bestimmung schafft, die es Wikipedia ermöglicht, Inhalte als CC-SA neu zu lizenzieren.
Christian
Vielen Dank! Nur zur Verdeutlichung: @DougM sagte: "Sowohl die MPL (Abschnitt 10) als auch die LGPL (Abschnitt 14) gewähren in ihrer Lizenz das Recht, die aktuelle Version durch eine neuere Version zu ersetzen . " Ich kann immer noch wählen, ob meine Software unter der alten Version lizenziert bleibt oder ob ich auf die neuere Lizenzversion wechseln möchte, oder nicht (siehe MPL2.0, Abschnitt 10.2). Wenn ich also den Punkt über neue Versionen richtig interpretiere, sind nur die Benutzer meiner LPGL / MPL-Bibliothek im Nachteil, wenn ich zu einer neueren Version wechsle und diese neuere Version nicht zu ihnen passt?
Mucaho
2
Weder die LGPL noch die MPL verfügen über einen Mechanismus zum Widerrufen einer Lizenzgewährung. Sobald jemand den Code hat, dann ist es ihnen unter den Bedingungen dieser Lizenz für immer . Und sie können entscheiden, ob sie der damals bestehenden Lizenz oder einer Nachfolgelizenz folgen oder nicht. (Sie können neue Distributionen auf eine neue Version umstellen, aber jeder, der cna ausgeben möchte, tut dies auch. Auch wenn seine "Gabelung" keinen anderen Teil Ihres Programms
ändert
Ah, danke für die Klarstellung! Würden Sie bitte erklären, "dass sie das Recht haben, die aktuelle Version durch eine neuere Version zu ersetzen" ? Bedeutet das (in einem unwahrscheinlichen Fall), dass die FSF eine Klausel einführen könnte, die besagt, dass "alle Beiträge zu dieser Software unser Eigentum werden", und zwar rückwirkend in die bereits vorhandene LGPLv3.0 ?
Mucaho
1
Sie könnten es versuchen , aber das würde wahrscheinlich nicht gelingen. Sie könnten jedoch sagen: "Sie können den Namen eines Projekts stehlen, das Sie für die LGPL4 freigegeben haben" oder eine andere unerwartete Version. (Sie werden das wahrscheinlich nicht tun, aber sowohl sie als auch Mozilla KÖNNTEN es technisch KÖNNEN, obwohl die Gerichte es ihnen möglicherweise nicht
erlauben
3

Die Antwort von DougM und VRE macht einen fairen Punkt. MPLv2 und LGPLv3 sind mit statischen Ausnahmen in Bezug auf die Ereignisse, die den Copyleft auslösen würden, identisch. Ich denke jedoch, dass wir einen weiteren sehr wichtigen Unterschied zwischen LGPL und MPL vermissen. Wenn der Copyleft ausgelöst wird, gilt der Copyleft für:

  • für MPL: zu genau den gleichen Dateien Ihrer ursprünglichen Bibliothek
  • für LGPL: auf die "Arbeit, die auf der Bibliothek basiert" im Gegensatz zu der "Arbeit, die die Bibliothek verwendet". So kann die LGPL sein Copyleft möglicherweise auf neue Dateien ausweiten.

Edge-Case: Mithilfe von MPL können Benutzer ihre Verbesserungen nicht freigeben

MPL ist eine Copyleft-Lizenz auf Dateiebene. Wenn jemand es in ein größeres Projekt einbettet (statisch oder dynamisch) und eine Änderung an Ihrer Datei vornimmt, muss er nur die an dieser bestimmten Datei vorgenommenen Änderungen freigeben.

Wenn Sie Bedenken haben, die Integrität Ihrer Codebasis offen zu halten, gibt es Randfälle, in denen der Copyleft-Effekt von MPL möglicherweise nicht ausreicht.

Beispielsweise könnte jemand eine der Hauptdateien Ihres Projekts nehmen, "import my_private_new_file" hinzufügen und Ihre Hauptmethode ändern, indem er beispielsweise "my_private_new_file.newAwesomeFeature.run ()" hinzufügt .

Auf diese Weise kann er Ihrem Projekt neue Funktionen hinzufügen, während er nur die geänderte Hauptdatei freigibt und die tatsächliche Logik der neuen Funktion in "my_private_new_file" geschlossen hält .

Wenn Sie die Hauptdatei wieder in der Community haben, erhalten Sie lediglich die Information, dass Sie eine neue Funktion hinzugefügt haben. Sie können diese neue Funktion jedoch nicht offen einbinden -Bezogen auf das Problem, das Ihre Bibliothek zu lösen versucht.

Natürlich ist das ein Randfall und es ist ziemlich unwahrscheinlich, dass jemand dies tun möchte, aber es ist ein Risiko, das Sie bei der Verwendung von MPLv2 berücksichtigen müssen.

Die LGPL wurde geschrieben, um solche Verhaltensweisen zu verbieten. Sehen:

Ich zitiere die ursprüngliche LGPL-Lizenz:

Achten Sie genau auf den Unterschied zwischen einer "auf der Bibliothek basierenden Arbeit" und einer "Arbeit, die die Bibliothek verwendet". Ersterer enthält Code, der aus der Bibliothek stammt, während letzterer mit der Bibliothek kombiniert werden muss, um ausgeführt werden zu können.

Das Copyleft gilt nur für die "bibliotheksbasierte Arbeit". Was ist nun eine "bibliotheksbasierte Arbeit" in der Praxis? Es lässt Raum für Interpretationen. Das ist nicht nur eine nette Sache, denn es bedeutet, dass die Einhaltung Ihrer Lizenz komplizierter und daher unheimlich wird. Es könnte dazu führen, dass manche Leute Ihre Bibliothek einfach nicht benutzen.

In diesem Sinne ist LGPL restriktiver als MPL, schützt aber auch die Integrität des Projekts.

MPL erleichtert Benutzern aus der proprietären Welt das Reparieren und Verwenden Ihrer Bibliothek, während das Fix weiterhin freigegeben werden muss

Ein Vorteil für MPL besteht darin, dass ein Benutzer, der einen Fehler in Ihrer Bibliothek findet, diesen direkt in der Datei beheben kann, ohne seinen gesamten Code preisgeben zu müssen, sondern nur den Fehler zu beheben. Wenn er seine Arbeit an einen Kunden verteilt, kann er praktisch nur einen Link zu einem Zweig Ihres Projekts bereitstellen, der den Fix enthält, und er ist gut.

Durch die Verwendung von LGPL werden die Dinge komplizierter. Wenn jemand Ihr Projekt fragt, einen Fehler behebt und es statisch in seine proprietäre Software einbettet, muss er die "auf der Bibliothek basierende Arbeit" unter der LGPL an seine Benutzer verteilen. Dies ist eine eher obskure Vorstellung, insbesondere wenn die Bibliothek statisch eingebettet ist ... In dieser Hinsicht glaube ich, war es der ursprüngliche Grund, warum es in der ursprünglichen LGPL keine "statische" Ausnahme gibt. Es macht die Identifizierung der "Arbeit auf der Grundlage der Bibliothek" trivial: Es ist die dynamische Bibliothek, die Sie in Ihrer proprietären Software aufrufen.

Infolgedessen macht es MPL proprietären Anbietern interessanterweise leichter, Fixes zu verwenden UND an Ihre Bibliothek zu senden als LGPL.

Gleichzeitig haben proprietäre Anbieter in den meisten Fällen weder die Ressourcen noch die Zeit, in Ihre komplizierte Bibliothek einzutauchen, und würden dies höchstwahrscheinlich nicht selbst beheben. Sie würden lieber ein Problem in Ihrem GitHub-Repo eröffnen oder eine E-Mail in der Mailingliste senden und auf Ihre Korrektur warten.

In dieser Hinsicht erzwingt die LGPL mehr diese Art von Verhalten. Aber ist die Durchsetzung wirklich notwendig?

Fazit

Die Wahl zwischen LGPL und MPL ist eine schwierige Frage und hängt, wie bei Softwarelizenzen üblich, von Ihrem Ziel ab. Beide Lizenzen sind sehr ähnlich, aber gleichzeitig sehr unterschiedlich. Sie wurden für sehr unterschiedliche Ziele und Philosophien entwickelt.

Die LGPL wurde von der Free Software Foundation entwickelt, um die weit verbreitete Nutzung von Bibliotheken für freie Software in der proprietären Welt zu ermöglichen. Dabei wurde jedoch stets die Idee berücksichtigt, für freie Software zu werben und gegen proprietäre Software zu kämpfen. Es ist alles Teil einer Strategie gegenüber ihrer Ideologie. Siehe: https://www.gnu.org/licenses/why-not-lgpl.html

MPL ist eine praktische Lizenz, die von Mozilla entwickelt wurde, um eine Art Share-Alike für die Originalbibliothek zu erzwingen und gleichzeitig die Leute zu ermutigen, proprietäre Software und Add-Ons (einschließlich Mozilla selbst) zu erstellen. Diese Vorgehensweise wird vom FSF autorisiert LGPL hält aber trotzdem für schädlich.

Im Wesentlichen wird MPLv2 von vielen als zulässige Lizenz angesehen, während LGPLv3, einschließlich mit statischen Ausnahmen, selten so bezeichnet wird.

BEARBEITEN

Ich habe vergessen, etwas Wichtiges zu erwähnen. LGPLv3 (mit oder ohne statische Ausnahme) verbietet die Aktivierung . Sie mögen denken, es ist ein "Detail", aber es ist tatsächlich nicht, abhängig von Ihrem Ziel. Interessieren Sie sich für Benutzer Freiheit? Dann ist es kein Detail. Interessiert es Sie, dass Ihre Bibliothek auf dem Apple-Gerät verwendet werden kann? VLC kümmert sich mehr um die Verwendung, deshalb haben sie sich für LGPLv2 entschieden, das keine solche Einschränkung enthält. Ebenso ist dies einer der Gründe, warum Linux weiterhin GPLv2 verwendet . MPLv2 unterliegt ebenfalls keiner Einschränkung hinsichtlich der Unterteilung, da es sich offensichtlich um eine Lizenz handelt, die unter Berücksichtigung der eher "praktischen" Open Source-Philosophie und nicht der FSF-Ideologie erstellt wurde.

Es könnte andere "kleinere" Dinge geben, die ich verpasst habe.

N. Gimenez
quelle