Zuerst das Ziel festlegen
Die Lizenzwahl ist keine Geschmacksfrage, sondern eine Frage dessen, was Sie erreichen wollen. Die meisten liegen irgendwo zwischen diesen beiden Zielen.
- Möglichst weite Verbreitung — Soll Ihr Code ohne Hürden in Unternehmensprodukte, andere Open-Source-Projekte und geschlossene Apps einfließen, sind freizügige Lizenzen im Vorteil.
- Verbesserungen sollen offen zurückfließen — Soll auch jede geänderte Fassung Ihres Codes offengelegt werden, wenn jemand sie verbreitet, passt Copyleft.
Freizügig: breite Akzeptanz, wenig Reibung
MIT, BSD, ISC und Apache-2.0 verlangen kaum mehr als die Beibehaltung von Hinweisen. Die meisten Rechtsabteilungen haben sie auf ihrer Liste vorab genehmigter Lizenzen, was die Einführung beschleunigt. Dafür kann man nicht verhindern, dass jemand den Code ändert und in ein geschlossenes Produkt übernimmt.
Innerhalb der freizügigen Lizenzen geht es vor allem um zwei Punkte.
- Patente: Wer eine ausdrückliche Patentlizenz und eine Vergeltungsklausel braucht, nimmt Apache-2.0, sonst MIT.
- Kompatibilität mit GPL-2.0: Nach Auffassung der FSF darf Apache-2.0-Code nicht in GPL-2.0-only-Projekte, im Umfeld des Linux-Kernels sind MIT oder BSD daher bequemer.
Copyleft: eine Kette der Offenheit
Die GPL legt die Offenlegungspflicht auf das gesamte kombinierte Programm, die LGPL auf die Bibliothek und die MPL auf einzelne Dateien. Bei Software, die auf Servern läuft, schließt die AGPL die Lücke der GPL. Mit Copyleft kann es passieren, dass manche Unternehmen die Nutzung oder Beiträge scheuen – insbesondere die AGPL ist in vielen Firmen per interner Richtlinie eingeschränkt. Das kann die beabsichtigte Wirkung sein oder eine unerwünschte Nebenwirkung.
Die Gepflogenheiten des Ökosystems zählen
Eine Lizenz, die zu den Konventionen der Community passt, erzeugt weniger Reibung.
| Ökosystem | Übliche Lizenzen | Anmerkung |
|---|---|---|
| JavaScript (npm) | MIT, ISC | Viele kleine Pakete, kurze freizügige Lizenzen bevorzugt |
| Rust (crates.io) | MIT OR Apache-2.0 | Rust selbst nutzt dieses Dual-Modell |
| Python (PyPI) | MIT, BSD-3-Clause, Apache-2.0 | Im wissenschaftlichen Rechnen häufig BSD-3 |
| Go | BSD-3-Clause, MIT, Apache-2.0 | Die Go-Standardbibliothek steht unter BSD-3 |
| Linux-Kernelmodule | GPL-2.0-only | Für die Kombination mit dem Kernel praktisch Pflicht |
| GNU-Desktopwerkzeuge | GPL-3.0-or-later | Standard im GNU-Projekt |
| C/C++-Bibliotheken | LGPL, MIT, BSL-1.0 | Art des Linkens beeinflusst die Wahl |
Checkliste für die Entscheidung
- Abhängigkeiten prüfen: Prüfen Sie, ob die Lizenzen bereits genutzter Bibliotheken Ihre Wahl einschränken. Wenn Sie ein mit einer GPL-Bibliothek kombiniertes Programm verbreiten, bleiben nur GPL-kompatible Lizenzen.
- Zugehörigkeit prüfen: Bei im Arbeitsverhältnis geschriebenem Code ist meist das Unternehmen Rechteinhaber. Prüfen Sie, ob die Open-Source-Richtlinie Ihres Unternehmens eine Lizenz vorgibt.
- Einsatzform: Ob installierbare Software, Bibliothek oder Dienst – die Wirkung des Copyleft ist jeweils unterschiedlich.
- Art der Beiträge: Wenn Sie externe Beiträge annehmen wollen, bedenken Sie, dass ein späterer Lizenzwechsel schwierig wird, weil sich die Urheberrechte vieler Personen vermischen.
- Erlösmodell: Wollen Sie separate kommerzielle Lizenzen verkaufen, ziehen Sie Dual Licensing aus Copyleft + kommerziell zusammen mit einem Contributor License Agreement (CLA) in Betracht.
In einem Satz
- Maximale Verbreitung hat Vorrang → MIT (bei Patentbedenken Apache-2.0)
- Verbesserungen an der Bibliothek zurückbekommen, Nutzer aber frei lassen → MPL-2.0 oder LGPL-3.0
- Alle abgeleiteten Programme sollen offen sein → GPL-3.0
- Auch geänderte Server-Software soll offen sein → AGPL-3.0
- Überhaupt keine Bedingungen → 0BSD, Unlicense, CC0
Im Auswahlassistenten beantworten Sie diese Kriterien als Fragen und erhalten Kandidaten mit Begründung.
Dieser Artikel enthält allgemeine Informationen und ist keine Rechtsberatung. Besprechen Sie wichtige Entscheidungen mit Fachleuten.
Quellen
- choosealicense.com — https://choosealicense.com/
- FSF, Various Licenses and Comments about Them — https://www.gnu.org/licenses/license-list.html
- Rust-Lizenz (MIT OR Apache-2.0) — https://github.com/rust-lang/rust