LGPL setzt voraus , dass Benutzer in der Lage sein müssen, das Programm mit einer anderen Version der Bibliothek zu verknüpfen, wenn ein Programm die LGPL-ed-Bibliothek verwendet:
...
d) Führen Sie einen der folgenden Schritte aus:
0) Übermitteln Sie die entsprechende Minimalquelle unter den Bedingungen dieser Lizenz und den entsprechenden Anwendungscode in einer Form, die für den Benutzer geeignet ist, und unter Bedingungen, die es ihm ermöglichen, die Anwendung mit einer modifizierten Version der verknüpften Version zu rekombinieren oder erneut zu verknüpfen, um eine zu erstellen modifiziertes kombiniertes Werk, wie in Abschnitt 6 der GNU GPL für die Übermittlung der entsprechenden Quelle angegeben.
1) Verwenden Sie einen geeigneten Mechanismus für gemeinsam genutzte Bibliotheken, um eine Verbindung mit der Bibliothek herzustellen. Ein geeigneter Mechanismus ist einer, der (a) zur Laufzeit eine Kopie der Bibliothek verwendet, die bereits auf dem Computersystem des Benutzers vorhanden ist, und (b) ordnungsgemäß mit einer modifizierten Version der Bibliothek funktioniert, die mit der verknüpften Version kompatibel ist.
...
In einigen Fällen kann dies jedoch erhebliche Schwierigkeiten bereiten. Insbesondere werden Haskell-Programme fast immer statisch kompiliert. Darüber hinaus führt der Compiler modulübergreifende Optimierungen durch, sodass es nicht möglich ist, einen Teil des Codes herauszunehmen und durch einen anderen zu ersetzen. Es ist also sehr schwer, diese Bedingung zu erfüllen. (Siehe diesen Link im Haskell Wiki.)
Dynamische Verlinkung wäre eine Lösung, aber in vielen Fällen ist dies nicht möglich. Beispielsweise:
- Einige Plattformen verfügen möglicherweise überhaupt nicht über dynamische Verknüpfungen.
- Einige Sprachen verfügen nicht über die Möglichkeit der dynamischen Verknüpfung. Oder es ist nicht möglich, Module plattformübergreifend zu gestalten.
- In einigen Fällen würde eine dynamische Verknüpfung wichtige Optimierungen verhindern. Während ich sagen würde, dass dies selten ein ernstes Problem ist, kann der Leistungsverlust in Sprachen wie Haskell beträchtlich sein.
Aus diesem Grund suche ich nach einer Standard-LGPL-ähnlichen Lizenz, für die kein erneutes Verknüpfen erforderlich ist (und ich verstehe, dass dies den Benutzern ein wenig Freiheit einräumt). Einige Projekte verwenden eine eigene Modifikation der LGPL, zum Beispiel wxWidgets . Aber ich würde lieber eine Standardlizenz verwenden, die etwas offizieller ist, vielleicht von einigen Rechtsexperten geprüft und mit der (L) GPL kompatibel. Gibt es solche?
(Es würde mich auch interessieren, ob es einige unvorhergesehene Folgen einer solchen Änderung der LGPL gibt.)
quelle
Antworten:
Ich bin überrascht, dass niemand die Mozilla Public License erwähnt hat. Es ähnelt der LGPL, erlaubt jedoch statische Verknüpfungen. MPL Version 2 ist mit der GPL / LGPL kompatibel.
Mozilla Public License (MPL 2.0) gegen Lesser GNU General Public License (LGPL 3.0)
quelle
wxwidgets ist lizenziert unter im Wesentlichen = LGPL + statischer Verlinkung
quelle
IANAL, aber ich bin zu der Überzeugung gelangt, dass eine Lösung darin besteht, Objektdateien für Nicht-LGPL-Teile bereitzustellen. Auf diese Weise kann der Benutzer das Programm erneut verknüpfen und so den LGPL-Teil ändern, um die Anforderungen der LGPL zu erfüllen.
Mit anderen Worten, Sie benötigen ein Quellpaket mit LGPL-Quellen und kompilierten Objektdateien mit Nicht-LGPL-Code. Natürlich müssen Sie dann Objektdateien für jede Architektur bereitstellen, für die Sie die Binärdateien freigeben, aber ich denke, das ist kein großes Problem.
Aus Sicht der Entwicklung ist es möglicherweise am einfachsten, wenn das Build-System beim Erstellen der Binärdatei für die Verteilung gleichzeitig auch das Quellpaket erstellt.
quelle
Ich habe eine mit Google: OpenScales-Lizenz gefunden
Es ist jedoch kein Standard und ich weiß nicht, ob es einen gibt.
quelle
Wie würden Sie weiterhin die Nutzerfreiheit garantieren? Ich glaube, die "richtige" Antwort ist, ein Shim statisch zu verknüpfen, das die Bibliothek dynamisch lädt.
quelle