it-swarm.dev

Müssen Sie jeder Quelldatei einen Lizenzhinweis beifügen?

Ich habe nach verschiedenen Lizenzen gesucht, die ich für ein Open-Source-Projekt von mir verwenden kann, aber alle Projekte, die ich mit allen Arten von Lizenzen gesehen habe, scheinen (meiner Meinung nach) einen riesigen, widerlichen zu haben. Beachten Sie in jeder Quelldatei, dass die Datei unter einer bestimmten Lizenz aufgeführt ist. Ich glaube nicht, dass ich ein Single-Source-Projekt gefunden habe, das nicht gemeinfrei ist und nicht einen solchen Hinweis hat.

Dies scheint nur eine Verschwendung von Zeit und Speicherplatz zu sein. Ich habe vor, @license und @author Tags in meinen Projekten, aber ich verstehe nicht, warum ich in jeder einzelnen Datei einen so großen Hinweis auflisten muss, wenn ich meinen Code nicht gemeinfrei machen möchte.

Gibt es einen Grund, warum ich einen solchen Hinweis in meine Projekte aufnehmen möchte oder einfach einen Hinweis in README und @license tag gut genug sein? Beeinflusst dies die "klar festgelegte" Regel der meisten Lizenzen oder ist es nur übertrieben, damit die Leute nicht streiten?

119
RétroX

Ich habe viele Projekte gesehen, in denen die Lizenz nur in der Datei README oder in einer LIZENZ- oder KOPIERDATEI) erwähnt wird.

Ihre Software unterliegt automatisch dem Urheberrecht, wie im Völkerrecht vereinbart. (Es sei denn, Sie arbeiten für die US-Regierung oder eine andere Organisation, für die das Urheberrecht nicht gilt.)

Wenn jemand Ihre Software verwendet, muss er sicherstellen, dass die Lizenzvereinbarung eingehalten wird, oder die Fair-Use-Einschränkungen für seine Möglichkeiten einhalten.

Angenommen, diese Person möchte eine der Dateien in Ihrer Codeverteilung verwenden, für die natürlich eine Kopie erforderlich ist und daher das Urheberrecht gilt. Standardmäßig haben sie NICHT das Recht, Ihre Software urheberrechtlich zu nutzen. Nur wenn sie die Lizenzbeschränkungen kennen und befolgen, dürfen sie sie verwenden.

Wenn sie also eine Datei ohne Softwarelizenz verwenden, verstoßen sie gegen das Urheberrecht. Da in allen Lizenzen etwa "Der oben genannte Urheberrechtshinweis und dieser Genehmigungshinweis sind in allen Kopien oder wesentlichen Teilen der Software enthalten" angegeben, müssen sie diese Lizenz irgendwo ablegen.

Das kann in der Datei selbst sein, oder wenn ich Code als Bibliothek verwendet habe, habe ich die relevanten Teile in ein eigenes Verzeichnis gestellt und diesem Unterverzeichnis eine "README" oder "LICENSE" hinzugefügt.

Kurz gesagt, Sie müssen die Lizenz nicht in jede Datei einfügen. Ich denke, es ist übertrieben. Dabei gibt es keinen zusätzlichen Rechtsschutz. Es hilft einem nachgeschalteten Benutzer etwas, aber nicht viel.

Ich denke, die Tradition vieler kommentarbasierter Metadaten (Lizenz, Erstellungsdatum jeder Funktion, Änderungsprotokoll usw.) sind sehr alte Traditionen, die existieren, weil sie einfach zu machen sind und eher ein Talisman als nützlich sind.

Zum Beispiel fügt die Standard-Eclipse-Vorlage vor jeder Funktion so genannte nutzlose Metadaten hinzu, die meiner Meinung nach von der Versionskontrolle viel besser erfasst werden. Diese Praxis ist jedoch in vielen Geschäften üblich.

41
Andrew Dalke

Nach meinem Verständnis schlägt das GPLv nachdrücklich vor (oder erfordert vielleicht sogar, zumindest wie ich den Text verstehe Wie man diese Bedingungen auf Ihre neuen Programme anwendet, danach Abschnitt 17) einen Copyright-Hinweis in jeder Quelldatei. Es sagt

Fügen Sie dazu die folgenden Hinweise an das Programm an. Es ist am sichersten, sie an den Anfang jeder Quelldatei anzuhängen, um den Ausschluss der Garantie am effektivsten anzugeben. und jede Datei sollte mindestens die Zeile "copyright" und einen Zeiger darauf haben, wo sich der vollständige Hinweis befindet.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Und GNU Projekte, die FSF gehören, wie GCC, haben in jeder Datei einen solchen Hinweis.

Ich kenne auch ein Programm (das CAIA-System von J.Pitrat), das auf einer Community-Website für freie Software abgelehnt wurde, weil es nicht in jeder Datei einen solchen Hinweis enthielt.

Ich bin kein Anwalt , aber ich glaube, dass ein solcher Hinweis in jeder Quelldatei eines GPLv3-Programms praktisch obligatorisch ist .

(Wenn Sie eine andere Lizenz verwenden, insbesondere eine Nicht-FSF-Lizenz, lesen Sie sorgfältig durch, wie diese angewendet werden soll. YMMV; AFAIK schreibt jedoch keinen Hinweis in jede Datei.)

39

Das Problem ist, dass es sehr einfach ist, eine einzelne Quellcodedatei aus ihrem größeren Projekt zu trennen, z. B. jemanden, der nur eine Datei auscheckt, per E-Mail versendet oder herunterlädt, ohne dass der Rest das vollständige Urheberrecht enthält. Und dann kann diese Datei ad infinitum in die Zeit an N-te Parteien weitergegeben werden, die möglicherweise keine Ahnung von der Herkunft der Dateien haben.

Der Copyright-Hinweis oben erinnert jeden, der auf diese einzelne Datei stößt, daran, dass sie tatsächlich urheberrechtlich geschützt und nicht gemeinfrei ist. Daher kann eine Lizenz an deren Verbreitung oder Verwendung beteiligt sein oder nicht. Im Gegensatz dazu, dass der Finder seine eigenen zufälligen Annahmen trifft.

13
hotpaw2

Es gibt einen anderen praktischen Weg, der hier noch nicht erwähnt wurde.

SPDX-License-Identifier Etikett. https://spdx.org/ids

Wenn Sie es verwenden, reduziert sich Ihr "Legal Boilerplate" in jedem Quelldateikopf auf nur zwei Zeilen:

/* SPDX-License-Identifier: (GPLv3-or-later AND LGPL-2.0-only) WITH bison-exception */
/* Copyright © 1234 Project Author */

Personen, die die Analyse der Software-Lieferkette automatisieren, sind dankbar, dass Sie sich an einen gemeinsamen Standard für maschinenlesbare Lizenzbeschreibungen halten.

11
ulidtko

In einem unterirdischen Bunker gibt es kein geheimes Treffen der Supermächte, in dem steht, was Sie in jede Quelldatei einfügen müssen.

Es macht dem Benutzer klar, dass diese Datei unter einer beliebigen Lizenz steht, und tatsächlich enthält die meiste GPL-Software eine kurze Präambel zum Lesen von license.txt. Denken Sie daran, dass Projekte aufgeteilt und Dateien wiederverwendet werden. Daher ist es möglicherweise keine gute Idee, die Nachricht nur in einer einzigen Datei abzulegen.

Wenn es in dem unwahrscheinlichen Fall, dass es jemals vor Gericht ging, möglicherweise mehr Ansprüche hat, wenn Sie jede Datei eindeutig als Ihre Arbeit markiert haben und unter welcher Lizenz sie sich befand - dann kann niemand behaupten, dass diese bestimmte Datei nicht abgedeckt ist

8
Martin Beckett

Es gibt einen Unterschied zwischen Lizenz und Präambel .

In einigen meiner Projekte verwende ich die GNU General Public License, Version 3.0 . Die GNU GPL macht es erforderlich, eine Präambel für jede Quellcodedatei zu haben:

Die Präambel und Anweisungen sind integraler Bestandteil der GNU GPL) und dürfen nicht weggelassen werden.

Quelle: http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Also hier ist was ich tue:

1. Fügen Sie License.txt hinzu

Um den Regeln zu folgen, habe ich ein LICENSE.txt in das Stammverzeichnis des Repositorys meines Projekts eingefügt. Dies wird auch von GitHub vorgeschlagen (siehe " Wo lebt die Lizenz?" ).

2. Präambel mit Auto Fold hinzufügen

Als nächstes füge ich die GPL-Präambel über jede Quellcodedatei [~ # ~], aber [~ # ~] , damit sie kaum stört, verstecke ich sie in der IDE. Die meisten IDEs verfügen über eine Funktion zum automatischen Falten von Codeblöcken. NetBeans unterstützt Custom Code Folding und WebStorm unterstützt auch Folding Comments .

So sieht es also aus:

//<editor-fold desc="Preamble">
/*
 * Company Name
 * Copyright (C) 2016 Company Name
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ...
 */
//</editor-fold>

console.log('Here is my licensed JavaScript code.');

Ich denke, dies ist ein sehr guter Kompromiss zwischen Komfort und Rechtssicherheit.

Wenn Sie viele Projekte haben, in denen Sie eine Lizenz hinzufügen müssen, kann http://www.addalicense.com/ hilfreich sein.

Bitte beachten Sie: Mein Rat bezieht sich auf GPLv3. Für andere Lizenztypen ist möglicherweise keine Präambel erforderlich.

6

Ich habe fast eine bemerkenswert ähnliche Frage gestellt. Weniger über Belästigungen als über technische Details. TL; DR: Ich glaube, die Antwort hängt von den Prioritäten des Autors ab. Vielleicht wäre die Absicht genauer als die Prioritäten ...

Ich glaube, es ist in Ordnung, auf eine Lizenz in Ihrer Quelle zu verweisen, abhängig von Ihrer Definition von "in Ordnung". Lassen Sie uns zustimmen, dass der Begriff "unbegleitet" eine Quelldatei bezeichnet, die Teil eines Projekts ist, das rücksichtslos von seiner liebevollen Codebasis getrennt wurde. Diese Datei enthält eine Zeile wie folgt:

# This file is covered by the LICENSING file in the root of this project.

Oder eine viel coolere Linie wie diese:

* @license OMGBBQ <http://goodlics.com/bbq>

"Aber warte!", rufst du aus, "du hast gerade gesagt, dass die Datei von ihrem Projekt getrennt wurde! Und goodlics.com leitet zu einem Domain-Squatter weiter! Hör auf, zu trixy zu sein!" Sie haben Recht, das habe ich gesagt, aber das könnte in Ordnung sein und aufhören, mich anzuschreien. Hier ist meine Argumentation, die kein Anwalt ist:

  • Fast jedes Land hat der Berner Übereinkunft zugestimmt, was AFAIK bedeutet, dass Sie, wenn Sie etwas schaffen, das Urheberrecht daran haben. Sie brauchen keine (c) Zeile oder so einen Mist, aber dieses Zeug (plus ein VCS von Drittanbietern wie GitHub) macht es einfacher, zu beweisen, dass Sie es erstellt haben und wann du hast es erstellt.
  • Wenn Sie also einen saftigen 1337-Code online stellen, den Sie erstellt haben, haben Sie das Urheberrecht daran. Niemand darf es (legal) kopieren. Es ist selten und schockierend, ich weiß, aber ich habe gehört, dass Menschen manchmal gegen das Gesetz verstoßen. Das ist noch möglich.
  • Das genial nyancat-bcminer-algo.qbasic Datei, die Sie geschrieben und auf LiveJournal gepostet haben, ist, ob Sie es glauben oder nicht, nicht gemeinfrei. Nicht, wenn Sie sagen es ist gemeinfrei. Standardmäßig es gehört dir und dir allein. Es ist ... Kostbar. (Zumindest für mehr als 25-50 Jahre, es sei denn, Sie sind Disney.)
  • Menschen kommunizieren diese Absicht konventionell (indem sie einige oder alle Rechte nicht nur Ihnen und Ihnen allein gewähren) über Lizenzen, aber Sie müssen diese Absicht bekannt geben. Es ist Opt-In-Opt-Out (HAHA GET IT? Opt-In, um Ihr Urheberrecht zu deaktivieren? FANTASTISCH). Hol deine Tickets raus, wir sind fast da!
  • Wenn es in Ordnung ist dass die oben genannten unbegleiteten Dateien privat sind - das heißt, nicht legal kopierbar, dann ist die Verwendung einer möglicherweise fehlerhaften Referenz vollkommen in Ordnung. Jedoch wenn es nicht in Ordnung ist, dann denke ich, dass Sie den Lizenztext in jede Quelldatei aufnehmen müssen. Auf diese Weise werden unbegleitete Dateien immer noch so lizenziert, wie Sie es zuvor getan haben - beabsichtigt. Ja, das ist besser.

Diese Argumentation macht zwei epische und wahrscheinlich ungültige Annahmen:

  • Eine "defekte" Lizenzreferenz greift auf das standardmäßige (urheberrechtlich geschützte) Verhalten zurück, was möglicherweise keine gültige Annahme ist.
  • Diese Site, auf der Sie gepostet haben, hat keine Posting-Richtlinie (wie StackExchange), die alles gemeinfrei macht.

Vielen Dank, dass Sie Affenhirn-Atemwege reiten.

Haftungsausschluss: Dies erscheint mir logisch, da ich zu 90% sicher bin, dass ich zu 100% falsch liege.

6
Josh