Wie kommt es zu dieser Ausnahme?
Im Jahr 1998 wurde von fünf Entwicklern das GNU-Classpath-Projekt gestartet. Zielsetzung war es, eine Open-Source-Implementierung der Standardklassenbibliotheken von Java zu schaffen, wie z. B. Swing. Hauptintention war, ein freies Gegengewicht gegen die geschlossene Implementierung von Sun zu entwickeln. Als Lizenz wurde natürlich die hauseigene Lizenz von GNU genommen: die in der letzten Kolumne beschriebene GNU General Public License.
Um mit dem GNU-Classpath-Projekt arbeiten zu können, muss dagegen gelinkt werden. Aufgrund des strengen Copyleft der GPL wird das entstandene Modul aber auch automatisch zu einem GPL-Projekt, verbunden mit dessen Pflichten. Vor allem die Tatsache, dass bei solch einem Projekt schon das Linken zu einem Lizenzkäfig wird, würde viele von der Verwendung abschrecken. Darum haben sich die Macher zu einer GPL Linking Exception entschieden.
Das Wort "Exception" ist hier am ehesten mit "Ausnahmegenehmigung" zu ersetzen. Durch die Klausel entsteht eine modifizierte Variante der GPL. Ähnlich zu Lizenzen mit beschränktem Copyleft (z. B. LGPL) wird durch die GPL Linking Exception erlaubt, gegen die Bibliothek zu linken, ohne dass die Lizenz übernommen werden muss. Dadurch kann die Bibliothek in unveränderter Fassung in kommerziellen Projekten eingesetzt werden. Wichtig ist, dass diese Ausnahme nur für die Übersetzung gilt. Eine Änderung der Bibliothek ist nur erlaubt, wenn die Änderungen wieder unter GPL veröffentlicht werden. Im Fall des GNU-Classpath-Projekts wird diese Ausnahmegenehmigung auch als GNU Classpath Exception bezeichnet.
Wichtig ist, dass die GPL Linking Exception keine eigene Lizenz ist, sondern nur ein Zusatz für die GPL. Beim Lesen des Lizenztextes einer GPL-Lizenz lohnt es sich also zu prüfen, ob hier eine GPL Linking Exception vorliegt oder nicht. Das GNU-Classpath-Projekt ist kein Einzelfall für solch eine Ausnahme.
Ein anderes Beispiel ist das Projekt OpenSSL. In dessen FAQ wird beschrieben, dass OpenSSL nicht mit der GPL kompatibel ist. Um dieses Dilemma zu lösen, besitzen einige Projekte eine OpenSSL Exception. Damit wird explizit erlaubt, OpenSSL einzusetzen.
Ein weiteres Beispiel ist der GNU Ada Compiler. Damit die erzeugenden Projekte nicht direkt unter die GPL fallen, wurde die GNAT Modified General Public License verfasst. Dabei wurde die GPL auch lediglich um eine Ausnahmeklausel ergänzt.
If GPL? Prüfe auf Exception
Nicht überall ist GPL enthalten, wo auch GPL drauf steht. Somit wird hier wieder bestätigt, dass es mehr als wichtig ist, sich mit der Lizenz eines einzusetzenden Projekts auseinanderzusetzen.
Eigentlich ist es selbstverständlich, trotzdem sollte erwähnt werden, dass dies vor dem Einsatz gemacht werden sollte und nicht erst am Wochenende vor dem Livegang. Dies könnte sonst schnell zum kritischen Pfad für ein Projekt werden. Inzwischen habe ich gelernt, immer wieder zu hinterfragen, welche Bibliotheken im Projekt eingesetzt werden. Sollte hier eine unbekannte Bibliothek dabei sein, wird sofort die Lizenz geprüft. Einen schönen Monat und implementieren Sie stabile Exception Handler.




