it-swarm.dev

Was bedeutet "GPL mit Klassenpfadausnahme" in der Praxis?

Oracle scheint den gesamten Java-bezogenen Open Source-Code unter der GPL mit einer Klassenpfad-Ausnahme zu lizenzieren. Soweit ich weiß, scheint dies zu ermöglichen, diese Bibliotheken mit Ihrem eigenen Code zu Produkten zu kombinieren, die nicht von der GPL abgedeckt werden müssen.

  1. Wie funktioniert das?
  2. Was sind Beispiele dafür, wie ich diese Klassen verwenden kann und nicht?
  3. Warum wurde diese neue Lizenz im Gegensatz zur LGPL verwendet, die anscheinend fast die gleichen Dinge zulässt, aber besser etabliert und verstanden ist?
  4. Was sind die Unterschiede zur LGPL?
71
Thilo

Zunächst einmal bin ich kein Anwalt. Aber ich habe viele Lizenzen studiert und verstehe Probleme, die sie betreffen.

Zweitens weiß ich, dass dies eine alte Frage ist, aber ich denke, es ist immer noch ein Punkt der Verwirrung und Besorgnis. Wenn es kein Problem ist, sollte es sein. Die Auswahl einer Lizenz ist eine große Sache, die Sie später nicht trivial ändern können, insbesondere wenn mehrere Mitwirkende beteiligt sind.

(L) GPL wurde leider unter Berücksichtigung von C/C++ geschrieben. Es spricht von "Quellcode", "Objektcode", "Dynamic Linking", "Static Linking", "Compilern" und "Object Code Interpreter". Die Übersetzung für andere Sprachen, die nicht denselben Kompilierungstechniken folgen (z. B. Java-Bytecode, Python-Just-in-Time-Kompilierung oder Javascript-Interpretation), erfordert einige Vermutungen und Annahmen. Wenn Sie über das Gesetz sprechen - d. H. Über mögliche Gerichtsverfahren nachdenken, in denen zwei Parteien streiten -, ist es eine SCHLECHTE Sache, keine eindeutige Unterscheidung zu treffen.

Ein Standard-GPL-lizenzierter Code ist in seiner Absicht ziemlich einfach. Von jedem, der diesen Code verwendet, wird erwartet, dass er seinen Code an alle Benutzer weitergibt, wenn sie ihn vertreiben oder verkaufen. Das ist der GPL-Virus, den Richard Stallman erstellen wollte und der klar und sauber funktioniert hat.

Die LGPL war ursprünglich ein Versuch, eine "Bibliothek" zuzulassen, die nicht viral wäre. Sie wollten jedoch weiterhin, dass der Endbenutzer die Bibliothek selbst ersetzen kann, daher die Unterscheidung zwischen "statischer" und "dynamischer" Verknüpfung - der Benutzer könnte zu einer anderen dynamisch verknüpften Bibliothek wechseln, sodass dies nicht erforderlich wäre als GPL lizenziert sein. Für eine statische Verknüpfung muss der Benutzer eine GPL sein. Die Lizenz spricht tatsächlich von "Header-Dateien", die in C/C++ klar sind, aber offensichtlich nicht klar, wenn Sie sich in den Welten Java, Python, Javascript usw. befinden. Das L ("Bibliothek") von LGPL-Sachen ist also bestenfalls schlammig.

Dies bringt den Kern der Sache auf den Punkt. Alles Unklare ist in der Welt der Gesetze SCHLECHT. Wenn ich etwas mit GPL- oder LGPL-Komponenten bauen möchte, möchte ich sicher sein, wie meine rechtliche Stellung in Zukunft aussieht, wenn ich vor Gericht lande. Aber bis heute bin ich mir nicht sicher, weil es wirklich keine guten Gerichtsverfahren gegeben hat, die einen Präzedenzfall geschaffen haben, sondern nur intellektuelle Argumente in solchen Foren.

Hier ist die Klassenpfadausnahme von unschätzbarem Wert. Es wird klargestellt, dass der Code unter der Lizenz (L) GPL ist, aber alles mit dieser Code kann jeder gewünschten Lizenz folgen. Kein Wenn und Aber. Wenn Sie den Kerncode ändern (z. B. Fehler beheben), müssen Sie diese Änderungen weiterhin als Teil der GPL freigeben. Aber die Verwendung infiziert Sie NICHT.

Aus geschäftlicher Sicht verstehe ich, warum manche GPL-Code nicht mit einem 10-Fuß-Pol berühren möchten. Die rechtliche Stellung ist unklar, und das Geschäft könnte ein Jahrzehnt später ins Wanken geraten, wenn endlich ein Präzedenzfall geschaffen wird. Oder sie sitzen jahrelang vor Gericht und kämpfen um die Schaffung eines Präzedenzfalls. Unabhängig davon wollen sie die Kosten dieses Kampfes einfach nicht riskieren. Durch Hinzufügen der Classpath Exception-Klausel werden die rechtlichen Fragen beseitigt und (schwerwiegende) potenzielle Gerichtsverfahren vermieden.

Für mich unterscheidet sich die Classpath-Ausnahme stark von der LGPL. Es ist eine rechtlich saubere Methode, eine helle Linie zu ziehen, die die Verwendung von GPL- oder LGPL-Quellcode oder -Bibliotheken ohne GPL ermöglicht.

71
Steve

GPL mit Klassenpfadausnahme verhält sich für die meisten Verwendungen wie LGPL.

Dies bedeutet, dass Sie in der Lage sein müssen, die Quelle für die Bibliothek bei Bedarf zu versenden. Dies bedeutet nicht, dass Sie in der Lage sein müssen, Ihre eigene Quelle zu versenden. Es bedeutet, dass Sie keine Möglichkeit zum Ersetzen der Bibliothek bereitstellen müssen, wenn Sie eine statische Verknüpfung herstellen, aber Sie können keinen öffentlichen Schlüssel verwenden, um das Ersetzen zu verhindern.

6
Joshua