Gibt es eine modifizierte LGPL-Lizenz, die statisches Verknüpfen erlaubt?


21

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.)


Sie können in Haskell keine externen Bibliotheken dynamisch verknüpfen ? Das muss verdammt unpraktisch sein.
Robert Harvey

2
Wenn Ihr gesamtes Projekt FOSS ist, ist dies möglicherweise kein Problem. Richten Sie sie auf die Quellen und lassen Sie sie es aussortieren! :-)
Peter Rowell

2
Was würde diese Lizenz von Nicht-Copyleft-Lizenzen unterscheiden?

2
@delnan Es gibt viele andere Dinge in der LGPL, die oft wünschenswert sind. Beispielsweise muss eine Modifikation (L) GPL sein oder die Aktivierung ist untersagt .
Petr Pudlák

Die wxWindows-Lizenz ist ungefähr so ​​offiziell wie es nur geht, vorausgesetzt, sie wurde vom OSI genehmigt .
Joachim Sauer

Antworten:



12

wxwidgets ist lizenziert unter im Wesentlichen = LGPL + statischer Verlinkung

... im Wesentlichen die L-GPL (Library General Public License), mit der Ausnahme, dass abgeleitete Werke in binärer Form zu den eigenen Bedingungen des Nutzers verbreitet werden dürfen. Dies ist eine Lösung, die sowohl diejenigen zufriedenstellt, die GPL-Software mit wxWidgets erstellen möchten, als auch diejenigen, die proprietäre Software erstellen.

wxWidgets ist zertifizierte Open-Source-Software Zu den Diskussionsteilnehmern, die zu dieser Entscheidung geführt haben, gehören die Abisource-Leute , Robert Roebling, Julian Smart, Markus Fleck, Karsten Ballueder und einige Ratschläge von Richard Stallman. Richard hat bestätigt, dass die neue Lizenz mit GPL-Anwendungen kompatibel ist. Es gibt jedoch keine wesentlichen Einschränkungen für proprietäre Anwendungen.

Die wxWindows-Lizenz wurde von der Open Source-Initiative genehmigt. Die Lizenz finden Sie auf ihrer Website hier ...


0mq ist auch unter LGPL mit einer expliziten Ausnahme für statische Verknüpfungen lizenziert.
Trevor Powell

4

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.


Haben Sie ein reales Szenario, in dem dies geschehen ist?
Knocte

3

Ich habe eine mit Google: OpenScales-Lizenz gefunden

OpenScales wird unter Version 3 der GNU Lesser Public License (LGPL, hier verfügbar ) veröffentlicht, mit einer Ausnahme im Zusammenhang mit statischen Verknüpfungen (siehe unten) ...

Zusätzlich zum LGPL-Lizenztext gilt für OpenScales die Ausnahme von den LGPL-Bedingungen:

Als besondere Ausnahme zur GNU Lesser General Public License, Version 3, dürfen Sie eine ausführbare Datei aus einem kombinierten Werk an einen Dritten übermitteln, die statisch oder dynamisch Teile dieser Bibliothek in der ausführbaren Datei verknüpft, wobei jedoch die minimale entsprechende Quelle übermittelt wird ohne die Notwendigkeit, den entsprechenden Anwendungscode gemäß Abschnitt 4d0 der GNU Lesser General Public License zu übermitteln, sofern Sie eine nicht modifizierte öffentlich verteilte Version der Bibliothek verwenden. Diese Ausnahme macht keine anderen Gründe ungültig, warum die ausführbare Datei möglicherweise unter die GNU Lesser General Public License oder die GNU General Public License fällt.

Es ist jedoch kein Standard und ich weiß nicht, ob es einen gibt.


1

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.


Ja, das ist die beste Lösung. In einigen Fällen ist jedoch keine dynamische Verknüpfung möglich. Einige Sprachen haben diese Möglichkeit nicht. Oder einige Plattformen haben diese Möglichkeit nicht.
Petr Pudlák

Linker tun genau das, wenn Sie dynamisch mit der Bibliothek verknüpfen.
Calmarius
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.