Lizenzieren¶
Damit andere eure Software verwenden können, sollte sie eine oder mehrere Lizenzen erhalten, die die Nutzungsbedingungen beschreiben. Andernfalls dürfte sie meist urheberrechtlich geschützt sein. Urheber sind diejenigen, die zur Software originär beigetragen haben. Wenn eine Software relizenziert werden soll, ist häufig die Zustimmung aller Personen erforderlich, die Urheberschaft beanspruchen können.
Bemerkung
Dies stellt keine Rechtsberatung dar. Wendet euch im Zweifelsfall an eine Rechtsvertretung oder die Rechtsabteilung eures Unternehmens.
Siehe auch
Proprietäre Softwarelizenzen¶
Proprietäre Softwarelizenzen sind selten standardisiert; sie können kommerziell, Shareware oder Freeware sein.
Freie und Open-Source Softwarelizenzen¶
Sie werden von der Free Software Foundation (FSF) und der Open Source Initiative (OSI) definiert. Dabei kann im Wesentlichen unterschieden werden zwischen Copyleft-, freizügigen- und gemeinfreien Lizenzen.
Copyleft- oder reziproke Lizenzen¶
Copyleft-Lizenzen verpflichten die Lizenznehmer, jegliche Bearbeitung der Software (sog. Derivate, unter die Lizenz des ursprünglichen Werks zu stellen. Dies soll Nutzungseinschränkungen der Software verhindern. Die bekannteste Copyleft-Lizenz ist die GPL. Dabei wird das Copyleft der GPL (GNU General Public License) als sehr stark, das der Mozilla Public License hingegen als sehr schwach angesehen.
Da die Lizenzgeber nicht selbst an ihr eigenes Copyleft gebunden sind, können sie neue Versionen auch unter proprietärer Lizenz veröffentlichen oder Dritten dies erlauben (Mehrfachlizenzierung).
Durch Copyleft-Lizenzen können bei der Verbreitung zusammen mit Software unter anderen freien Lizenzen jedoch schnell Inkompatibilitäten entstehen. So ist beispielsweise die 3-Clause-BSD-Lizenz mit der GPL inkompatibel.
Die EUPL ist hingegen eine reziproke Lizenz, die zumindest mit den meisten anderen offenen reziproken Lizenzen kompatibel und interoperabel ist: Die kompatiblen Lizenzverpflichtungen haben Vorrang, wenn sie mit den sich aus der EUPL ergebenden Verpflichtungen in Konflikt geraten.
Freizügige Open-Source-Lizenzen¶
Freizügige oder permissive Open-Source-Lizenzen erlauben eine breitere Wiederverwendung als die Copyleft-Lizenzen. Ableitungen und Kopien des Quellcodes können unter Bedingungen verbreitet werden, die grundlegend andere Eigenschaften haben als die der Originallizenz. Die bekanntesten Beispiele solcher Lizenzen sind MIT und BSD.
Gemeinfreie Lizenzen¶
Bei gemeinfreien oder Public Domain-Lizenzen gehen die Urheberrechte an die Allgemeinheit über. Zur Kennzeichnung der Gemeinfreiheit von Software wurde die WTFPL erstellt.
Nicht-Software-Lizenzen¶
Open-Source-Software-Lizenzen werden häufig auch für Werke verwendet, die nicht Software sind. Oft sind sie jedoch nicht die beste Wahl.
Daten, Medien, etc.¶
CC0 1.0, CC BY 4.0 und CC BY-SA 4.0 sind offene Lizenzen, die für Nicht-Software-Material verwendet werden, von Datensätzen bis zu Videos. Sie sind jedoch nicht für Software empfohlen.
Tipp
Das DEAL-Konsortium empfiehlt für Open-Access-Veröffentlichungen von Forschungsergebnissen die CC BY-Lizenz, s.a. Warum CC BY die beste Wahl für Open-Access-Publikationen ist.
Das RADAR, ein disziplinübergreifendes Repository zur Archivierung und Veröffentlichung von Forschungsdaten empfiehlt hingegen nur eine der CC-Lizenzen.
Die Open Knowledge Foundation hat ebenfalls eine Reihe von Open Data Commons-Lizenzen für Daten/Datenbanken veröffentlicht:
- Open Data Commons Open Database License (ODbL) v1.0
Namensnennung und Weitergabe unter gleichen Bedingungen.
- Open Data Commons Attribution License (ODC-By) v1.0
Namensnennung.
- Open Data Commons Public Domain Dedication and License (PDDL) v1.0
Die PDDL stellt die Daten in den öffentlichen Bereich und verzichtet auf alle Rechte.
GovData hat die Datenlizenz Deutschland in zwei Varianten vorgelegt:
Das Community Data License Agreement kann in vier verschiedenen Varianten genutzt werden:
Eine weitere mögliche Lizenz für künstlerische Werke ist die Free Art License 1.3.
Machine Learning-Modelle¶
Es ist eine offene Frage, ob KI/ML-Modellgewichte überhaupt urheberrechtsfähig sind. Das US-Urheberrechtsgesetz schließt ausdrücklich „jede Idee, jedes Verfahren, jeden Prozess, jedes System, jede Betriebsmethode, jedes Konzept, jeden Grundsatz oder jede Entdeckung, unabhängig von der Form, in der sie in einem solchen Werk beschrieben, erläutert, illustriert oder verkörpert werden“ von urheberrechtlich schützbaren Werken aus.Darüber hinaus hat das US-Urheberrechtsamt erklärt, dass sich dieser Ausschluss auch auf „wissenschaftliche oder technische Methoden oder Entdeckungen“, „mathematische Prinzipien“ und „Formeln oder Algorithmen“ erstreckt.
Es ist noch nicht klar, ob Modellgewichte als Werke menschlicher Urheberschaft oder eher als Ergebnisse automatisierter Prozesse angesehen werden können. Diese Fragen müssen von den Gerichten erst noch entschieden werden.
Während viele ML-Modelle offene Softwarelizenzen verwenden wie z.B. MIT oder Apache 2.0, gibt es eine Reihe von ML-Modell-spezifischen Lizenzen, die für ein Unternehmen oder bestimmte Modelle entwickelt wurden:
-
Es gibt noch weitere Responsible AI Licenses (RAIL) mit verschiedenen Nutzungsbeschränkungen:
- OpenRAIL-D
enthält Nutzungsbeschränkungen, die sich nur auf die Daten beziehen.
- OpenRAIL-A
enthält Nutzungsbeschränkungen, die nur für die Anwendung/Ausführbarkeit gelten.
- OpenRAIL-M
enthält Nutzungsbeschränkungen, die nur für das Modell gelten.
Siehe auch
- RAIL-S
enthält Nutzungsbeschränkungen, die nur für den Quellcode gelten.
KI-Modelle, die zwar unter einer Open-Source-Lizenz stehen, deren Schulungsdaten und -Programme jedoch nicht veröffentlicht wurden, sind nicht konform mit den Debian Free Software Guidelines (DFSG), s.a. Interpretation of DFSG on Artificial Intelligence (AI) Models.
Auch für die Open Source Initiative (OSI) geht die Definition von Open-Source-KI weit über die Verwendung eines Modells hinaus – es muss auch verständlich sein, wie das Modell erstellt wurde, und das Modell muss auch verändert und mit anderen geteilt für jeden Zweck geteilt werden können. Diese vier Freiheiten sind erfüllt mit
- Open Data
Ausreichend detaillierte Informationen über die zum Training des Systems verwendeten Daten, so dass ein im Wesentlichen gleichwertiges System aufgebaut werden kann.
- Open Code
Der vollständige Quellcode, der für das Training und den Betrieb des Systems verwendet wird unter von der OSI genehmigten Lizenzen.
- Open Weights
Modellparameter, wie z. B. Gewichte oder andere Konfigurationseinstellungen unter von der OSI genehmigten Lizenzen.
Die OSI entwickelte entsprechend OSAID 1.0, die u.a. für folgende Modelle gilt:
The Allen Institute for Artificial Intelligence: OLMo 2, Molmo
LLM360: K2, Amber, CrystalCoder
Google: T5
Vermutlich würden auch die folgenden Modelle die Anforderungen erfüllen, wenn sie ihre rechtlichen Bedingungen ändern würden:
BigScience: Bloom
BigCode: StarCoder 2
Technology Innovation Institute: Falcon
Es gibt jedoch auch einige Modelle, die analysiert wurden und nicht bestanden haben, weil ihnen erforderlichen Komponenten und/oder rechtlichen Vereinbarungen fehlen:
Meta: Llama2
xAI: Grok
Microsoft: Phi-2
Mistral AI: Mixtral
Siehe auch
The Turing Way Community: Licensing Machine Learning models
Alek Tarkowski, Open Future in Zusammenarbeit mit der Open Source Initiative: Data Governance in Open Source AI
Andreas Liesenfeld, Mark Dingemanse: Rethinking open source generative AI: open-washing and the EU AI Act
Datenbanken¶
Einige der wenigen Lizenzen für Datenbanken ist die Open Data Commons Open Database License (ODbL) v1.0, die z.B. von OpenStreetMap (OSM) verwendet wird.
Dokumentation¶
Jede Open-Source-Softwarelizenz oder offene Lizenz für Medien gilt auch für Software-Dokumentation. Wenn ihr unterschiedliche Lizenzen für eure Software und deren Dokumentation verwendet, solltet ihr darauf achten, dass die Quellcode-Beispiele in der Dokumentation auch unter der Software-Lizenz lizenziert sind. Neben den oben bereits genannten Creative Commons-Lizenzen gibt es speziell für freie Dokumentationen folgende Lizenzen.
- GNU Free Documentation License (FDL)
Copyleft-Lizenz für Dokumentationen, die für alle GNU-Handbücher verwendet werden soll. Ihre Anwendbarkeit ist auf textuelle Werke (Bücher) beschränkt.
- FreeBSD Documentation License
Freizügige Dokumentationslizenz mit Copyleft, die mit der GNU FDL vereinbar ist.
- Open Publication License, Version 1.0
freie Dokumentationslizenz mit Copyleft, sofern keine der Lizenzoptionen aus Abschnitt VI der Lizenz wahrgenommen werden. In jedem Fall ist sie mit der GNU FDL unvereinbar.
Schriftarten¶
- SIL Open Font License 1.1
Schriftlizenz, die in anderen Werken frei verwendet werden kann.
- GNU General Public License 3
Sie kann auch für Schriften verwendet werden, sie darf jedoch nur mit der Schriftausnahme in Dokumente eingebunden werden.
Siehe auch
- LaTeX ec fonts
Freie European Computer Modern- und Text Companion-Schriften, die üblicherweise mit Latex verwendet werden.
- Arphic Public License
Freie Lizenz mit Copyleft.
- IPA Font license
Freie Lizenz mit Copyleft, deren abgeleitete Werte jedoch nicht den Namen des Originals verwenden oder beinhalten dürfen.
Hardware¶
Die Open Source Hardware Association (OSHWA) akzeptiert neben der GNU General Public License (GPL) und den Creative Commons Lizenzen auch die folgenden speizialisierten Lizenzen:
- CERN-OHL-P-2.0
Freizügige Variante
- CERN-OHL-W-2.0
Schwach wechselseitige Variante
- CERN-OHL-S-2.0
Copyleft- oder stark wechselseitige Variante
- TAPR
Copyleft-Lizenz
- Solderpad Hardware License
Freizügige Lizenz, die auf der Apache 2.0-Softwarelizenz basiert
Siehe auch
Auswahl geeigneter Lizenzen¶
Übersichten über mögliche Lizenzen findet ihr in SPDX License List oder OSI Open Source Licenses by Category. Bei der Wahl geeigneter Lizenzen unterstützt euch die Website Choose an open source license und Comparison of free and open-source software licenses.
Wenn ihr z.B. eine möglichst große Verbreitung eures Pakets erreichen wollt, sind MIT- oder die BSD-Varianten eine gute Wahl. Die Apache-Lizenz schützt euch besser vor Patentverletzungen, ist jedoch nicht kompatibel mit der GPL v2.
Abhängigkeiten überprüfen¶
Zudem solltet ihr schauen, welche Lizenzen diejenigen Pakete haben, von denen ihr abhängt und zu denen ihr kompatibel sein solltet:
Lizenzkompatibilität für abgeleitete Werke oder kombinierte Werke aus eigenem Code und externem Code, der unter einer Open-Source-Lizenz steht (aus License compatibility, in Anlehnung an The Rise of Open Source Licensing S. 119).¶
Siehe auch
Um Lizenzen zu analysieren, könnt ihr euch license compatibility anschauen.
Mit liccheck
könnt ihr Python-Pakete und ihre Abhängigkeiten mit einer
requirement.txt-Datei überprüfen z.B.:
liccheck -s liccheck.ini -r requirements.txt
gathering licenses...
3 packages and dependencies.
check unknown packages...
3 packages.
cffi (1.15.1): ['MIT']
dependency:
cffi << cryptography
cryptography (41.0.3): ['Apache Software', 'BSD']
dependency:
cryptography
pycparser (2.21): ['BSD']
dependency:
pycparser << cffi << cryptography
Darüberhinaus kann es auch sinnvoll sein, ein Package unter mehreren Lizenzen zu veröffentlichen. Ein Beispiel hierfür ist cryptography/LICENSE:
This software is made available under the terms of either of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made under the terms of both these licenses.
The code used in the OpenSSL locking callback and OS random engine is derived from the same in CPython, and is licensed under the terms of the PSF License Agreement.
GitHub¶
Auf GitHub könnt ihr euch eine Open Source-Lizenz in eurem Repository erstellen lassen.
Geht zur Hauptseite eures Repository.
Klickt auf Create new file und gebt anschließend als Dateiname
LICENSEoderLICENSE.mdein.Anschließend könnt ihr rechts neben dem Feld für den Dateinamen auf Choose a license template klicken.
Nun könnt ihr die für euer Repository passende Open Source-Lizenz auswählen.
Ihr werdet nun zu zusätzlichen Angaben aufgefordert, sofern die gewählte Lizenz dies erfordert.
Nachdem ihr eine Commit-Message angegeben habt, z.B.
Add license, könnt ihr auf Commit new file klicken.
Falls ihr in eurem Repository bereits eine /LICENSE-Datei hinzugefügt habt,
verwendet GitHub licensee um die Datei
mit einer kurzen Liste von Open-Source-Lizenzen abzugleichen. Falls GitHub die Lizenz
eures Repository nicht erkennen kann, enthält es möglicherweise mehrere
Lizenzen oder ist zu komplex. Überlegt Euch dann, ob ihr die Lizenz vereinfachen
könnt, z.B. indem ihr Komplexität in die
/README-Datei auslagert.
Umgekehrt könnt ihr auf GitHub auch nach Repositories mit bestimmten Lizenzen oder Lizenzfamilien suchen. Eine Übersicht über die Lizenz-Schlüsselwörter erhaltet ihr in Searching GitHub by license type.
Schließlich könnt ihr euch von Shields.io ein
License-Badge generieren lassen, das ihr z.B. auf eurer
README-Datei einbinden könnt:
|License|
.. |License| image:: https://img.shields.io/github/license/veit/python4datascience.svg
:target: https://github.com/veit/python4datascience/blob/main/LICENSE
Standardformat für die Lizenzierung¶
SPDX steht für Software Package Data Exchange und definiert eine standardisierte Methode zum Austausch von Urheberrechts- und Lizenzinformationen zwischen Projekten und Personen. Die passenden SPDX-Identifier könnt ihr aus der SPDX License List auswählen und dann in den Kopf eurer Lizenzdateien eintragen:
# SPDX-FileCopyrightText: [year] [copyright holder] <[email address]>
#
# SPDX-License-Identifier: [identifier]
Konformität überprüfen¶
REUSE¶
REUSE wurde von der FSFE initiiert, um die Lizenzierung freier Software-Projekte zu erleichtern. Das REUSE tool überprüft Lizenzen und unterstützt euch bei der Einhaltung der Lizenzkonformität, z.B.:
$ cd cryptography
$ reuse lint
# FEHLENDE URHEBERRECHTS- UND LIZENZINFORMATIONEN
Die folgenden Dateien haben keine Urheberrechts- und Lizenzinformationen:
* .gitattributes
* .github/ISSUE_TEMPLATE/openssl-release.md
…
* vectors/cryptography_vectors/x509/wosign-bc-invalid.pem
* vectors/pyproject.toml
Die folgenden Dateien haben keine Lizenzinformationen:
* docs/_ext/linkcode_res.py
* src/cryptography/__about__.py
# ZUSAMMENFASSUNG
* Falsche Lizenzen: 0
* Veraltete Lizenzen: 0
* Lizenzen ohne Dateiendung: 0
* Fehlende Lizenzen: 0
* Unbenutzte Lizenzen: 0
* Verwendete Lizenzen: 0
* Read errors: 0
* files with copyright information: 2 / 2806
* files with license information: 0 / 2806
Leider ist Ihr Projekt nicht konform mit Version 3.0 der REUSE-Spezifikation :-(
Mit der REUSE API könnt ihr euch auch ein dynamisches Compliance-Badge generieren:
GitLab-CI-Workflow¶
Ihr könnt REUSE problemlos in euren Continuous Integration-Workflow integrieren:
Ihr könnt reuse lint automatisch als Pre-Commit-Hook bei jedem Commit ausführen lassen, indem ihr
Folgendes zu eurer .pre-commit-config.yaml-Datei hinzufügt:
repos:
- repo: https://github.com/fsfe/reuse-tool
rev: v2.1.0
hooks:
- id: reuse
Fügt der .gitlab-ci.yml-Datei Folgendes hinzu:
reuse:
image:
name: fsfe/reuse:latest
entrypoint: [""]
script:
- reuse lint
Auf GitHub könnt ihr die REUSE-Aktion mit der GitHub-Aktion REUSE
Compliance Check in euren
Workflow integrieren, indem ihr z.B. Folgendes zu
eurer workflow .yml-Datei hinzufügt:
name: REUSE Compliance Check
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v2
Alternativen¶
- ISO/IEC 5230/OpenChain
empfiehlt REUSE als eine Komponente, um die Klarheit der Lizenz- und Urheberrechtssituation zu verbessern, stellt jedoch höhere Anforderungen, um eine vollständige Konformität zu erreichen.
Sie basiert auf der OpenChain Specification 2.1 und ist ein internationaler Standard zu Software-Lieferketten, vereinfachter Beschaffung und Open-Source-Lizenz-Compliance.
- AboutCode
ist eine Community von Open-Source-Entwicklern, die die Nutzung von Open Source durch die Entwicklung von Open-Source-Tools für die Software Composition Analysis (SCA) erleichtern.
- ScanCode
bietet eine Reihe von Tools und Anwendungen zum Scannen von Software-Codebasen und -paketen, um den Ursprung und die Lizenz (Provenienz) von Open-Source-Software (und anderer Software von Drittanbietern) zu ermitteln.
- DeltaCode
vergleicht zwei Codebase-Scans, um signifikante Änderungen zu erkennen.
- ClearlyDefined
sammelt und zeigt Informationen über die Lizenzierungs- und Urheberrechtssituation eines Software-Projekts an.
- FOSSology
ist ein Toolkit für die Einhaltung freier Software, das Informationen in einer Datenbank mit Lizenz-, Copyright- und Exportscanner speichert.
- OSS Review Toolkit (ORT)
ist ein Toolkit zur Automatisierung und Orchestrierung von FOSS-Richtlinien, mit dem ihr eure (Open-Source-)Software-Abhängigkeiten verwalten könnt. Es
generiert OWASP CycloneDX, SPDX Software Bill of Materials (SBOM) oder benutzerdefinierte FOSS-Attributionsdokumentation für euer Softwareprojekt
automatisiert eure FOSS-Policy, um euer Softwareprojekt und seine Abhängigkeiten auf Lizenzierung, Sicherheitslücken, Quellcode und technische Standards zu prüfen
erstellt ein Quellcode-Archiv für euer Softwareprojekt und seine Abhängigkeiten, um bestimmte Lizenzen einzuhalten
korrigiert Paket-Metadaten oder Lizenzfeststellungen selbst
Siehe auch
- licensechecker
Ein Kommandozeilenwerkzeug, das Installationsverzeichnisse nach Lizenzen durchsucht.
Siehe auch
Python-Paket-Metadaten¶
Mit PEP 658 wird die METADATA-Datei aus Distributionen in der
PEP 503-Repository-API auf PyPI verfügbar. Damit können die Metadaten
der Verteilungspakete analysiert
werden ohne dass das ganze Paket heruntergeladen werden muss.
In Python-Paketen gibt es noch weitere Felder, in denen Lizenzinformationen gespeichert werden, wie die Core metadata specifications, die zudem limitiert sind. Dies führt nicht nur zu Problemen für die Autoren, die richtige Lizenz angeben zu können, sondern auch zu Problemen beim Re-Paketieren für diverse Linux-Distributionen.
Aktuell werden zwar einige häufige Fälle abgedeckt und die Lizenzklassifizierung
kann auch erweitert werden, es gibt jedoch einige beliebte Klassifizierungen wie
License :: OSI Approved :: BSD License, die abgeschafft werden. Damit
ist dann jedoch die Abwärtskompatibilität nicht mehr gewährleistet und die
Pakete müssen relizensiert werden. Immerhin habt ihr mit trove-classifiers auch eine Möglichkeit, eure
Trove-Klassifizierungen zu überprüfen.