Aus Linux-Magazin 06/2025

Softwarelizenzen richtig vergeben (Teil 2)

© Maksim Shebeko / 123RF.com

Die von uns vergebenen Open-Source-Lizenzen sollen anderen Nutzer verdeutlichen, wie sie unsere Software nutzen können. Dabei hilft es, wenn sich eine Lizenz automatisiert auslesen lässt.

Basis dieses Beitrags ist Teil 1 dieser Artikelserie, in dem wir uns mit dem Erkennen und dem Auswählen eines Softwarepakets auf Grundlage der vergebenen Lizenzen auseinandersetzten [1]. Nun nehmen wir die umgekehrte Perspektive ein. Wir sehen uns an, wie wir Lizenzen auswählen und so in unser Softwarepaket einbinden, dass andere dessen Verwendungsmöglichkeiten schnell und einfach erfassen können. Wir beleuchten, welche Vorgehensweisen und Werkzeuge sich im Alltag dafür bewährt haben und wie wir diese in den Entwicklungsprozess eigener Software integrieren.

Warum lizenzieren?

Ohne die Angabe einer Lizenz wissen Dritte nicht, unter welchen Bedingungen sie Ihr Werk oder Ihre Software überhaupt verwenden können. Zudem bleibt unklar, was sie beachten müssen, wenn sie das Werk auf die Bedürfnisse ihres konkreten Anwendungsfalls zuschneiden, es also anpassen und beispielsweise Änderungen am Quellcode vornehmen.

Die Lizenz bringt dabei Ihren Willen als Entwickler zum Ausdruck, regelt eindeutig den Umgang mit dem Werk für alle Seiten und beugt Missverständnissen und Streitigkeiten vor. Voraussetzung ist, dass alle Beteiligten die gewählte(n) Lizenz(en) und die damit verknüpften Regeln kennen und respektieren.

Welche Lizenzen?

Es gibt keine ideale Lizenz, die Sie für jeden Fall verwenden können. Die Auswahl hängt vielmehr von verschiedenen Faktoren ab:

  • Welche Lizenzen verwenden abhängige Werke oder (Software-)Pakete?
  • Welche Lizenzen bevorzugen andere Teammitglieder?
  • Wie einfach und freizügig (permissiv) soll Ihr Werk sein?
  • Wie wichtig ist es Ihnen, dass Erweiterungen und Änderungen ebenfalls wieder geteilt werden?

Für die interaktive Auswahl bietet sich der Joinup Licensing Assistant (Abbildung 1) der Europäischen Kommission [2] an, den Sie per Webbrowser bedienen. Durch Auswahl der jeweiligen Eigenschaften filtern Sie sukzessive diejenigen Softwarelizenzen heraus, die all Ihren Bedürfnissen entsprechen. Die passenden Lizenzen erscheinen am Ende unterhalb der Tabelle. Die Sortierung erfolgt absteigend anhand des Grads der Übereinstimmung mit den zuvor gesetzten Kriterien. Je genauer Sie die Vorgaben wählen, umso präziser fällt die Ergebnisliste aus.

Abbildung 1: Der Joinup Licensing Assistant der Europäischen Kommission hilft beim Aussuchen einer passenden Lizenz.

Abbildung 1: Der Joinup Licensing Assistant der Europäischen Kommission hilft beim Aussuchen einer passenden Lizenz.

Lizenzangaben

Nun gilt es die Frage zu beantworten, wie und insbesondere wo die Lizenzangaben konkret zu hinterlegen sind. Viele Open-Source-Lizenzen verlangen, dass das Lizenzdokument dem Werk beiliegt. Üblicherweise erfolgt dies in einer separaten Datei namens »LICENSE«. Dienste wie Github und Gitlab erwarten eine solche Lizenzdatei auf oberster Ebene (Abbildung 2).

Abbildung 2: Eine automatisch generierte Lizenz bei Github.

Abbildung 2: Eine automatisch generierte Lizenz bei Github.

In der Datei stehen der Name der Lizenz sowie alle Lizenzbedingungen. Damit aus der »LICENSE«-Datei die Lizenz automatisch ausgelesen werden kann, muss sie die passenden Formulierungen oder Schlüsselworte enthalten. Github verwendet dafür eine eigene Bibliothek [3], auf die Sie mittels einer Rest-API zugreifen. Weitere Quellen sind beispielsweise Spdx.org [4], Choose A License [5] und Gnu.org [6].

Erzeugen Sie via Github ein neues Repository zur Versionskontrolle für das Projekt, geben Sie die Lizenz gleich mit an (Abbildung 3) – wohlgemerkt nur eine einzige Lizenz, da Github Mehrfachlizenzierung (bislang) nicht unterstützt.

Abbildung 3: So sieht die Lizenzauswahl bei Github aus.

Abbildung 3: So sieht die Lizenzauswahl bei Github aus.

Zusatzinfos

Komplexer wird es bei einer Mehrfachlizenzierung für unterschiedliche Nutzungszwecke oder auch, wenn die einzelnen Bestandteile des Gesamtprojekts unter verschiedenen Lizenzen stehen. Nicht alle Werkzeuge zur Paketverwaltung und Auswertung kommen damit zurecht, wenn Sie mehrere »LICENSE«-Dateien beilegen oder mehrere Lizenzen in einer einzigen Lizenzdatei ausliefern. Diesbezüglich hat sich zwar mittlerweile einiges getan, insgesamt herrscht jedoch immer noch ziemlicher Wirrwarr.

Sowohl das DEB- als auch das RPM-Format unterstützen mehrere Lizenzen pro Softwarepaket. Für DEB-Pakete, die sogar mehrere Lizenzangaben pro im Paket enthaltener Datei erlauben, beschreibt das Debian Packaging Manual [7] die Vorgehensweise. In Listing 1 sind über Wildcards alle Dateien mit Pfadangabe und jeweiliger Lizenz aufgeführt. Listing 2 zeigt, wie sich mehrere Lizenzen für eine Datei angeben lassen. Im Beispiel stehen die Javascript-Dateien sowohl unter der Mozilla-Lizenz (MPL) als auch unter der GPLv2 bereit. Im Abschnitt »License:« hinterlegen Sie dann den vollständigen Lizenztext.

Listing 1

Lizenzangabe pro Datei

Files:
 *
Copyright: 1975-2010 Ulla Upstream
License: GPL-2+
Files:
 debian/*
Copyright: 2010 Daniela Debianizer
License: GPL-2+
Files:
 debian/patches/fancy-feature
Copyright: 2010 Daniela Debianizer
License: GPL-3+
Files:
 */*.1
Copyright: 2010 Manuela Manpager
License: GPL-2+

Listing 2

Mehrere Lizenzen pro Datei

Files: src/js/editline/*
Copyright: 1993, John Doe
           1993, Joe Average
License: MPL-1.1 or GPL-2
License: MPL-1.1
 <I>Vollständiger Lizenztext<I>
License: GPL-2
 <I>Vollständiger Lizenztext<I>

Für RPM-Pakete beschreiben der RPM Packaging Guide [8] sowie die Fedora Licensing Guidelines [9], wie Sie die Lizenz angeben müssen. Hier kommt das SPDX-Format zum Einsatz. Eine fein abgestufte Lizenzangabe pro Datei im Paket wie in Listing 1 klappt damit allerdings nicht. So bleibt Ihnen als Paket-Maintainer nur der Ausweg, die Software in mehrere, einzelne Pakete zu zerlegen, um die Lizenz genau angeben zu können.

Etwas einfacher wird es, wenn der gesamte Quellcode eines Pakets dual lizenziert ist. In der SPEC-Datei legen Sie fest, aus welchen Komponenten sich das RPM-Paket zusammensetzt. Listing 3 enthält einen Vorschlag zur Angabe der Lizenz in der SPEC-Datei des RPM-Pakets. Laut RPM-Spezifikation müssen sich die beiden Lizenztexte in separaten Dateien befinden statt direkt in der SPEC-Datei.

Listing 3

Lizenzangabe (SPEC-Datei)

License: MPL-1.1 OR GPL-2.0-or-later

Häufig gibt es in Paketen auch noch sprachspezifische Dateien mit Metainformationen. Für moderne Python-Pakete verwendet man eine Datei namens »pyproject.toml« [10]. Als Lizenzangabe dient hier entweder der Name der Lizenz, der Verweis auf eine Lizenzdatei oder eine Angabe mit dem Trove Classifier »License :: …«. Abbildung 4 zeigt als Beispiel die Angaben für die Bibliothek Matplotlib [11].

Abbildung 4: So sehen die Lizenzangaben bei der Bibliothek Matplotlib aus.

Abbildung 4: So sehen die Lizenzangaben bei der Bibliothek Matplotlib aus.

Während die »LICENSE«-Datei alle Lizenzen nennt, lässt der Trove Classifier [12] nur eine einzige Lizenz daraus zu. Das ist insofern unglücklich, als der Classifier auch an anderen Stellen ausgewertet wird, beispielsweise im Python Package Index. Dort erscheint dann ebenfalls nur diese eine Lizenz. Die anderen Lizenzen, die in der »LICENSE«-Datei angegeben sind, fallen unter den Tisch.

Ärgerlich sind zudem die unterschiedlichen Bezeichnungen für die Lizenzen. Sie machen eine Recherche und einen Vergleich der gewählten Lizenzierungen komplizierter als eigentlich notwendig [13]. Eine Vereinheitlichung tut hier dringend Not.

Richtig implementieren

Um Klarheit zur Lizenz zu bekommen, hilft das Konzept rund um SPDX [14]. Wie im ersten Teil dieser Serie schon angerissen, bietet es eine standardisierte Lösung für die beschriebenen Probleme.

Jede Quellcodedatei enthält am Anfang einen passenden Eintrag als Kommentar. Er beginnt mit dem Text »SPDX-License-Identifier:«, darauf folgt die gewählte Lizenz für den Programmcode. Listing 4 zeigt das für die Nutzung der GNU Public License v3 oder später. Diese Schreibweise erlaubt dank der standardisierten Formulierung ein maschinelles, automatisiertes Auslesen. Das schließt eine Fehlinterpretation der Lizenz aus.

Listing 4

SPDX-Lizenzangabe

# SPDX-License-Identifier: GNU General Public License v3.0 or later

Externe Unterstützung

Unterstützung bei der Lizenzauswahl ist stets hilfreich, da die große Vielfalt an Lizenzmodellen das Verständnis erschwert. Hier helfen sowohl das GNU-Projekt als auch Wikipedia [15] und Choose A License mit Hinweisen und Übersichten weiter.

Die Free Software Foundation Europe (FSFE) lässt sich diesbezüglich ebenfalls nicht lumpen und bietet sich als kompetenter Anlaufpunkt an. Dazu haben wir Lina Ceballos von FSFE befragt, wie die Hilfe im Rahmen des REUSE-Projekts [16] konkret aussieht (siehe Kasten “Interview mit Lina Ceballos”).

Nicht zu vergessen sind auch auf Lizenzrecht spezialisierte Beratungsfirmen und Rechtsanwälte, die weitere Klarheit bringen können.

Fazit

Bislang lag unser Blick primär auf Software und ihre korrekte Lizenzierung. Was noch fehlt, aber nicht übersehen werden darf, sind Daten und Datenströme, Bilder, Dokumentation, Mediadaten und Hardware. Diesem Thema widmen wir uns im nächsten Teil dieser Serie. (jlu)

Interview mit Lina Ceballos

Linux-Magazin: Wie würdest du deine Rolle innerhalb der FSFE und des REUSE-Projekts beschreiben?

Lina Ceballos: Ich bin Politik-Projektmanager bei der FSFE, einer gemeinnützigen Organisation, die Nutzern die Möglichkeit gibt, Technologien zu kontrollieren [17]. Ich habe Erfahrung in rechtlichen Fragen und der Einhaltung von Lizenzen sowie in der Überwachung von Gesetzgebungsprozessen auf europäischer Ebene, wo ich mit verschiedenen Interessenvertretern und Entscheidungsträgern zusammenarbeite. Im Rahmen des REUSE-Projekts konzentriere ich mich hauptsächlich darauf, die Bedeutung des Projekts in unserer Gemeinschaft hervorzuheben und es anderen zu zeigen, die davon stark profitieren können, aber vielleicht noch nichts davon gehört haben.

LM: REUSE hat die Rechtssicherheit erhöht. Bietet dies deiner Erfahrung nach eine klare Antwort auf alle Lizenzierungsfragen für Urheber? Oder ergeben sich daraus neue Lizenzierungsfragen?

LC: Lass uns zunächst darüber sprechen, worum es sich bei REUSE handelt. REUSE umfasst eine Reihe von Best Practices, die darauf abzielen, die Kommunikation von Lizenz- und Copyright-Informationen von FOSS-Projekten für jeden einfacher zu machen. Das ultimative Ziel ist, dass für jede einzelne Datei in einem Projekt diese rechtlichen Informationen in einer eindeutigen und gleichermaßen für Mensch und Maschine lesbaren Weise vorliegen. Die REUSE-Spezifikation [18] und ein passendes Hilfsprogramm [19] machen den Prozess zum Kinderspiel. Wir stellen zudem ein Tutorial und eine FAQ [20] bereit, die den Einstieg erleichtern und Antworten auf einige Fragen geben, die bei der Einführung von REUSE auftreten können.

In dieser Hinsicht macht es REUSE also für jeden einfacher, die rechtlichen Informationen anzuzeigen und zu finden. Allerdings lassen sich nicht alle Lizenzierungsfragen standardmäßig lösen. Deswegen offeriert die FSFE neben der REUSE-FAQ eine weitere Zusammenstellung [21] häufig gestellter Fragen zu freier Software, Urheberrecht und Lizenzierung. Für diejenigen, die vielleicht mehr Hilfe benötigen, als die FAQ bieten können, gibt es eine Mailing-Liste für Lizenzierungsfragen [22]. Dort beantworten unsere freiwilligen Experten für rechtliche Fragen zu Freier Software komplexere Fragen.

Im Rahmen von REUSE bieten wir daneben individuelle Einschätzungen und direkte Unterstützung an, was dazu beitragen kann, viele der Zweifel auszuräumen, die Entwickler und Betreuer freier Software haben können. Genau wie freie Software basiert auch das REUSE-Projekt auf seiner Gemeinschaft und den Menschen, die es unterstützen und annehmen. Daher betreiben wir eine weitere Mailing-Liste [23], um andere Nutzer kennenzulernen und die Weiterentwicklung von REUSE zu fördern.

Zurzeit gibt es Tausende Projekte, die REUSE implementierten. Dazu zählen Projekte wie KDE, GNU Health, Curl und teilweise der Linux Kernel. Die Mehrzahl der Projekte des Next Generation Internet [24] hat ebenfalls REUSE übernommen. Ich möchte daher alle Entwicklerinnen und Entwickler ermutigen, REUSE in ihren FOSS-Projekten zu nutzen. Damit helfen sie uns dabei, REUSE zum Standard zu machen, um rechtliche Informationen auf einfachere Weise darzustellen.

LM: Wie kann man die FSFE und das REUSE-Projekt im Einzelnen unterstützen?

LC: Die FSFE ist eine gemeinnützige Organisation. Wir verdanken also einen Großteil unserer Arbeit der Unterstützung all unserer Freiwilligen und Mitwirkenden. Sie unterstützen uns in unseren Arbeitsbereichen, organisieren Veranstaltungen zur Förderung freier Software und helfen uns bei Übersetzungen. Auch REUSE hat ein wunderbares und kompetentes Team von Freiwilligen, die das Projekt vorantreiben und sich über Beiträge [25] anderer freuen. Die Mitwirkungsmöglichkeiten reichen von der Verbesserung unserer Dokumentation über Hilfe bei der Überprüfung von Problemen bis hin zu Code-Checks in offenen Pull Requests.

Außerdem kann man unsere Arbeit an REUSE mit Spenden [26] oder als Unternehmen via Sponsoring [27] unterstützen. Wenn deine Firma also daran interessiert ist, auf diesem Weg zu REUSE beizutragen, sprich uns bitte an. Möchtest du dich uns als Freiwillige(r) anschließen, abonniere unsere REUSE-Mailing-Liste. Auf unserer Website findest du weitere Informationen über unsere Initiative und Möglichkeiten, mit uns in Kontakt zu treten.

LM: Ganz herzlichen Dank für diesen Einblick in die Arbeit von REUSE!

Danksagung

Die Autoren bedanken sich bei Axel Beckert für seine Kritik und Anregungen bei der Vorbereitung des Artikels.

Autoreninfo

Frank Hofmann arbeitet zumeist von unterwegs aus als Entwickler, Trainer und Autor. Bevorzugte Arbeitsorte sind Berlin, Genf und Kapstadt. Er gehört zu den Verfassern des Debian-Paketmanagement-Buchs [28]. Veit Schiele, Gründer und Geschäftsführer der Softwareberatung Cusy GmbH, ist Autor des Jupyter- [29] und des PyViz-Tutorials [30].

Infos

  1. Software-Lizenzen (Teil 1): Frank Hofmann, “Das Kleingedruckte”, LM 04/2025, S. 60: https://www.lm-online.de/49787
  2. Joinup Licensing Assistant: https://joinup.ec.europa.eu/collection/eupl/solution/joinup-licensing-assistant/jla-find-and-compare-software-licenses
  3. Lizenzauswertung bei Github: https://docs.github.com/de/rest/licenses/licenses?apiVersion=2022-11-28
  4. SPDX License List: https://spdx.org/licenses/
  5. Lizenzvergleich: https://choosealicense.com/appendix/
  6. “How to Choose a License for Your Own Work”: https://www.gnu.org/licenses/license-recommendations.html
  7. DEB-License-Datei: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/#id-1.6.5.6
  8. “What is a SPEC File?”: https://rpm-packaging-guide.github.io/#what-is-a-spec-file
  9. Fedora Licensing Guidelines: https://docs.fedoraproject.org/de/legal/
  10. “Writing your pyproject.toml”: https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license.sprach
  11. Matplotlib: https://pypi.org/project/matplotlib/
  12. Trove Classifiers: https://github.com/pypa/trove-classifiers/issues/17
  13. Python Enhancement Proposal 639: https://peps.python.org/pep-0639/
  14. SPDX: https://spdx.dev
  15. “Comparison of free and open-source software licenses”: https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses
  16. REUSE: https://reuse.software
  17. FSFE: https://fsfe.org
  18. REUSE-Softwarespezifikation: https://reuse.software/spec/
  19. REUSE-Hilfsprogramm: https://reuse.readthedocs.io/en/v2.1.0/readme.html
  20. REUSE-FAQ: https://reuse.software/faq/
  21. FSFE-FAQ: https://fsfe.org/freesoftware/legal/faq.html
  22. FSFE-Mailing-Liste: mailto:licence-questions@fsfe.org
  23. REUSE-Mailing-Liste: https://lists.fsfe.org/mailman/listinfo/reuse
  24. Next Generation Internet: https://www.ngi.eu/
  25. Mitwirkung bei REUSE: https://reuse.readthedocs.io/en/stable/authors.html#contributors
  26. FSFE-Spendeninformationen: https://my.fsfe.org/donate
  27. Unterstützer von REUSE: https://reuse.software/supporters/
  28. Debian-Paketmanagement-Buch: https://dpmb.org
  29. Jupyter-Tutorial: https://jupyter-tutorial.readthedocs.io/de/latest/
  30. PyViz-Tutorial: https://pyviz-tutorial.readthedocs.io/de/latest/index.html
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben