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:
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version.
Das dynamische oder statische Linken dieser Bibliothek mit anderen Modulen erstellt ein neues Werk, das auf dieser Bibliothek basiert. Folglich gilt die GNU General Public License für das gesamte kombinierte Werk.
Als eine besondere Ausnahme gestatten Ihnen die Urheberrechtsinhaber dieser Bibliothek, diese mit unabhängigen Modulen zu linken, um eine ausführbare Datei (executable) zu erzeugen, ungeachtet der Lizenz dieser unabhängigen Module, und die resultierende ausführbare Datei unter Bestimmungen Ihrer Wahl zu kopieren und zu verbreiten, solange jedes unabhängige Modul unter dessen Lizenz (terms and conditions) verbreitet wird. Ein unabhängiges Modul ist ein Modul, das nicht von dieser Bibliothek abgeleitet ist oder darauf basiert. Wenn Sie diese Bibliothek verändern, dürfen Sie diese Ausnahmeregelung Ihrer Version der Bibliothek anfügen, müssen es aber nicht. Wenn Sie dies nicht tun möchten, entfernen Sie diesen Ausnahmevermerk von Ihrer Version.
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.