Der entscheidende Satz
Der empfohlene Hinweistext der GNU-Lizenzen enthält folgenden Satz.
either version 3 of the License, or (at your option) any later version.
Steht er da, können Empfänger die angegebene Version oder jede später von der FSF veröffentlichte Version wählen und deren Bedingungen befolgen. Das ist „or later“ (SPDX GPL-3.0-or-later). Entfernt man den „or later“-Teil und nennt nur eine bestimmte Version, ergibt sich „only“ (GPL-3.0-only).
Diese Struktur regeln Abschnitt 14 der GPL-3.0 und Abschnitt 9 der GPL-2.0. Insbesondere bestimmt Abschnitt 9 der GPL-2.0, dass bei einem Programm ganz ohne Versionsangabe jede von der FSF veröffentlichte Version gewählt werden kann. Wer nur eine LICENSE-Datei ablegt und die Versionsklausel nicht angibt, riskiert also eine ungewollte Auslegung.
Warum „or later“?
Die FSF empfiehlt „or later“. Der Grund ist künftige Kompatibilität: Erscheint eine neue GPL, weil sich Recht und Technik verändert haben, kann „or later“-Code problemlos mit der neuen Version kombiniert werden. Tatsächlich konnte GPL-2.0-or-later-Code unverändert in GPL-3.0-Projekte übernommen werden, GPL-2.0-only-Code dagegen nicht.
Abschnitt 14 der GPL-3.0 geht noch weiter und erlaubt die Benennung eines „Proxys“: Entscheidet eine vom Rechteinhaber benannte Person öffentlich über die Annahme einer späteren Version, ist diese Entscheidung wirksam.
Warum „only“?
„Or later“ bedeutet auch, einer noch nicht geschriebenen Lizenz im Voraus zuzustimmen. Veröffentlicht die FSF später eine Version mit Bedingungen, die nicht Ihrer Absicht entsprechen, können Empfänger Ihren Code unter dieser Version nutzen.
Das bekannteste Beispiel ist der Linux-Kernel. Der Kernel steht unter GPL-2.0-only. Linus Torvalds hat sich öffentlich gegen die Klausel zu Installationsinformationen der GPL-3.0 (sog. Anti-Tivoisierung) ausgesprochen, und da im Kernel die Urheberrechte Tausender Beitragender stecken, ließe sich die Lizenz praktisch auch gar nicht ändern.
Auswirkungen auf die Kompatibilität
Die Kompatibilitätsmatrix der GNU-Lizenz-FAQ lässt sich so zusammenfassen.
| Übernommener Code → mein Projekt | GPL-2.0-only | GPL-2.0-or-later | GPL-3.0 |
|---|---|---|---|
| GPL-2.0-only | Möglich | Möglich (Gesamtwerk 2.0-only) | Nicht möglich |
| GPL-2.0-or-later | Möglich | Möglich | Möglich |
| GPL-3.0 | Nicht möglich | Möglich (Gesamtwerk 3.0) | Möglich |
| LGPL-3.0 | Nicht möglich | Möglich (Gesamtwerk 3.0) | Möglich |
Entscheidend: GPL-2.0-only und GPL-3.0 können einander nicht aufnehmen. Beide verlangen „keine zusätzlichen Einschränkungen“, und die zusätzlichen Bedingungen der jeweils anderen (bei 3.0 etwa Patent- und Installationsinformationsklauseln) sind aus Sicht der Gegenseite zusätzliche Einschränkungen. Weitere Kombinationen finden Sie im Kompatibilitätsprüfer.
Kriterien für die Wahl
- Dem Ökosystem folgen: Code für den Linux-Kernel muss GPL-2.0-only (oder kompatibel: GPL-2.0-or-later bzw. freizügig) sein.
- Künftige Kompatibilität ist wichtig: Wird wahrscheinlich Code mit vielen GPL-Projekten ausgetauscht, ist or-later flexibler.
- Kontrolle ist wichtig: Wer künftige Entscheidungen nicht der FSF überlassen will, wählt only oder benennt über den Proxy nach Abschnitt 14 der GPL-3.0 eine entscheidungsbefugte Person.
Wie man es angibt
- In
LICENSE(oderCOPYING) steht der Text der betreffenden Version unverändert. Der Lizenztext selbst unterscheidet nicht zwischen only und or-later. - Die Versionsklausel geben Sie im Hinweis jeder Datei und in der SPDX-Kennung an. Wählen Sie im Generator-Tab „Dateikopf“ „only“ oder „or-later“, werden der offizielle GNU-Hinweis und die SPDX-Zeile gemeinsam erzeugt.
- Vermerken Sie es auch in einer Zeile im README (z. B. „Licensed under GPL-3.0-or-later“).
Dieser Artikel enthält allgemeine Informationen und ist keine Rechtsberatung. Besprechen Sie wichtige Entscheidungen mit Fachleuten.
Quellen
- GNU-Lizenz-FAQ, VersionThreeOrLater · AllCompatibility — https://www.gnu.org/licenses/gpl-faq.html
- GNU, How to Use GNU Licenses for Your Own Software — https://www.gnu.org/licenses/gpl-howto.html
- Lizenzregeln des Linux-Kernels — https://www.kernel.org/doc/html/latest/process/license-rules.html
- SPDX License List — https://spdx.org/licenses/