Zunächst einmal bin ich kein Anwalt. Aber ich habe viele Lizenzen studiert und Probleme in Bezug auf sie verstanden.
Zweitens weiß ich, dass dies eine alte Frage ist, aber ich denke, es ist immer noch ein Punkt der Verwirrung und Sorge. Wenn es keinen Anlass zur Sorge gibt, sollte es sein. Die Wahl einer Lizenz ist eine große Sache, die Sie nicht ohne Weiteres ändern können, insbesondere wenn mehrere Mitwirkende beteiligt sind.
(L) GPL wurde leider unter Berücksichtigung von C / C ++ geschrieben. Es spricht von "Source Code", "Object Code", "Dynamic Linking", "Static Linking", "Compilers" und "Object Code Interpreter". Um dies für andere Sprachen zu übersetzen, die nicht denselben Kompilierungstechniken folgen (wie Javas Bytecode, Pythons Just-in-Time-Kompilierung oder die Interpretation von Javascript), sind einige Vermutungen und Annahmen erforderlich. Wenn Sie über das Gesetz sprechen - dh über mögliche Gerichtsverfahren, in denen sich 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 diese ihn vertreiben oder verkaufen. Das ist der GPL-Virus, den Richard Stallman erstellen wollte und der eindeutig und sauber war.
Die LGPL war ursprünglich ein Versuch, eine "Bibliothek" zuzulassen, die nicht viral wäre. Sie wollten jedoch, dass der Endbenutzer die Bibliothek selbstständig austauschen 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 ist als GPL lizenziert sein. Für eine statische Verknüpfung musste der Benutzer GPL sein. Die Lizenz spricht tatsächlich von "Header-Dateien", die in C / C ++ klar sind, aber offensichtlich nicht klar sind, wenn Sie sich in der Java-, Python-, Javascript- usw. Welt befinden. Also ist das L ("Bibliothek") von LGPL-Sachen bestenfalls matschig.
Das bringt die Sache auf den Punkt. Alles, was unklar ist, 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 ist, wenn ich vor Gericht lande. Aber bis heute bin ich mir nicht sicher, weil es wirklich keine guten Gerichtsverfahren gibt, die einen Präzedenzfall schaffen, sondern nur intellektuelle Argumente in solchen Foren.
Hier ist die Klassenpfad-Ausnahme von unschätzbarem Wert. Es stellt klar , dass der Code unter der Lizenz ist (L) GPL, aber alles , was mit diesem Code können folgen , was Lizenz sie möchten. Kein Wenn und Aber. Wenn Sie den Kerncode ändern (z. B. um Fehler zu beheben), müssen Sie diese Änderungen dennoch als Teil der GPL freigeben. Die Verwendung von infiziert Sie jedoch NICHT.
Aus geschäftlicher Sicht verstehe ich, warum manche GPL-Code nicht mit einem 10-Fuß-Pol anfassen wollen. 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 bleiben jahrelang vor Gericht und kämpfen um den rechtlichen Präzedenzfall. Unabhängig davon wollen sie einfach nicht die Kosten dieses Kampfes riskieren. Durch Hinzufügen der Classpath-Ausnahmeklausel werden die rechtlichen Fragen beseitigt und (schwerwiegende) potenzielle Gerichtsverfahren vermieden.
Für mich ist die Klassenpfad-Ausnahme eine ganz andere als die LGPL. Dies ist eine rechtlich saubere Methode, um eine klare Linie zu ziehen, die die Verwendung von GPL- oder LGPL-Quellcode oder -Bibliotheken ohne GPL ermöglicht.