Mehrere Lizenzen in einem GitHub-Projekt deklarieren

28

Seit Jahren bin ich ein großer Fan von Lizenzen für Dinge, die online geteilt werden, damit andere leichter feststellen können, ob und wie sie diese wiederverwenden können. Bevor GitHub anfing, seine Benutzer sanft dazu zu bringen, LICENSE-Dateien in ihre Repos aufzunehmen, wusste ich nicht, wie man dies am besten mit Code macht - insbesondere mit Code, der öffentlich auf GitHub geteilt wird! - aber ich habe seitdem versucht, LIZENZ-Dateien gut zu nutzen.

Ich bin jetzt in der Situation, in der ich mit einigen anderen Leuten an einem kleinen Projekt gearbeitet habe, bei dem mehrere Lizenzen erwähnt werden müssen (aufgrund von Code und Bibliotheken von Drittanbietern sowie Nicht-Code-Dateien). Während meine Partner das Problem eher "schlampig" angehen - es wurde mir vorgeschlagen, "den Code einfach so online zu stellen, wie er ist, es wird niemanden interessieren" -, mache ich das lieber richtig. Das Problem ist: Ich weiß nicht, wie man mehrere (verschiedene) Lizenzen auf GitHub erwähnen soll.

Ich habe auf GitHub verschiedene Lösungen gesehen , weshalb es für mich schwer zu beurteilen ist, ob diese Antwort auf eine etwas andere Frage maßgeblich ist. Ich würde gerne wissen, welche der folgenden - wenn überhaupt - am häufigsten vorkommt oder ob es andere, zusätzliche Möglichkeiten gibt, dies zu tun.

  1. Erstellen Sie eine einzige LIZENZ-Datei und tragen Sie dort die Beschreibungen aller verschiedenen Lizenzen ein. ( Fragen : Sollten sie in eine bestimmte Reihenfolge gebracht werden? Würde ich die Datei mit den Namen aller darin enthaltenen Lizenzen beginnen, um eine bessere Übersicht zu erhalten)?
  2. Erstellen einer Lizenzdatei pro Lizenz verwendet und nennen sie LICENSE.md, LICENSE.LibNameA.md, LICENSE.AssetsB.mdusw. , wie in der verknüpften Antwort vorgeschlagen. ( Frage : Die Benennung würde auf Projektnamen basieren. Keine Lizenznamen. Wenn ich mehr als eine Lizenz für selbst beigesteuertes Material verwenden würde, würde ich sie alle in der Hauptnachricht erwähnen LICENSE.md. Wenn nicht, was würde ich stattdessen tun?)
  3. Erstellen Sie zwei LIZENZ-Dateien : eine, in der die Lizenz (en) für den Hauptinhalt aufgeführt sind, dh der gesamte Code / das gesamte Vermögen, das Sie selbst erstellt haben; eine für alle Materialien von Drittanbietern. ( Fragen wie oben : Gibt es ein bestimmtes Benennungsschema und eine Reihenfolge, in der die Materialien von Drittanbietern aufgelistet werden?)

Wenn ich die verschiedenen GitHub-Erklärungen und -Projekte in Bezug auf die Lizenz-API richtig verstanden habe, wird bei der Bestimmung der Lizenz eines Repos nur die 'Haupt'-LIZENZ-Datei berücksichtigt (obwohl ich nicht in der Lage war, herauszufinden, welche Lizenz ausgewählt werden würde) wenn mehrere erwähnt wurden).

Kay
quelle
2
Habe also eine README und eine oder mehrere LIZENZ-Dateien. Dies ist keine Raketenwissenschaft.
Robert Harvey
4
In Bezug auf die verlinkte Seite: Sie hat nichts mit der Verteilung von Lizenzdateien zu tun, sondern mit der GitHub-Lizenz-API, die die Lizenz eines Repos ermittelt / zurückmeldet. Da ich nach der Lizenzierung / Verwendung von LICENSE-Dateien auf GitHub gefragt habe, nicht nach Open Source oder Git im Allgemeinen, ist auch die Art und Weise, wie ein Open Source-Projekt für die Lizenzierung dort dargestellt wird, relevant. "Das ist keine Raketenwissenschaft" ist übrigens nicht besonders hilfreich. Nicht im Kontext meiner GitHub-fokussierten Frage.
Kay
2
Ich könnte vorschlagen, dass Ihre README-Datei einen Abschnitt zur Lizenzierung enthält, in dem lediglich angegeben wird, dass mehrere Lizenzen vorhanden sind, und für jede Lizenz der Name der LIZENZ-Datei angegeben wird, in der sich die Lizenz befindet.
Erik Eidt
3
@immibis Mir ist das bewusst und es ist überhaupt nicht das, worum es in meiner Frage ging. Ich habe speziell nach einer Antwort gefragt, was für den Menschen am sinnvollsten ist (auf: GitHub).
Kay
3
@immibis: "Kein Compiler wird es lesen" - das Problem ist genau genommen, dass dies für Github nicht zutrifft. Github verwendet ein automatisches Tool, um "die" Lizenz zu bestimmen, die auf den Inhalt des Repositorys angewendet wird. Der Name der so festgelegten Lizenz wird dann in der Titelleiste des Repositorys angezeigt, zusammen mit einigen allgemeineren Informationen, die den Besuchern einen grundlegenden Eindruck vom Projekt vermitteln (z. B. Anzahl der Mitwirkenden und Veröffentlichungen).
ODER Mapper

Antworten:

15

Sie können einen beliebigen Mechanismus verwenden, um die Lizenzen einzuschließen, die Sie möchten, sofern einem Besucher Ihres Projekts klar wird, welche Lizenz für welchen Teil des Projekts gilt.

Meine Präferenz wäre:

  • Legen Sie jede Bibliothek eines Drittanbieters, die Sie verwenden, in einem eigenen Verzeichnis ab. Dieses Verzeichnis sollte alle Dateien enthalten , die Teil der Bibliotheksdistribution sind, einschließlich der Lizenz- und Readme-Dateien.
  • Beziehen Sie sich in Ihrer eigenen Lizenzdatei nur auf die Lizenz Ihres eigenen Codes
  • Geben Sie in der Readme-Datei Ihres Projekts an, welche Bibliotheken von Drittanbietern Sie verwenden und unter welcher Lizenz die einzelnen Bibliotheken vertrieben werden. Ausführliche Informationen zur Lizenz finden Sie in der Lizenzdatei im Verzeichnis der Bibliothek.
Bart van Ingen Schenau
quelle
1
Wie würden Sie in diesem Szenario mit Ihrer eigenen LIZENZ-Datei umgehen, wenn Sie eigene Inhalte doppelt lizenzieren? Dh, wenn Sie für verschiedene Teile des Projekts unterschiedliche Lizenzen verwendet haben (Code oder Mediendateien) oder wenn Sie Ihren Code unter zwei (oder mehr) verschiedenen Softwarelizenzen verteilen möchten? Das Einfügen zusätzlicher Informationen in die README - Datei ist sehr sinnvoll und das würde ich auch tun. Ich bin jedoch besonders daran interessiert, wie mit LIZENZ - Dateien auf GitHub umgegangen werden soll das Projekt einen schnellen Überblick).
Kay
1
Wenn (Teile) meines eigenen Codes doppelt lizenziert sind, würde ich dem Projekt zwei (oder mehr) Lizenzdateien hinzufügen, eine für jede Lizenz, und in der Readme-Datei verdeutlichen, welche Lizenz in welchem ​​Fall gilt.
Bart van Ingen Schenau
1
Bart, danke, dass du mitteilst, wie du es machen würdest - das ist viel hilfreicher als einige der Kommentare, die ich erhalten habe. :) Ich habe inzwischen tatsächlich GitHub kontaktiert und werde diese Frage für den Fall offen lassen, dass etwas daraus wird.
Kay
2
Wenn Sie eine Antwort von Github erhalten, posten Sie diese Informationen bitte als Selbstantwort auf diese Frage.
Bart van Ingen Schenau
1
Ich werde es auf jeden Fall tun, wenn es für sie in Ordnung ist, da es auch für andere interessant sein könnte, es zu wissen!
Kay
12

In einer Präsentation der SPDX- Ersteller ( Folie 12 ) wird sehr deutlich:

Inhalt von LICENSE:

Apache-2.0 OR GPL-2.0-or-later

Sie können dann zwei zusätzliche LIZENZ-Dateien hinzufügen: LICENSE.Apache-2.0und LICENSE.GPL-2.0-or-later.

In allen Fällen README.mdsollte die eine SPDX-Lizenzkennung enthalten :

SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

Du kannst es so machen:

## License

This work is dual-licensed under Apache 2.0 and GPL 2.0 (or any later version).
You can choose between one of them if you use this work.

`SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later`

Beachten Sie das Apache-2.0 OR GPL-2.0-or-laterund Apache-2.0 AND GPL-2.0-or-latermacht einen großen Unterschied. Ersteres bedeutet, dass der Benutzer zwischen beiden wählen kann (was der Normalfall ist!), Und das zweite bedeutet, dass der Benutzer beide Lizenzen einhalten muss . Siehe auch Mehrfachlizenzierung auf Wikipedia.

Beachten Sie, dass ich hier die neue SPDX- Lizenzliste 3.0 (Stand 28.12.2017 ) verwende. Die Versionen von 2017 hatten GPL-2.0eine Kennung für GPL 2.0, aber es war nicht klar, ob dies "nur GPL 2.0" oder "GPL 2.0 oder eine spätere Version" bedeutete.

koppor
quelle
4

Ich habe irgendwann den GitHub-Support direkt bezüglich meiner Frage kontaktiert und sie sagten, es sei in Ordnung, sie zu zitieren, wenn ich klarstellte, dass ihre Antworten nur als Vorschläge gedacht waren, nicht als Empfehlungen.

Unser Team hat derzeit keine besonderen Empfehlungen zu bieten. Wir werden uns jedoch darum kümmern, Sie zu informieren, wenn wir noch etwas zu teilen haben.

Ihre ursprüngliche Antwort hatte folgendes zu bieten:

Ein Vorschlag ist, eine LIZENZ-Datei für den Großteil Ihres Codes zu haben und den Text der Lizenzen für die übrigen Materialien von Drittanbietern in Ihre README-Datei aufzunehmen.

Eine andere Möglichkeit besteht darin, dass jeder Pfad eine eigene LIZENZ-Datei hat, wenn dies sinnvoll ist. Wenn Ihr Repository beispielsweise den folgenden Pfad hat: libs / awesome-lib-v2 / Sie könnten libs / awesome-lib-v2 / LICENSE haben.

In letzterem Fall können Sie dies in der README-Datei und / oder der LICENSE-Datei in Ihrem Stammverzeichnis angeben.

Sie können auch erwägen, nur eine LIZENZ-Datei im Stammverzeichnis Ihres Repositorys zu verwenden und Unterabschnitte für Material, Code usw. von Drittanbietern hinzuzufügen.

Kay
quelle