Darf ich das mit der LGPL?

16

Ich plane, eine kommerzielle Software mit einer LGPL-Software zu entwickeln.

In der LGPL-Software, die ich verwende, sind einige Funktionen in einer Klasse nicht vollständig implementiert. Ich möchte den LGPL-Code so ändern, dass die Klasse und nicht implementierte Funktionen außerhalb der DLL sichtbar gemacht werden, indem Sie dllexport vor der Klasse und das virtuelle Schlüsselwort vor der Funktion hinzufügen.

Dann plane ich, diese Funktionen in meiner proprietären Software zu implementieren. Ich bin bereit, den geänderten LGPL-Code zu verbreiten, aber keine proprietäre Software, die Funktionen wie gewünscht implementiert.

Verstößt das gegen die LGPL-Nutzungsbedingungen?

Daenyth
quelle
6
Das Problem mit Ihrer Frage ist, dass Sie nicht versuchen, die Lizenz in dem Geist zu verwenden, in dem sie geschrieben wurde. Wir können wahrscheinlich Fragen zur beabsichtigten Bedeutung von Lizenzen beantworten, aber wir können nicht zuverlässig auf rechtliche Details eingehen . Dafür können wir nur einen Anwalt empfehlen. Darüber hinaus hängt Ihre Tätigkeit von einer rechtlichen Frage ab (was ist eine abgeleitete Arbeit der LGPLed-Software?), Die in den USA in der Rechtsprechung nicht geklärt wurde, und ich habe unter echten Anwälten unterschiedliche Meinungen gesehen. (Ich bin kein Anwalt, aber ich habe diese Probleme beiläufig verfolgt.)
David Thornley
Schwer zu sagen. Lesen Sie dies: javalobby.org/java/forums/t15903.html - sie sprechen über Java, aber es scheint für jede OO-Sprache anwendbar zu sein.
Mike Baranczak

Antworten:

26

Dies ist eine komplexe Frage, aber ich glaube, dass das, was Sie vorschlagen, nicht erlaubt ist.

Sie schlagen vor , das Hinzufügen Haken in die Bibliothek zu machen einfacher für Sie zu Unterklasse , die Bibliothek und somit zumindest. den Geist der LGPL zu umgehen .

Das Problem ist, wenn Sie eine Klasse, die der LGPL- Lizenz unterliegt, in Ihren eigenen Code unterteilen, wird Ihre Arbeit zu einer auf der Bibliothek basierenden Arbeit und nicht zu einer Arbeit, die die Bibliothek verwendet, was bedeutet, dass Ihr Code ein Derivat ist Arbeiten , die unter Abschnitt 2 ( LGPL v2.1 ) und nicht unter Abschnitt 6 ( LGPL v2.1 ) behandelt werden. Dh es unterliegt der LGPL !

Ich denke, dass Stephen Colebourne eine gute Zusammenfassung über Javalobby bietet.

Ich bin kein großer Fan von kniffligen Gesprächen mit Ihren Anwaltsvorschlägen , aber in diesem Fall denke ich, dass es sich lohnt, dies zu tun, wenn Sie vorhaben, fortzufahren, da Sie sonst möglicherweise einen bösen Brief von der Freien Software erhalten Rechtsabteilung der Stiftung .

Alternativ können Sie die FSF direkt fragen . Von ihrer Kontaktseite :

Bei Fragen zur Lizenzierung freier Software und zum Urheberrecht

Bitte überprüfen Sie unsere Lizenzierungs-FAQ , die Lizenzliste , allgemeine Copyleft-Informationen und verwandte Seiten . Wenn noch Fragen offen sind, senden Sie eine E-Mail an <[email protected]>.

Im übrigen ist in der damit verbundenen Frage Reflexion und die LGPL , gbjbaanb Antworten mit der 3.0 Perspektive LGPL .

Mark Booth
quelle
4
Ich mag "die Frage der FSF" Vorschlag
ZJR
Meiner Lektüre nach wollten sie mehr Funktionen in der LGPL-Bibliothek verfügbar machen. Solange die resultierende Bibliothek noch eine LGPL ist und ein Benutzer der OP-Software die Freiheit hat, die Bibliothek durch ihre eigene zu ersetzen - ich würde mich freuen
Martin Beckett
3
@MartinBeckett - Nicht ganz, der Fragesteller versucht, die LGPL zu umgehen, indem er die Bibliothek modifiziert, um es ihm zu erleichtern, die Bibliothek in seinem geschlossenen Quellcode heimlich zu modifizieren. Wenn er seine neue Bibliotheksfunktionalität direkt zur LGPL hinzufügen und diese dann in seinem eigenen Code verwenden würde, wäre dies kein Problem. Es ist die Tatsache, dass er versucht, seine eigene neue Funktionalität als geschlossene Quelle zu halten und dennoch Teil der Bibliothek zu sein, das ist das Problem.
Mark Booth
6
In LGPL 3.0 heißt es: "Das Definieren einer Unterklasse einer von der Bibliothek definierten Klasse wird als Verwendungsmodus einer von der Bibliothek bereitgestellten Schnittstelle angesehen." Das sollte also zumindest unter LGPL 3.0 erlaubt sein.
David
3
@ David - Ich glaube, wenn Sie die LGPL-Bibliothek so ändern, dass Sie eine Funktion außer Kraft setzen können, die normalerweise nicht außer Kraft gesetzt werden kann, erkennen Sie stillschweigend an, dass Ihr Code so eng gekoppelt ist, dass er eher als 'basierend auf' als als 'basiert' 'used by' Beziehung zur Bibliothek, so dass das schwache Copyleft aktiviert wird.
Mark Booth
13

Standard Ich bin kein Rechtsanwalts-Haftungsausschluss.

LGPL erfordert Änderungen am Quellcode der Bibliothek, die an alle Personen verteilt werden müssen, die Ihren Code verwendet haben. Es ist nicht erforderlich, dass Ihr Code, der die Bibliothek verwendet, Open-Source ist und unter derselben Lizenz veröffentlicht wird.

Wikipedia für eine detailliertere, aber nicht anwaltliche Beschreibung der LGPL, einschließlich eines Abschnitts über die Klassenvererbung .

unholysampler
quelle
+1. Zusammenfassend: Wir glauben, dass es nicht gegen die LGPL verstößt (aber gegen IANAL)
MarkJ
@MarkJ - Wie ich in meiner Antwort erläutere , bin ich mir nicht sicher, ob die gestellte Frage einfach eine Frage der Klassenvererbung ist.
Mark Booth
9
Ich denke, die Leute tippen einfach gerne IANAL, weil es "ANAL" enthält.
g33kz0r
5

"Ich möchte den LGPL-Code ändern ..." Dies sagt genug aus, dass Sie den geänderten Code freigeben müssen . Das Erweitern, ob es sich bei dem geänderten Code um eine abgeleitete Arbeit handelt oder nicht, ist umstritten und unterliegt in diesem Fall der LGPL.

Sie versuchen anscheinend, die LGPL zu umgehen, was in diesem Fall mit diesen Techniken nicht möglich ist.

Wenn es sich um eine abgeleitete Arbeit handelt, müssen die Bedingungen des Programms "Änderungen für den eigenen Gebrauch und Reverse Engineering zum Debuggen solcher Änderungen" zulassen. Ob eine Arbeit, die ein LGPL-Programm verwendet, eine abgeleitete Arbeit ist oder nicht, ist eine rechtliche Frage.

Aber wenn Sie versuchen, die LGPL zu umgehen, würde ich mich an die FSF wenden, wie von Mark Booth empfohlen .

Gemeinschaft
quelle
1
Das Problem ist, dass die LGPL einige Formen abgeleiteter Werke zulässt , während andere nicht zugelassen werden. Ich habe meine Antwort aktualisiert , um eine Unterscheidung zwischen abgeleiteten Werken zu treffen, die auf der Grundlage der Bibliothek (die LGPL sein muss) in die Kategorie der Arbeiten fallen, und Werken, die die Bibliothek verwenden (die dies nicht tun).
Mark Booth
@MarkBooth Ich stimme Ihnen und anderen zu, dass in diesem Fall work based onÄnderungen an der LGPL vorgenommen werden, um zuvor privaten Code freizugeben.
1

Meine Vermutung: (aber IANAL) sollten Sie lösen als Open Source die modifizierte Bibliothek als Code LGPL und dann es in einem kommerziellen Programm fallen. Das würde funktionieren. Im Endeffekt hätten Sie eine Open-Source-Abzweigung der Bibliothek, und dann verkaufen Sie ein Front-End dafür.

Aber wie viele andere zu Recht sagten, fragen Sie die FSF : Es ist ein faszinierendes patologisches Szenario, das Sie dort haben. Sie könnten sich genauso fragen wie Sie, ob es anwendbar ist oder nicht. (oder sich zumindest genug darum kümmern, um einen FAQ-Eintrag zum Thema zu veröffentlichen)

ZJR
quelle
1

https://www.gnu.org/licenses/lgpl-java.html

Wenn Sie eine Java-Anwendung verteilen, die LGPL-Bibliotheken importiert, können Sie die LGPL problemlos einhalten. Die Lizenz Ihrer Anwendung muss es Benutzern ermöglichen, die Bibliothek zu ändern, und Sie müssen Ihren Code zurückentwickeln, um diese Änderungen zu debuggen. Dies bedeutet nicht, dass Sie den Quellcode oder Details zu den Interna Ihrer Anwendung angeben müssen. Natürlich können einige Änderungen, die die Benutzer an der Bibliothek vornehmen, die Benutzeroberfläche beschädigen und dazu führen, dass die Bibliothek nicht mehr mit Ihrer Anwendung arbeiten kann. Darüber brauchen Sie sich keine Gedanken zu machen - Leute, die die Bibliothek modifizieren, sind dafür verantwortlich, dass sie funktioniert.

Kurz gesagt, es gibt kein Problem mit der Vererbung, solange Sie den Bibliothekscode selbst nicht ändern. Selbst wenn Sie ihn ändern, müssen Sie nur den geänderten Bibliothekscode freigeben, nicht den Anwendungscode.

Nik.B
quelle
1
Ihre Antwort steht im Widerspruch zu mehreren anderen Antworten, bietet jedoch keine ausreichende Grundlage für Ihre Ansprüche. Andere Antworten sind detaillierter und erklären ihre Behauptungen besser. Bitte bearbeiten Sie Ihre Antwort, um relevante Zitate aus der Lizenz oder der FSF bereitzustellen, um Ihren Anspruch zu stützen.
Wie kann meine Antwort meine Behauptungen eigentlich nicht stützen? Ich hatte einen Link zu einer offiziellen GNU-Seite eingefügt, die die Verwirrung über die LGPL und die Klassenvererbung beseitigt. Es wurde sogar für LGPL v3 aktualisiert.
Nik.B,