Warum muss ich meine Open Source-Softwarelizenz im Stammverzeichnis behalten?

10

Bei fast allen Open-Source-Softwarelizenzen müssen Benutzer (oder zumindest Anwälte schlagen dies im Allgemeinen vor) die vollständige Lizenz in das Stammverzeichnis des Projekts aufnehmen, das sie schützen.

Ein Anwalt, mit dem ich gesprochen habe, schlägt vor, dass dies ein Erbe des CD-Zeitalters ist, als es notwendig war, eine vollständige Lizenz in eine Schmuckschatulle aufzunehmen.

Aber heute leben wir im Wolkenzeitalter. Warum kann ich beispielsweise nicht einfach die vollständige Lizenz auf meiner Website hosten und den Titel + die URL dieser Lizenz in den Header meiner Quelldateien aufnehmen?

Bonus: Wenn allgemein vereinbart wird, dass etablierte Lizenzen im Stammverzeichnis intakt bleiben müssen, warum hat das OSI der FSF keine Lizenz genehmigt, auf die Sie per URL verweisen können , und was hindert jemanden daran, diese Lizenz zu erstellen?

Samthebrand
quelle
4
Ein Problem, das mir in den Sinn kommt, ist, dass URLs geändert oder eingestellt werden können.
Aaron Kurtzhals
6
"Das Internet ist nicht allgegenwärtig" wäre der offensichtlichste Grund (selbst wenn jemand beim Herunterladen Ihrer Software über das Internet verfügt, steht es ihm möglicherweise nicht zur Verfügung, wenn er es erweitern / ändern möchte).
TZHX
9
Fragen Sie sich, warum DIE GANZE LIZENZ in der Wurzel enthalten sein muss oder warum die gesamte Lizenz in die Wurzel aufgenommen werden muss?
DougM
Ich möchte nur darauf hinweisen, dass wir hier eine falsche Zweiteilung auszusprechen scheinen. Sie fragen, warum sich die Lizenz im Stammverzeichnis befinden muss und warum sie nicht stattdessen unter einer URL online sein kann. Es gibt eine dritte Option, die niemand erwähnt; Die Lizenz wird mit der Software gebündelt, aber in einem "docs" -Verzeichnis oder so, und der Kommentar im Header der Codedateien spiegelt dies wider. Ich bin mit den guten Gründen einverstanden, warum die Lizenz mit der Software gebündelt werden sollte, aber das hört nicht auf, in ein Dokumentverzeichnis zu gehen.
James
4
Der Grund, warum es fast immer an der Wurzel liegt, ist, dass es leicht zu finden ist. Wenn ich Ihr Projekt herunterlade, durchsuche ich das Stammverzeichnis und eines der ersten Dinge, die ich sehe, ist die Lizenz. So einfach ist das
JohnL

Antworten:

24

Aus den GPL-FAQ (aber der Hinweis gilt für alle Lizenzen):

Warum muss die GPL jeder Kopie des Programms eine Kopie der GPL beifügen?

Das Einfügen einer Kopie der Lizenz in das Werk ist von entscheidender Bedeutung, damit jeder, der eine Kopie des Programms erhält, seine Rechte kennen kann.

Es könnte verlockend sein, anstelle der Lizenz selbst eine URL anzugeben, die auf die Lizenz verweist. Sie können jedoch nicht sicher sein, ob die URL in fünf oder zehn Jahren noch gültig ist. In zwanzig Jahren existieren URLs, wie wir sie heute kennen, möglicherweise nicht mehr.

Die einzige Möglichkeit, um sicherzustellen, dass Personen, die über Kopien des Programms verfügen, die Lizenz trotz aller Änderungen im Netzwerk weiterhin sehen können, besteht darin, eine Kopie der Lizenz in das Programm aufzunehmen.

(Hervorhebung von mir)

In dem Moment, in dem die Site, auf der Sie Ihre Lizenz hosten, ausfällt oder ihre URL-Pfade ändert, können Personen, die über Kopien Ihrer Software verfügen, nicht mehr überprüfen, welche Rechte sie sicher ausüben können. Angenommen, Sie könnten irgendwie garantieren, dass diese genaue URL für immer online ist: Die Möglichkeit für Benutzer, zu überprüfen, ob ihre Verwendung Ihrer Software legal ist, hängt immer noch von der Fähigkeit ab, eine Verbindung zu dieser bestimmten URL herzustellen. Während diese Anforderung in Ihrer Stadt / Ihrem Land / Planeten möglicherweise nicht belastend ist, kann sie an anderer Stelle belastend sein. Sie sollten diese Anforderung nicht auferlegen, insbesondere wenn die Problemumgehung (einschließlich des vollständigen Lizenztextes) trivial ist.

Sie können auf diese Beschwerde antworten, indem Sie sagen: "Na und? Wenn die URL ausfällt oder nicht zugänglich ist, sollte ein eindeutiger Deskriptor wie" GNU GPL v3 "ausreichen. Volltextkopien der GPL sind reichlich vorhanden. Benutzer können nachschlagen die Lizenz selbst. " Ein paar Probleme fallen mir sofort ein:

  1. Dies gilt nicht für weniger eindeutige Lizenzkennungen (der Ausdruck "BSD-Lizenz" fällt mir ein).

  2. Dies lässt sich nicht gut auf Lizenzen verallgemeinern, die weniger verbreitet sind oder angepasst wurden ("GPL mit Verknüpfungsausnahmen" fällt mir ein: Welche Verknüpfungsausnahmen?). Wie häufig muss eine Lizenz sein, bevor von einem Benutzer erwartet werden kann, dass er sie zuverlässig anhand seines Namens findet?

  3. Dies erfordert weiterhin, dass Benutzer über eine Internetverbindung verfügen, was möglicherweise nicht der Fall ist, selbst wenn sie zum Zeitpunkt des Erhalts der Software eine Verbindung hatten. (Und sie hatten möglicherweise keinen Internetzugang, als sie die Software erhielten: "Das CD-Zeitalter" ist in vielen Teilen der Welt noch nicht zu Ende. Betrachten Sie als zusätzlichen Fall nationale Bevölkerungsgruppen, die über einen weit verbreiteten Internetzugang verfügen, aber große Teile davon zensieren .) Eine Folge frei weiterverteilbarer Software ist, dass ein Empfänger möglicherweise keine Kopie Ihrer Software direkt von Ihnen oder über einen ursprünglich erwarteten Vertriebskanal erhält.

Ein letztes Argument gegen Lizenzlinks wird in MichaelTs Kommentar unten erwähnt: Es könnte Ihnen ermöglichen, die Lizenz dynamisch und rückwirkend zu ändern. Dies könnte absichtlich geschehen, aber auch aus Versehen, wenn Sie die Lizenz zwischen den Versionen der Software geändert haben, aber für beide Versionen denselben Lizenzlink verwendet haben, wodurch Ihre alte Lizenz nicht mehr existiert. Ein solcher Wechsel würde Personen Schwierigkeiten bereiten, die nachweisen müssen, dass sie ihre ältere Kopie unter einer anderen Lizenz als die aktuelle Version erhalten haben.

Warum muss ich die Lizenz im Projektstamm behalten?

Ich bin kein Jurist, aber ich habe nie ein überzeugendes Argument gesehen , dass Sie keine Lizenzen im Projektstamm halten müssen. Sogar die GPL, die angibt, dass die Lizenz jeder Kopie des Werks beiliegen muss, sagt nichts darüber aus, wie sie dem Werk beiliegen muss. (Dies kann daran liegen, dass die GPL in Nicht-Software-Kontexten angewendet werden kann, in denen der Begriff "Stammverzeichnis" nicht sinnvoll ist.)

Das Behalten der Lizenz im Stammverzeichnis ist wahrscheinlich eine gute Idee, da dadurch die Wahrscheinlichkeit maximiert wird, dass der Benutzer sie sieht, und dadurch sowohl die Frustration der Benutzer als auch die Wahrscheinlichkeit von Beschwerden gegen Sie minimiert werden, wenn Sie versuchen, die Lizenz in einem unbekannten Verzeichnis zu verbergen. Wenn Sie über viele Lizenzen verfügen, ist es möglicherweise sinnvoller, alle in einem eigenen Ordner abzulegen und eine offensichtliche Projekt-README-Datei einzuschließen, die Dateipfade enthält, um die Lizenz für jede Komponente zu finden.

Das Einfügen Ihrer Lizenz in das Verzeichnisstammverzeichnis ist auch deshalb hilfreich, weil dadurch die Lizenzen von Modulen, die anders lizenziert sind als die gesamte Arbeit, eindeutig unterschieden werden können. Angenommen, mein Projekt FooProj verwendet das eigenständige Modul BarMod. FooProj ist möglicherweise GPL-lizenziert, während das eigenständige Modul möglicherweise MIT-lizenziert ist. Wenn ich FooProj zum ersten Mal öffne, sehe ich eine Kopie der GPL im Stammverzeichnis und verstehe, dass die gesamte Arbeit GPL-lizenziert ist. Wenn ich in den Ordner für BarMod absteige, wird dort eine neue Lizenzdatei angezeigt, und ich verstehe, dass der Inhalt dieses Ordners MIT-lizenziert ist. Dies ist natürlich nur eine hilfreiche Hilfe. Sie sollten die Lizenzierung Ihrer Module immer explizit in einer README-, NOTICE- oder ähnlichen Datei angeben.

In der Summe ist die Verwendung des Dateistamms eine Frage der Bequemlichkeit und Klarheit. Ich habe keinen rechtsverbindlichen Open-Source-Lizenztext gesehen, der dies erfordert, und ich kenne auch keinen Grund, warum dies gesetzlich vorgeschrieben wäre. Ihre Lizenz sollte für den Empfänger relativ leicht zu entdecken sein. Die Aufnahme der Lizenz in das Projektstammverzeichnis ist ausreichend, aber nicht erforderlich, um dieses Kriterium zu erfüllen.

Apsiller
quelle
3
Berücksichtigen Sie auch die Möglichkeit, dass Sie eine Verknüpfung zu einer Remote-Site für site.com/foo/license.txt herstellen, die Sie unter einer BSD-Lizenz erhalten haben. Seitdem wurde diese jedoch unter GPL v3 erneut lizenziert, und genau das ist site.com/foo/license. txt enthält jetzt. Die heruntergeladene Version hat jedoch andere Rechte.
Ich habe diese Antwort als richtig markiert, da sie die konventionelle und rechtliche Weisheit in Bezug auf die OSS-Lizenzierung zu vermitteln scheint. Dass sagte , dieses Denken scheint mir ein bisschen paranoid für dieses Backup-Version kontrollierten Welt , dass wir leben. Ich bin mir nicht sicher , dass das Risiko einer kanonischen URL Inhalt Manipulation ist jede größer als das Risiko von jemand aus Versehen einen Teil des Löschens eine im root enthaltene Lizenz. Und selbst wenn das Risiko größer ist, bin ich skeptisch, dass es so groß ist, Entwickler dazu zu zwingen, vollständige Lizenzen in ihre Software aufzunehmen, anstatt beispielsweise extern gehostete Lizenzen in Codekommentaren zu zitieren.
Samthebrand
Zu Ihrer Information , vielleicht ein Zeichen für die Zukunft der OSS-Lizenzierung: Mit Creative Commons 4.0 können Lizenznehmer auf eine separate Seite mit Zuordnungsinformationen verlinken.
Samthebrand
6

Aber heute leben wir im Wolkenzeitalter. Warum kann ich beispielsweise nicht einfach die vollständige Lizenz auf meiner Website hosten und den Titel + die URL dieser Lizenz in den Header meiner Quelldateien aufnehmen?

Es gibt Lizenzen, die dies zulassen. Zum Beispiel Apache 2.0. Für Apache 2.0 muss nur jede Quelldatei einen kleinen Header enthalten, der auf die kanonische URL der Apache 2.0-Lizenz verweist. Es ist nicht erforderlich, die vollständige Lizenz im Quellbaum zu reproduzieren.

Aus der Apache 2.0-Lizenz selbst:

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own 
identifying information. (Don't include the brackets!) The text should be  
enclosed in the appropriate comment syntax for the file format. We also 
recommend that a file or class name and description of purpose be included 
on the same "printed page" as the copyright notice for easier identification 
within third-party archives.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
Chadversary
quelle
Ich denke, dass der Anhang unvollständig ist oder zumindest davon ausgeht, dass Sie bereits eine Kopie der Lizenz enthalten. Aus dem 2.0-Text selbst , wenn die Apache-lizenzierte Arbeit verteilt wird:4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
Apsiller
3

Es ist nicht erforderlich, dass es sich im Stammverzeichnis des Projekts befindet. Es ist einfach der häufigste Ort und daher der erste Ort, an dem die Leute suchen, um die Lizenz zu finden. Auch wenn es nicht üblich war, ist es wahrscheinlich immer noch der erste Ort, an dem die Leute suchen werden. Da die Lizenz zum Informieren vorhanden ist, macht das Ausblenden der Informationen wenig Sinn.

Wenn Sie es hinter einer URL verstecken, gibt es keine absolute Garantie dafür, dass diese URL immer verfügbar ist. Wenn es sich um eine Datei im Stammverzeichnis des Projekts handelt, ist sie per Definition immer verfügbar.

Kurz gesagt, dies ist der effektivste und benutzerfreundlichste Ort, um es auszudrücken.

Bryan Oakley
quelle
Das Projektstammverzeichnis ist der erste Ort, an dem man suchen würde: Es ist die Spitze des Baums, das Stammverzeichnis der Ordnerhierarchie. Die gesamte Dokumentation der obersten Ebene sollte dort abgelegt werden: Readme, Lizenz usw. Diese Dateien können den Leser anweisen, an anderer Stelle im Projekt tiefer zu graben, aber der Stamm ist der erste Ort, an dem ich nach etwas suche.