Wie GitHubs Legal-Cheat-Sheet funktioniert und warum man choosealicense.com lokal einsetzt
Ihr seid dem Lizenzauswahlformular beim Erstellen eines neuen Repositorys auf GitHub bestimmt schon begegnet. Ein paar Klicks, und euer Projekt erhält eine Datei mit dem korrekten Copyright und dem aktuellen Jahr. Wenige wissen, dass diese gesamte Logik, prägnante Erklärungen und mit Symbolen hervorgehobene Rechte in einem offenen Repository verfügbar sind.
Das Projekt entstand aus einer einfachen Idee. Entwickler verstehen selten die rechtlichen Feinheiten und wollen keine Dutzende Seiten Rechtstext lesen. Sie brauchen eine klare Antwort: Was man mit dem Code machen darf und was nicht. Die Website erfüllt diesen Bedarf, und das Repository selbst dient als Backend für GitHubs Lizenzsystem.
Warum dieses Repository existiert
Zunächst einmal ist es eine statische Jekyll-Website. Ihr Hauptziel ist es, komplexe Rechtstexte in verständliche Kategorien zu zerlegen, ohne Werturteile zu fällen. Die Autoren drängen euch keine bestimmte Lizenz auf – sie stellen ein Werkzeug zur eigenen Entscheidungsfindung bereit.
Über den Betrieb der Website hinaus wird der Inhalt des Repositorys regelmäßig in das Ruby-Gem Licensee importiert. Diese Bibliothek ist das, was GitHub selbst antreibt, um den Lizenztyp in euren Projekten zu bestimmen, seinen Status in der Repository-Oberfläche anzuzeigen und Daten über die GitHub-API bereitzustellen.
Wie Lizenzen intern strukturiert sind
Die gesamte Magie der Website und Integrationen basiert auf strukturierten Beschreibungen jedes Dokuments. Der Ordner enthält Markdown-Dateien. Jede Lizenz hat einen YAML-Header (Front Matter) und den vollständigen Rechtstext.
Der YAML-Header definiert Metadaten:
Regeln sind in drei Kategorien unterteilt: Berechtigungen, Bedingungen und Einschränkungen. Die vollständige Erklärung einzelner atomarer Regeln wie oder wird separat in einer Datei gespeichert. Wenn ihr eine neue Bedingung hinzufügen müsst, beschreibt ihr sie einmal in und verweist in den Lizenzdateien darauf.
Bei der Erstellung eines neuen Repositorys nimmt GitHub die Vorlage und ersetzt die integrierten Variablen durch reale Werte:
- oder den Namen des Autors
- das aktuelle Jahr
- für den Repository-Namen
- für einen Link zum Projekt
Automatische Builds und mehrsprachige Unterstützung
Die Website unterstützt Übersetzungen der Oberfläche und kurze Anmerkungen durch das Jekyll-Plugin. Die eigentlichen Rechtstexte der Lizenzen werden absichtlich nicht übersetzt, um die rechtliche Bedeutung der Originaldokumente nicht zu verzerren.
Da nicht zur Standardliste der von GitHub Pages unterstützten Plugins gehört, erfolgt das Deployment über GitHub Actions. Der Workflow baut die Website und veröffentlicht das fertige statische Bundle im Branch.
Das Projekt lokal ausführen
Ihr könnt in wenigen Minuten eine lokale Kopie der Website bereitstellen. Ihr benötigt die Compiler und installiert.
Unter macOS werden Abhängigkeiten über Homebrew installiert:
Unter Ubuntu oder Debian genügt der Standard-Paketmanager:
Anschließend klont ihr das Repository zusammen mit Submodulen und führt die Build-Skripte aus:
Die Website ist unter verfügbar. Ihr könnt Dateien in bearbeiten und die Ergebnisse sofort in eurem Browser sehen.
Das Repository in euren Projekten verwenden
Ein lokaler Build oder Fork des Projekts ist in verschiedenen Situationen hilfreich:
- Erstellung einer internen Datenbank für Rechtstexte. Große Unternehmen haben oft eigene Regeln für die Nutzung von Code Dritter. Ihr könnt das Repository forken, Unternehmensanforderungen hinzufügen und einen internen Referenzleitfaden bereitstellen.
- Lizenzen in CLI-Tools generieren. Wenn ihr einen eigenen Projekt-Template-Generator schreibt, ist dies eine praktische Quelle für geprüfte LICENSE-Texte mit Auto-Substitutionsvariablen.
- Automatisierte Codebase-Audits. Basierend auf den Regeldateien in könnt ihr leicht einen einfachen Linter schreiben, um Abhängigkeiten von Drittanbietern in eurer CI/CD-Pipeline zu überprüfen.
- Die Architektur mehrsprachiger Jekyll-Sites erlernen. Die benutzerdefinierte Build-Pipeline mit dem Plugin dient als großartiges Beispiel für eure eigenen statischen Projekte.
Zusammenfassung
Das Repository ist ein großartiges Beispiel dafür, wie langweilige Rechtstexte in eine praktische Datenstruktur verwandelt werden. Das Projekt kombiniert eine benutzerfreundliche Weboberfläche, maschinenlesbare Metadaten und Auto-Substitutionsmechanismen. Wenn ihr die Lizenzierung in euren eigenen Projekten organisieren oder einen praktischen Referenzleitfaden für euer Team erstellen müsst, ist der Quellcode dieser Website ein ausgezeichneter Ausgangspunkt.
Ähnliche Projekte