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

111

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 riesig und widerlich zu sein (meiner Meinung nach). Beachten Sie in jeder Quelldatei, dass die Datei unter einer bestimmten Lizenz aufgeführt ist. Ich glaube nicht , dass ich ein einziges Source - Projekt gefunden habe , die nicht öffentlich zugänglich ist , die nicht nicht einen Hinweis , wie das hat.

Dies scheint nur eine Verschwendung von Zeit und Speicherplatz. Ich plane setzen @licenseund @authorTags in meinen Projekten, aber ich sehe nicht , warum ich so eine Riesen-Mitteilung in jeder einzelnen Datei zur Liste muß , wenn ich will nicht meinen Code public domain machen.

Gibt es einen Grund, warum ich einen solchen Hinweis in meine Projekte aufnehmen möchte, oder wäre es gut genug, einfach einen Hinweis in das READMEund ein @licenseTag aufzunehmen? Beeinträchtigt dies die "klar festgelegte" Regel der meisten Lizenzen oder ist es nur übertrieben, damit die Leute nicht streiten?

RétroX
quelle
10
Ihr Editor sollte es Ihnen ermöglichen, die Lizenz in eine Zeile zu falten / verstecken.
Pubby
1
Wenn jemand Ihren Code stählt, eine Variable umbenennt und das Copyright entfernt, würde ein Gericht diese beiden Dateien als identisch betrachten?
NoChance
5
@Emmad: Nein, ein Gericht würde nicht sagen, dass sie identisch sind. (Aber sie könnten "im Wesentlichen identisch" sein.) Ja, ein Gericht würde sagen, dass es eine Urheberrechtsverletzung ist.
Andrew Dalke
Außerdem: opensource.stackexchange.com/a/322/7022
Ioannis Filippidis

Antworten:

39

Meines Erachtens schlägt die GPLv3 nachdrücklich vor (oder erfordert vielleicht zumindest, dass ich den Text nach dessen Abschnitt 17 so verstehe, dass diese Bedingungen auf Ihre neuen Programme angewendet werden ), dass in jeder Quelldatei ein Urheberrechtsvermerk enthalten ist. Es sagt

Fügen Sie dazu die folgenden Hinweise dem Programm bei. Es ist am sichersten, sie an den Anfang jeder Quelldatei anzuhängen, um den Gewährleistungsausschluss am effektivsten darzulegen. und jede Datei sollte mindestens die Zeile "copyright" und einen Verweis auf den vollständigen Hinweis enthalten.

<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 sich im Besitz der FSF befinden, wie GCC, haben einen solchen Hinweis in jeder Datei.

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

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, wie Sie sie anwenden. YMMV. AFAIK kann jedoch nicht schaden, wenn Sie in jede Datei einen Hinweis schreiben.)

Basile Starynkevitch
quelle
16
Dies kann nicht obligatorisch sein, da es Systeme wie Smalltalk-Images gibt, die den Quellcode nicht als Dateien ausdrücken. Sie sagen "am sichersten" und "sollten", nicht "müssen". Was sie empfehlen, ist eine leicht verständliche Richtlinie mit geringer Wahrscheinlichkeit, dass jemand einen Fehler macht, aber sie ist definitiv nicht "praktisch verpflichtend".
Andrew Dalke
Ich stimme zu und sagte absichtlich "Quelldatei". Tatsächlich ist das CAIA-System ein bisschen wie Smalltalk: Das Bild befindet sich in Datendateien, und die von mir erwähnten CAIA- "Quellendateien" sind generierte C-Dateien. Mein GCC MELT (ein Zweig von GCC, unter FSF-Copyright) ist jedoch auch meta-programmiert, und ich achte darauf, in generierten C-Dateien Copyright-Hinweis-Kommentare zu erstellen (und diese in handgeschriebenen C & MELT-Code zu setzen).
Basile Starynkevitch
Punkt genommen. Ich kenne jetzt einen Absatz über MELT. Im Allgemeinen ist es am besten, dass generierte Dateien den Copyright-Hinweis enthalten, da es sehr schwierig ist, die Lizenz ansonsten anzuhängen. Zum Beispiel sind "yacc" und "lex" in ihren Möglichkeiten eingeschränkt.
Andrew Dalke
1
Aus persönlicher Erfahrung: Um ein Projekt in Savannah zu akzeptieren , muss in jeder Datei eine Lizenz vorhanden sein.
Mael
1
Nur um zu klären, nach der GPL FAQ, #LicenseCopyOnly und #NoticeInSourceFile zum Zeitpunkt des Schreibens dieses Artikels, ist es nicht erforderlich , enthält die Hinweise zur Bewerbung ... Text zu jeder Quelldatei; Beachten Sie, dass die Sprache "sollte" und nicht "muss" verwendet. Es wird jedoch dringend empfohlen, diese Vorgehensweise zu befolgen.
ZeroKnight
37

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

Ihre Software ist automatisch urheberrechtlich geschützt, wie im internationalen Recht 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 er die Lizenzvereinbarung befolgt oder die Einschränkungen für die faire Verwendung befolgt.

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 unter dem Urheberrecht zu verwenden. 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 so etwas wie "Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein" angegeben ist, 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 ein "README" oder "LICENSE" in dieses Unterverzeichnis eingefügt.

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

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

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

Andrew Dalke
quelle
2
Zum Beispiel sehe ich überhaupt nichts im Zusammenhang mit der Lizenzierung in Rails-Quelldateien.
Anton Barkovsky
3
Und von den 200 Dateien in der Python-Standardbibliothek der obersten Ebene enthalten nur 34 das Wort "copyright", und nur 4 davon sind für die Python Software Foundation bestimmt, die das Copyright für Python kontrolliert.
Andrew Dalke
Ja, ich glaube nicht, dass Copyright-Vermerke pro Datei von Dauer sein werden. Es ist einfach zu viel. Es kann einfach nicht der Weg der Zukunft sein. Denken Sie DRY Nennen wir es einen Tag. Ich denke, dass
fast
13

Das Problem ist, dass es sehr einfach ist, eine einzelne Quellcodedatei aus einem größeren Projekt zu disaggregieren, z. B. wenn jemand eine Datei auscheckt, per E-Mail versendet oder herunterlädt, ohne dass der Rest das volle Urheberrecht enthält. Und dann kann diese Datei ad-infinitum an Dritte weitergegeben werden, die möglicherweise keine Ahnung von der Herkunft der Dateien haben.

Der Urheberrechtshinweis oben erinnert jeden, der auf diese einzelne Datei stößt, daran, dass sie tatsächlich urheberrechtlich geschützt und nicht gemeinfrei ist und dass daher möglicherweise eine Lizenz an ihrer Verbreitung oder Verwendung beteiligt ist oder nicht. Versus den Finder seine eigenen zufälligen Annahmen treffen zu lassen.

hotpaw2
quelle
21
Ist es nicht genauso einfach, auch verschiedene Fragmente einer Quelldatei durch Kopieren und Einfügen zu disaggregieren? Was dann? Dieses Argument scheint mir widersprüchlich.
Travis Griggs
10
Das Problem ist die Annahme, dass ein Werk ohne Urheberrechtsvermerk gemeinfrei ist. Wenn Sie auf eine Datei ohne Urheberrechtsvermerk stoßen, sollten Sie diese nicht kopieren und an andere senden.
Rich Remer
Natürlich gibt es dann das Problem, dass es legal ist, eine Datei zu "klonen und zu besitzen". Wir haben Open Source direkt in unser Projekt-Repo eingefügt, weil es manchmal schwierig ist, einen Fehler außerhalb des Upstream-Projekts zu beheben, aber Sie können nicht warten sie entweder freizugeben. Das nicht zu sagen ist eine gute Idee, aber wir haben es geschafft.
Xenoterracid
8

In einem unterirdischen Bunker gibt es kein geheimes Supermachtentreffen, in dem steht, was Sie in jede Quelldatei schreiben müssen.

Es macht dem Benutzer klar, dass sich diese Datei unter einer beliebigen Lizenz befindet. Tatsächlich enthält die meiste GPL-Software eine kurze Präambel mit der Aufforderung, die Datei license.txt zu lesen. 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 jemals vor Gericht ging, könnten Sie mehr Ansprüche geltend machen, wenn Sie jede Datei eindeutig als Ihre Arbeit markiert hätten und unter welcher Lizenz sie sich befand - dann könnte niemand behaupten, dass diese spezielle Datei nicht abgedeckt war

Martin Beckett
quelle
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 halte es für in Ordnung, auf eine Lizenz in Ihrer Quelle zu verweisen, abhängig von Ihrer Definition von "in Ordnung". Stimmen wir zu, 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 die folgende:

# 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 Domainbesetzer weiter! Hör auf, zu trixy zu sein!" Sie haben Recht, das habe ich gesagt, aber das könnte in Ordnung sein, und hören Sie auf, mich anzuschreien. Hier ist meine Argumentation, die kein Anwalt ist:

  • Fast jedes Land hat der Berner Übereinkunft zugestimmt, was bedeutet, dass die AFAIK, wenn Sie etwas erschaffen, ein Urheberrecht daran hat. Sie brauchen keine (c) -Linie oder so etwas, aber dieses Zeug (plus ein VCS eines Drittanbieters wie GitHub) macht es einfacher zu beweisen, dass Sie es erstellt haben und wann Sie es erstellt haben.
  • Wenn Sie also einen saftigen 1337-Code online stellen, der von Ihnen erstellt wurde, haben Sie das Urheberrecht daran. Niemand darf es (legal) kopieren. Es ist selten und schockierend, ich weiß, aber ich habe gehört, dass Leute manchmal das Gesetz brechen. Das ist noch möglich.
  • Diese großartige nyancat-bcminer-algo.qbasicDatei, die Sie auf LiveJournal geschrieben und gepostet haben, ist, ob Sie es glauben oder nicht, nicht gemeinfrei. Nicht, wenn Sie nicht sagen, dass es gemeinfrei ist. Standardmäßig gehört es Ihnen und Ihnen allein. Es ist ... kostbar . (Zumindest für 25-50 + Jahre, es sei denn, Sie sind Disney.)
  • Diese Absicht wird auf herkömmliche Weise über Lizenzen kommuniziert (einige oder alle Rechte sind nicht Ihre und nur Ihre). Sie müssen diese Absicht jedoch ankündigen. Es ist ein Opt-In-Opt-Out (HAHA GET IT - Opt-In zum Deaktivieren Ihres Copyrights - AWESOME). Holen Sie sich Ihre Tickets raus, wir sind fast da!
  • Wenn es in Ordnung ist, dass die oben genannten unbegleiteten Dateien eine private Domain sind - dh nicht legal kopierbar -, ist die Verwendung eines möglicherweise fehlerhaften Verweises vollkommen in Ordnung. Aber wenn es nicht in Ordnung ist , dann denke ich , Sie den Lizenztext in jeder Quelldatei aufnehmen müssen. Auf diese Weise werden unbegleitete Dateien immer noch so lizenziert, wie Sie es beabsichtigt haben . Ja, das ist besser.

Diese Überlegung macht zwei epische und wahrscheinlich ungültige Annahmen:

  • Eine "kaputte" Lizenzreferenz greift auf das (urheberrechtlich geschützte) Standardverhalten zurück, was möglicherweise keine gültige Annahme ist.
  • Diese Site, auf der Sie gepostet haben, hat keine Veröffentlichungsrichtlinie (wie StackExchange), die alles gemeinfrei macht.

Vielen Dank, dass Sie Monkey-Brain-Airways gefahren sind.

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

Josh
quelle
6

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 erfordert eine Präambel für jede Quellcodedatei:

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 die Regeln zu befolgen, habe ich eine LICENSE.txt im Stammverzeichnis des Projektarchivs abgelegt . Dies wird auch von GitHub vorgeschlagen (siehe " Wo lebt die Lizenz?" ).

2. Fügen Sie die Präambel mithilfe der automatischen Faltung hinzu

Als nächstes füge ich die GPL-Präambel über jede Quellcodedatei ein, ABER um sie kaum zu stören, verstecke ich sie in der IDE. Die meisten IDEs verfügen über eine Funktion zum automatischen Falten von Codeblöcken. NetBeans unterstützt das Falten von benutzerdefiniertem Code und WebStorm unterstützt auch das Falten von Kommentaren .

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, für die Sie eine Lizenz hinzufügen müssen, kann http://www.addalicense.com/ hilfreich sein.

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

Benny Neugebauer
quelle
7
«Die GNU GPL erfordert eine Präambel für jede Quellcodedatei:» Das ist nicht der Fall. Der von Ihnen angegebene Teil verhindert lediglich, dass Sie die Präambel aus der LICENSEDatei entfernen , dh Sie können den Text der GPL nicht durch Ablegen ändern.
Andrea Lazzarotto
6

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

SPDX-License-IdentifierEtikett. https://spdx.org/using-spdx

Damit reduziert sich Ihr "Legal Boilerplate" in jedem Quelldatei-Header auf nur zwei Zeilen:

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

Darüber hinaus sind Personen, die Software-Lieferkettenanalysen automatisieren, dankbar, dass Sie sich an einen gemeinsamen Standard für maschinenlesbare Lizenzbeschreibungen halten.

ulidtko
quelle