web-dev-qa-db-fra.com

Devez-vous inclure un avis de licence avec chaque fichier source?

J'ai cherché différentes licences que je peux utiliser pour un de mes projets open-source, mais tous les projets que j'ai vus, avec toutes sortes de licences, semblent avoir un géant, odieux (à mon avis) notez dans chaque fichier source que le fichier est répertorié sous une certaine licence. Je ne pense pas avoir trouvé un projet à source unique qui ne soit pas du domaine public qui ne soit pas ait un avis comme ça.

Cela semble être une perte de temps et d'espace de fichiers. Je prévois de mettre @license et @author balises dans mes projets, mais je ne vois pas pourquoi je dois lister une telle note géante dans chaque fichier individuel si je ne veux pas rendre mon code public domain.

Y a-t-il une raison pour laquelle je voudrais inclure un tel avis dans mes projets, ou simplement inclure un avis dans le README et un @license le tag est-il suffisant? Cela affecte-t-il la règle "clairement énoncée" de la plupart des licences, ou est-ce simplement excessif pour que les gens ne se disputent pas?

119
RétroX

J'ai vu de nombreux projets qui ne mentionnent que la licence dans le README ou dans un fichier LICENCE ou COPIE).

Votre logiciel est automatiquement couvert par le droit d'auteur, comme convenu dans le droit international. (Sauf si vous travaillez pour le gouvernement américain ou une autre organisation pour laquelle le droit d'auteur ne s'applique pas.)

Si quelqu'un utilise votre logiciel, il doit s'assurer de respecter le contrat de licence ou de respecter les restrictions d'utilisation équitable de ce qu'il peut faire.

Supposons que cette personne souhaite utiliser l'un des fichiers dans votre distribution de code, ce qui nécessite bien sûr une copie et donc la loi sur le droit d'auteur s'applique. Par défaut, ils n'ont PAS le droit d'utiliser votre logiciel en vertu du droit d'auteur. Ce n'est que lorsqu'ils connaissent et respectent les restrictions de licence qu'ils sont autorisés à l'utiliser.

Donc, s'ils utilisent un fichier sans licence logicielle, ils enfreignent la loi sur le droit d'auteur. Étant donné que toutes les licences disent quelque chose comme "La notice de copyright ci-dessus et cette notice de permission doivent être incluses dans toutes les copies ou parties substantielles du Logiciel", elles sont obligées de mettre cette licence quelque part.

Cela peut être dans le fichier lui-même, ou lorsque j'ai utilisé du code comme bibliothèque, j'ai mis les parties pertinentes dans son propre répertoire et ajouté un "README" ou "LICENSE" dans ce sous-répertoire.

En bref, vous n'avez pas besoin de mettre la licence dans chaque fichier. Je pense que c'est exagéré. Il n'y a pas de protection juridique supplémentaire pour ce faire. Cela aide un peu l'utilisateur en aval, mais pas beaucoup.

Je pense que la tradition de beaucoup de métadonnées basées sur des commentaires (licence, date de création de chaque fonction, journal des modifications, etc.) sont des traditions très anciennes qui existent parce qu'elles sont faciles à faire et qui sont plus un talisman qu'utile.

Par exemple, le modèle Eclipse par défaut ajoute ce que je pense être des métadonnées inutiles avant chaque fonction, ce qui, je pense, est beaucoup mieux capturé par le contrôle de version. Mais cette pratique est courante dans de nombreux magasins.

41
Andrew Dalke

À ma connaissance, le GPLv suggère fortement (ou même peut-être même, au moins que ma compréhension du texte Comment appliquer ces conditions à vos nouveaux programmes, après son section 17) un avis de copyright dans chaque fichier source. Ça dit

Pour ce faire, joignez les avis suivants au programme. Il est plus sûr de les joindre au début de chaque fichier source pour indiquer le plus efficacement l'exclusion de garantie; et chaque fichier doit avoir au moins la ligne "copyright" et un pointeur vers l'endroit où se trouve l'avis complet.

<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/>.

Et GNU appartenant à la FSF, comme GCC, ont une telle notification dans chaque fichier.

Je connais également un programme (le système CAIA de J.Pitrat) qui a été refusé sur un site Web de la communauté des logiciels libres car il ne comportait aucune mention de ce type dans chaque fichier.

Je ne suis pas avocat , mais je crois que une telle notification est pratiquement obligatoire dans tous les fichiers source d'un programme GPLv3 .

(si vous utilisez une autre licence, notamment non-FSF, lisez attentivement comment l'appliquer; YMMV; cependant AFAIK écrivant un avis dans chaque fichier ne nuira pas.)

39

Le problème est qu'il est très facile de désagréger un seul fichier de code source de son projet plus volumineux, tel que quelqu'un qui vérifie, envoie par courrier électronique, télécharge un fichier, sans le reste qui contient le droit d'auteur complet. Et puis ce fichier peut être transmis à l'infini dans le temps, aux Nièmes parties qui n'ont peut-être aucune idée de l'origine des fichiers.

L'avis de droit d'auteur en haut rappelle à toute personne qui parcourt ce fichier isolé qu'il est en fait protégé par le droit d'auteur et non par le domaine public, et donc une licence peut ou non être impliquée dans sa distribution ou son utilisation. Par opposition à laisser le Finder faire ses propres hypothèses aléatoires.

13
hotpaw2

Il existe un autre moyen pratique non encore mentionné ici.

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

En l'utilisant, votre "passe-partout légal" dans chaque en-tête de fichier source se réduit à seulement deux lignes:

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

Les personnes qui automatisent les analyses de la chaîne d'approvisionnement des logiciels vous seront reconnaissantes de vous en tenir à un standard commun de description de licence lisible par machine.

11
ulidtko

Il n'y a pas de réunion secrète de superpuissance dans un bunker souterrain qui dit ce que vous devez mettre dans chaque fichier source.

Il indique clairement à l'utilisateur que ce fichier est sous quelque licence que ce soit et en fait la plupart des logiciels GPL contiennent un court préambule disant de lire license.txt. N'oubliez pas que les projets sont divisés et que les fichiers sont réutilisés, donc ne mettre le message que dans un seul fichier peut ne pas être une bonne idée.

Si, dans le cas improbable où il est jamais allé au tribunal, vous pourriez avoir plus de réclamations si vous aviez clairement marqué chaque dossier comme votre travail et sous quelle licence il était - alors personne ne pouvait prétendre qu'il pensait que ce dossier particulier n'était pas couvert

8
Martin Beckett

Il existe une différence entre licence et préambule .

Dans certains de mes projets, j'utilise la licence publique générale GNU , version 3.0 . La GPL GNU oblige à avoir un préambule sur chaque fichier de code source:

Le préambule et les instructions font partie intégrante de la GPL GNU et ne doivent pas être omis.

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

Voici donc ce que je fais:

1. Ajouter License.txt

Pour suivre les règles j'ai mis un LICENSE.txt à la racine du référentiel de mon projet. Ceci est également suggéré par GitHub (voir " Où réside la licence" ).

2. Ajouter un préambule en utilisant le repli automatique

Ensuite, j'inclus le préambule GPL au-dessus de chaque fichier de code source [~ # ~] mais [~ # ~] pour ne pas déranger, je le cache dans l'IDE. La plupart des IDE ont une fonction pour plier automatiquement les blocs de code. NetBeans prend en charge pliage de code personnalisé et WebStorm prend également en charge commentaires de pliage .

Voici donc à quoi cela ressemble:

//<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.');

Je pense que c'est un très bon compromis entre confort et sécurité juridique.

Si vous avez beaucoup de projets pour lesquels vous devez ajouter une licence, alors http://www.addalicense.com/ pourrait être utile.

Remarque: mes conseils se réfèrent à la GPLv3. D'autres types de licence peuvent ne pas nécessiter de préambule.

6
Benny Neugebauer

J'ai presque posté une question remarquablement similaire. Moins de désagréments et plus de détails techniques. TL; DR: Je crois que la réponse est une question de priorités de l'auteur. Peut-être que l'intention serait plus précise que les priorités ...

Je pense qu'il est correct de référencer une licence dans votre source, selon votre définition de "ok". Convenons que le terme "non accompagné" indique un fichier source qui fait partie d'un projet qui a été impitoyablement séparé de sa base de code aimante. Ce fichier contient une ligne comme celle-ci:

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

Ou une ligne beaucoup plus cool comme celle-ci:

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

"Mais attendez!", vous exclamez-vous, "vous venez de dire que le fichier était séparé de son projet! Et goodlics.com redirige vers un squatter de domaine! Arrêtez d'être en trixy!" Vous avez raison, je l'ai dit, mais ça peut-être ça va, et arrêtez de me crier dessus. Voici mon raisonnement de non-avocat:

  • Presque tous les pays ont accepté la [sentez la] Convention de Berne, ce qui signifie que l'AFAIK si vous créez quelque chose, vous avez le droit d'auteur dessus, point. Vous n'avez pas besoin d'une ligne (c) ou de n'importe quelle merde comme ça, mais ce genre de choses (plus un VCS tiers comme GitHub) permet de prouver que vous l'avez créé et quand vous l'avez créé.
  • Par conséquent, si vous publiez un code 1337 juteux en ligne que vous avez créé, vous en avez le droit d'auteur. Personne n'est autorisé à le copier (légalement). C'est rare et choquant, je sais, mais j'ai entendu dire que les gens enfreignent parfois la loi. C'est encore possible.
  • C'est génial nyancat-bcminer-algo.qbasic le fichier que vous avez écrit et publié sur LiveJournal est, croyez-le ou non, pas domaine public. Sauf si vous dites c'est du domaine public. Par défaut c'est à vous et à vous seul. C'est ... Précieux. (Au moins pendant 25-50 + ans, sauf si vous êtes Disney.)
  • Les gens communiquent conventionnellement cette intention (en faisant certains ou tous les droits pas les vôtres et les vôtres seuls) via des licences, mais vous devez annoncer cette intention; c'est opt-in opt-out (HAHA GET IT? opting in opt out of your copyright? AWESOME). Sortez vos billets, nous y sommes presque!
  • Si cela vous convient que les fichiers non accompagnés susmentionnés sont du domaine privé - c'est-à-dire qu'ils ne sont pas légalement copiables, alors utiliser une référence potentiellement cassée est parfaitement correct. Cependant, si ce n'est pas correct, alors je pense que vous devez inclure le texte de la licence dans chaque fichier source. De cette façon, les fichiers non accompagnés sont toujours sûrs d'avoir une licence comme vous le souhaitez - prévu. Ouais, c'est mieux.

Ce raisonnement fait deux hypothèses épiques et probablement non valides:

  • Une référence de licence "cassée" se replie sur le comportement par défaut (protégé par des droits d'auteur), qui peut ne pas être une hypothèse valide.
  • Ce site sur lequel vous avez posté n'a pas de politique de publication (comme StackExchange) qui rend tout ce domaine public.

Merci d'avoir monté sur les voies respiratoires du cerveau de singe.

Avis de non-responsabilité: cela me semble logique, car je suis sûr à 90% que je me trompe à 100%.

6
Josh