it-swarm.com.de

Deklarieren mehrerer Lizenzen in einem GitHub-Projekt

Seit Jahren bin ich ein großer Fan davon, Lizenzen für online freigegebene Dinge zu vergeben, damit andere leichter feststellen können, ob und wie sie diese Dinge wiederverwenden können. Bevor GitHub begann, seine Benutzer sanft zu "pushen", um LICENSE-Dateien in ihre Repos aufzunehmen, wusste ich nicht wirklich, wie ich dies am besten mit Code tun sollte - insbesondere mit Code, der öffentlich auf GitHub geteilt wird! - aber ich habe seitdem versucht, LICENSE-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 3rd- Partycode & Bibliotheken sowie Nicht-Code-Dateien). Während meine Partner das Problem eher "schlampig" angehen - es wurde vorgeschlagen, "den Code so wie er ist online zu stellen, es wird niemanden interessieren" -, würde ich dies lieber richtig machen. Problem ist: Ich weiß nicht, wie man mehrere (verschiedene) Lizenzen auf GitHub erwähnen soll.

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

  1. Erstellen Sie eine einzelne LIZENZDATEI und fügen Sie dort die Beschreibungen aller verschiedenen Lizenzen ein. ( Fragen: Sollten sie in eine bestimmte Reihenfolge gebracht werden? Würde ich die Datei mit der Angabe der Namen aller darin enthaltenen Lizenzen beginnen, um einen besseren Überblick zu erhalten?
  2. Erstellen Sie eine LIZENZ-Datei pro verwendeter Lizenz und benennen Sie sie LICENSE.md, LICENSE.LibNameA.md, LICENSE.AssetsB.md usw. 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 im 'main' LICENSE.md? Wenn nicht, was würde ich stattdessen tun?)
  3. Erstellen Sie zwei LIZENZDATEIEN : eine, in der die Lizenz (en) für den Hauptinhalt aufgelistet sind, d. H. Alle Codes/Assets, die selbst erstellt wurden; eine für alle Materialien von Drittanbietern. ( Fragen wie oben: Gibt es ein bestimmtes Namensschema, das man verwenden würde, und in welcher Reihenfolge man die Materialien von Drittanbietern auflisten würde?)

Wenn ich die verschiedenen GitHub-Erklärungen und Projekte bezüglich ihrer Lizenz-API richtig verstanden habe, wird bei der Ermittlung der Lizenz eines Repos nur die 'Haupt'-LIZENZ-Datei berücksichtigt (obwohl ich dies nicht konnte) herauszufinden, welche Lizenz ausgewählt würde, wenn mehrere erwähnt würden).

31
Kay

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

Meine Präferenz wäre:

  • Legen Sie jede von Ihnen verwendete Drittanbieter-Bibliothek in einem eigenen Verzeichnis ab. Dieses Verzeichnis sollte alle Dateien enthalten, die Teil der Distribution der Bibliothek 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 jede Bibliothek verteilt wird. Ausführliche Informationen zur Lizenz finden Sie in der Lizenzdatei im Verzeichnis der Bibliothek.

In einer Präsentation der SPDX Schöpfer ( Folie 12 ) ist es sehr klar:

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.0 und LICENSE.GPL-2.0-or-later.

In allen Fällen ist die README.md sollte eine SPDX Lizenzkennung enthalten:

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

Sie können 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, dass Apache-2.0 OR GPL-2.0-or-later und Apache-2.0 AND GPL-2.0-or-later macht einen großen Unterschied. Ersteres bedeutet, dass der Benutzer zwischen beiden Lizenzen wählen kann (was der normale Fall ist!), Und das zweite bedeutet, dass der Benutzer beide Lizenzen einhalten muss. Siehe auch Mehrfachlizenzierung auf Wikipedia.

Beachten Sie, dass ich hier die neue (Stand 2017-12-28 ) SPDX-Lizenzliste 3.0 verwende. Die Versionen von 2017 hatten GPL-2.0 ist eine 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" bedeutet.

12
koppor

Ich habe mich schließlich bezüglich meiner Frage direkt an den GitHub-Support gewandt und sie sagten, es sei in Ordnung, sie zu zitieren, wenn ich klarstelle, dass ihre Antworten nur als Vorschläge gedacht sind, nicht Empfehlungen.

Unser Team hat derzeit keine besonderen Empfehlungen zu bieten, aber wir werden Sie umfragen und aktualisieren, 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 den Rest der Materialien von Drittanbietern in Ihre README-Datei) einzufügen.

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.

Im letzteren Fall möchten Sie dies möglicherweise in der Datei README) und/oder in der Datei LICENSE in Ihrem Stammverzeichnis erwähnen.

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

3
Kay