Mettre une licence dans chaque fichier de code? [fermé]


93

Je trouve qu'il est inutilement dupliqué pour l'avoir dans chaque fichier de code, mais je le vois sur la plupart des projets open source. Dois-je faire de même ou simplement inclure une seule licence en dehors du code?



1
Vous devez exclure la garantie dans chaque fichier source, sinon vous risquez de vous faire prendre. (Notez qu'un éditeur approprié, comme Vim, peut être facilement configuré pour plier automatiquement le passe-partout d'exclusion de garantie pour vous.)
Evgeni Sergeev

Réponses:


74

Un seul en dehors du code, s'il vous plaît! Je ne sais pas pour les autres, mais je déteste voir la même chose sur chaque fichier.

Je pense que je l'ai lu plusieurs fois, juste en le parcourant.


10
Je ne suis pas d'accord avec Zifre. Toute licence répétée au sommet est irritante pour moi.
strager

49
Il est raisonnable et judicieux d'identifier sous quelle licence chaque fichier source a été publié, car le fichier peut être séparé du reste du code (réutilisation - encouragé, en général, par Open Source), et si le fichier ne contient aucune information sur la licence , il est plus difficile de retrouver la bonne licence. Mais toute la licence dans chaque fichier - non; ce serait grotesque pour GPL ou LGPL. Comme déjà suggéré, pour les licences courtes, il est gênant d'avoir le texte réel de la licence dans le fichier, mais c'est un jugement. Mais il est judicieux d'identifier la licence sous laquelle il est publié.
Jonathan Leffler

14
Je viens de mettre à jour les en-têtes de fichier dans mon projet pour n'avoir que trois lignes: copyright, nom de la licence et une URL vers le texte de la licence. Il a raccourci mes en-têtes de 26 lignes (BSD) à 3 lignes. :)
Esko Luontola

3
@Esko: Pouvez-vous poster un échantillon? Je ne sais pas ce que vous avez écrit pour le droit d'auteur. Merci.
Joan Venge

6
Cette réponse est marquée comme solution, mais à mon avis, la question reste ouverte tant que nous n’avons pas evidence for the legal situation. Perhaps a lawyer can add a link to a court decision.
Jonas Stein

25

CLUF n'est pas le bon terme ici, car les personnes qui consultent le code source ne sont généralement pas des utilisateurs finaux.

Légalement, cela ne fait aucune différence non plus; le droit d'auteur n'a pas besoin d'être déclaré explicitement.

Fondamentalement, tout ce que vous obtenez est un risque moindre pour les personnes violent accidentellement vos conditions de licence. Vous devrez décider à quel point cela est important pour vous.

Je dirais que le meilleur compromis est de mettre un en-tête très court contenant un lien (URL absolue ainsi que relative dans le projet) vers le texte complet de la licence dans chaque fichier de code source. De cette façon, quiconque se soucie de la licence sait où la trouver (idéalement, les personnes qui sont prêtes à payer des frais de licence massifs; vous voulez certainement que ces personnes puissent vous contacter!)


Le droit d'auteur n'a peut-être pas besoin d'être explicite, mais qu'en est-il des droits d'auteur?
Kekoa

1
@kekoav: le copyleft est moins restrictif que le droit d'auteur. Par défaut, vous ne pouvez pas faire d'œuvres dérivées.
Zifre

3
Dans un différend, ce ne serait pas un argument valable. Si on vous dit qu'il existe une licence et comment la récupérer, vous ne pouvez pas identifier les barrières techniques qui sont de votre faute qui vous ont empêché de voir la licence.
Lasse V. Karlsen

1
"Copyleft" est un argot pour l'idée de base de la GPL de "subvertir" les restrictions de droits d'auteur de l'intérieur, c'est-à-dire utiliser vos droits en tant que détenteur de droits d'auteur pour accorder une licence à quiconque d'utiliser votre code librement, mais les forcer à libérer LEUR code qui est basé sur le vôtre sous la même licence.
Michael Borgwardt

2
Correct; mais dans ce contexte, comme l'a dit Zifre, cela n'a pas d'importance. Si vous ne connaissez pas la licence sous laquelle un morceau de code particulier a été publié, vous devez supposer que vous n'êtes pas du tout autorisé à l'utiliser. Donc, en tant qu'éditeur, vous n'avez pas besoin d'aller trop loin pour que les gens lisent la licence.
Michael Borgwardt

14

Non, vous n'êtes pas obligé de mettre la licence dans chaque fichier de code source.

Si vous regardez de plus près, la plupart des applications FOSS ne le font pas non plus. Ils mettent une déclaration de copyright en haut de chaque fichier et une courte phrase vous indiquant sous quelle licence le fichier se trouve et où vous pouvez trouver le texte intégral de la licence. Ils vous dirigent généralement vers le fichier COPYING ou LICENSE contenant le texte intégral de la licence et / ou vers un site Web contenant le texte intégral (au cas où le fichier COPYING ne serait plus là).

Comme Michael Borgwardt l'a dit dans ses réponses, légalement, vous n'êtes pas obligé de le faire. Mais il est conseillé pour le code source que vous avez l'intention de distribuer car les gens peuvent voir immédiatement qui détient le droit d'auteur et quelle est la licence.


1
Ce. L'avis de droit d'auteur doit inclure une référence au nom de la licence (s'il s'agit d'une licence standard) et une description de la façon de trouver le fichier de licence dans l'arborescence des sources.
jmucchiello

13

Cela peut dépendre de la licence. La GPL fait la distinction entre preambleetlicense . Il indique clairement que le préambule (ennuyeux) doit faire partie du code :

Puis-je omettre le préambule de la GPL, ou les instructions sur la façon de l'utiliser sur vos propres programmes, pour économiser de l'espace?

Le préambule et les instructions font partie intégrante de la GNU GPL et ne peuvent être omis. En fait, la GPL est protégée par le droit d'auteur et sa licence ne permet que la copie textuelle de l'intégralité de la GPL. (Vous pouvez utiliser les termes légaux pour créer une autre licence, mais ce ne sera pas la GNU GPL.) (1)

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

Voir également http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

Un ebook gratuit d'ifrOSS explique et commente la GPL 2 en allemand. Il y en a un autre pour GPL 3

Pour une réponse bien fondée, vous devriez demander un avis juridique qui n'est pas disponible sur sx. Si vous ne trouvez pas d'avocat pour votre projet (open source), jetez un œil au réseau juridique de la FSFE .


7
Le préambule et les instructions font partie de la licence complète , mais rien ne dit que vous devez mettre la licence complète dans chaque fichier. [...] attach the following notices to the program.- les avis suivants ne représentent qu'une petite partie de la licence complète. safest to attach them to the start of each source file- le plus sûr mais pas obligatoire. each file should have at least the "copyright" line and a pointer to where the full notice is found. - la seule exigence est la ligne de copyright avec un pointeur vers le reste. C'est bien de mettre la licence complète dans un fichier séparé.
toxalot

3
Et je dirais que devrait ! = Doit .
toxalot

7

Je pense que le raisonnement derrière la mise dans chaque dossier est juridique. Si l'accord se trouve dans chaque fichier, il n'y a aucune chance que quelqu'un tombe sur un morceau de code sans être exposé à la licence.

Ce n'est peut-être pas une bonne chose, mais tous les grands garçons l'utilisent, donc si c'est juste une douleur visuelle, je chercherais une meilleure raison pour ne pas faire de même.

Si vous utilisez la GPL, c'est plus un problème, mais si vous utilisez des licences du domaine public comme BSD ou MIT, je ne pense pas que vous vous souciez vraiment de ce que les gens font avec le code de toute façon. Je suppose que cela dépend de la rigueur de votre licence.


1
Eh bien, dans ce cas, indiquez simplement dans chaque fichier qu'en poursuivant votre navigation, vous acceptez la licence dans le fichier licence.txt. Mais ne copiez / collez pas le même texte dans chaque fichier. Je trouve parfois des fichiers avec un code plus court que la licence.
Rook

Ouais, je suis d'accord pour dire que ça marche aussi bien comme ça, surtout pour les longues licences. Même si cela peut ne pas être juridiquement essentiel, ni même justifiable devant les tribunaux, une référence à votre licence est à tout le moins bonne pour informer les gens sans qu'ils aient à rechercher la licence sous laquelle le code est sous.
Kekoa

3

IANAL,

En supposant que vous parlez de licence, pas de CLUF, vous pouvez mettre la licence à l'extérieur. Cela se fait presque toujours avec des licences très longues telles que la GPL. Il serait idiot de mettre la licence GPL entière dans chaque fichier. Habituellement, vous auriez juste un type d'avis indiquant où vous pouvez trouver la licence réelle. C'est parfaitement légal. Cependant, avec des licences très courtes telles que BSD / Apache / MIT / peu importe, il est plus simple d'inclure simplement la licence dans chaque fichier, car l'avis indiquant où trouver la licence serait presque aussi long que la licence elle-même.


2

Cela dépend de ce que la licence dicte. La GPL, par exemple, vous demande de mettre un bref préavis dans chaque fichier source, d'inclure la licence entière quelque part dans votre distribution source et de rendre votre distribution source accessible à toute personne qui obtient une copie de la distribution binaire.

Si vous n'êtes pas d'accord avec cela et que c'est VOTRE code, vous êtes libre de choisir une licence plus agréable ou de créer la vôtre.


1

Si votre code doit être compilé pour que vous ne distribuiez qu'un binaire, cela n'a vraiment pas d'importance. Parce que lorsque vous créez un binaire, les commentaires sont supprimés avant le processus de compilation. Il importe uniquement que vous distribuiez le code source réel soit en open source, soit en open source. Cela est généralement important si vous distribuez une application dans un langage de script qui ne compile pas.


Merci. Ça va être open source.
Joan Venge

Vous pouvez créer une chaîne codée en dur pour contenir la licence, elle apparaîtra donc sur le binaire, mais c'est probablement trop :).
Liran Orevi

1

Vous n'en avez pas besoin pour la licence, un seul fichier externe fera l'affaire tant que les fichiers qu'il couvre sont clairs.

Cependant, pour le droit d' auteur, vous devriez avoir l'avis de droit d'auteur sur chaque morceau de texte.


Merci, donc le droit d'auteur est différent?
Joan Venge

INAL mais une licence est un contrat entre vous et l'utilisateur / client. Le droit d'auteur est une affirmation de propriété d'un morceau d'une œuvre écrite. Quelqu'un pourrait récupérer un fragment de votre code et prétendre raisonnablement qu'il ne s'agissait pas d'un droit d'auteur parce que l'avis était manquant. Ne vous inquiétez pas, "Copyright Joe Soap (Cleansoft Inc.)" est tout ce dont vous avez besoin.
James Anderson

10
Vous vous trompez tellement. Bien qu'il soit généralement bon d'ajouter des mentions de copyright partout juste pour être clair, mais cela ne rend pas juste de "supposer que ce n'est pas sous copyright" parce que vous savez que TOUT est sous copyright. Quand quelqu'un obtient le code source, il peut trouver une déclaration de licence qui lui permet de l'utiliser, ou il peut découvrir qu'il est dans le domaine public pour une raison ou une autre. S'il ne le fait pas, il est sous copyright et ne peut pas être copié. Le droit d'auteur est une chose automatique et il est bon de le mentionner, mais ne pas le faire ne signifie pas que vous le perdez ...
Jasper

1

Ce que je fais est de mettre un commentaire de deux lignes en haut du fichier, en indiquant le nom de mon entreprise, la date de la dernière révision et le nom de la licence dont dispose le fichier source, puis tout en bas du fichier une version courte du Licence.

Bien entendu, la licence complète (toutes en cas de licences multiples) est toujours incluse dans les répertoires du fichier source et de la version.


3
comment automatisez-vous la date de la dernière révision?
Dustin Getz le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.