GPL linking exception

Eine GPL linking exception (deutsch etwa Ausnahmegenehmigung fürs Linken) verändert die Bestimmungen der GNU General Public License (GPL), sodass eine neue, modifizierte Version der Lizenz entsteht. So wird ähnlich der GNU Lesser General Public License das Linken einer Programmbibliothek, die unter solchen Bedingungen lizenziert ist, mit einem Programm ermöglicht, das unter einer abweichenden Lizenz stehen kann. Das resultierende Programm darf unter einer Lizenz freier Wahl verbreitet werden und man ist nicht an die Bestimmungen der GPL gebunden. Lediglich die Programmbibliothek selbst steht weiterhin unter der GPL. Veränderte Versionen der Bibliothek müssen folglich unter der GPL verbreitet werden.

Die Free Software Foundation schreibt keinen einheitlichen Text für die Linking Exception vor. Der ursprüngliche Urheber muss also selbst den entsprechenden Erlaubnisvermerk verfassen und sollte ihn vor der Veröffentlichung dem Lizenzvermerk anhängen. Man soll jedoch beachten, dass man die Erlaubnis aller Miturheber (aller beteiligten Programmierer etc.) benötigt, um diesen Vermerk nachträglich der Lizenz hinzuzufügen. Meist wird die Möglichkeit gegeben, die Linking Exception bei veränderten Versionen der Bibliothek zu entfernen. Damit gelten die restriktiveren Bedingungen der GPL für das resultierende Programm, nachdem dieses mit der Bibliothek gelinkt wurde. Ist die Linking Exception entfernt, darf sie nicht ohne die Erlaubnis aller Beteiligten wieder nachträglich hinzugefügt werden.

Die Classpath Exception

Bei GNU Classpath handelt es sich um Klassenbibliotheken für Java-Laufzeitumgebungen. Ohne die Linking Exception wäre ein Betrieb mit proprietären Anwendungen untersagt. Das GNU-Classpath-Projekt wird mit folgender Linking Exception vertrieben:

Unterschiede zur GNU Lesser General Public License

Im Grunde verfolgen beide Lizenzmodelle das gleiche Ziel. Es soll das Linken mit proprietärer Software ermöglicht werden, ohne dass das resultierende Programm ebenfalls unter der GPL veröffentlicht werden muss, aber die Bibliothek selbst weiterhin unter der jeweiligen Lizenz (GPL oder LGPL) stehen muss – es handelt sich also um ein schwaches Copyleft.

Ein Unterschied ist, dass die LGPL fordert, dass dem resultierenden Programm ein Vermerk über die Benutzung der Bibliothek beigefügt und der Quelltext der Bibliothek mitgeliefert werden muss. Außerdem darf die Lizenz des resultierenden Programmes das Linken des Programmes mit einer neuen Version der Bibliothek nicht verbieten. Folglich ist der Objektcode des Programms mitzuliefern, wenn die LGPL-lizenzierte Bibliothek nicht unter einem Shared-Library-Mechanismus zur Verfügung gestellt wird. Darüber hinaus ist dem Benutzer das Dekompilieren bzw. Disassemblieren (reverse engineering) zu gestatten, damit dieser die neue Version der Bibliothek debuggen kann.

Solche Bedingungen sind manchmal schwer umzusetzen, wenn zum Beispiel LGPL-Code in Programmen für Eingebettete Systeme verwendet wird, und werden mit der Linking Exception nicht gefordert. Dass bestimmte Linking Exceptions entfernt werden können, steht in keinem Gegensatz zur LGPL. Die LGPL sieht nämlich vor, dass Programmierer den Code auch unwiderruflich der GPL unterstellen können.

Schließlich stellt die Linking Exception keine eigene Lizenz dar, sondern nur eine Ergänzung zur GPL. Es gibt auch keinen einheitlichen Text und die geforderten Bedingungen und eingeräumten Zusatzrechte können variieren.

Uses material from the Wikipedia article GPL linking exception, released under the CC BY-SA 4.0 license.