将许可证放在每个代码文件中?

Joa*_*nge 90 licensing

我发现在每个代码文件中都有不必要的重复,但我在大多数开源项目中看到它.我应该这样做,还是只在代码之外包含一个许可证?

Roo*_*ook 71

请在代码外单个!我不知道其他人,但我讨厌在每个文件的顶部看到同样的事情.

我想我已经阅读了几次,只是通过page_down-through它.

  • 确定每个源文件在哪个版本下发布是合理和明智的,因为该文件可能与其余代码分开(重用 - 通常鼓励开源),如果文件中没有关于许可证的信息,追溯到正确的许可证是很棘手的.但每个文件中的整个许可证 - 没有; 这对于GPL或LGPL来说是怪诞的.正如已经建议的那样,对于短许可证,在文件中包含实际许可证文本会很麻烦,但这是一个判断调用.但是,确定它所发布的许可证是明智的. (48认同)
  • 我刚刚更新了项目中的文件头,只有三行:版权,许可证名称和许可证文本的URL.它将我的标题从26行(BSD)缩短为3行.:) (14认同)
  • 我不同意Zifre.顶部的任何重复许可对我来说都很烦人. (10认同)
  • 这个答案被标记为解决方案,但在我看来,只要我们没有"法律情况的证据",问题仍然是公开的."也许律师可以添加法院判决的链接". (6认同)
  • @Esko:你能发一个样品吗?我不知道你为版权所写的内容.谢谢. (3认同)
  • 如果它像BSD/Apache/MIT那样简短,那么应该没问题. (2认同)
  • 我曾经遇到过一些源代码问题,他们的版权所有者告诉我:不,不,这个文件不在这个和那个许可证上,即使大文件是作为基础添加的.只是说这是一个争议的领域,一个没有版权的人可能会遇到问题,并得到回调.请在每个文件上添加一个小版权! (2认同)

Mic*_*rdt 25

EULA在这里是错误的术语,因为查看源代码的人通常不是最终用户.

从法律上讲,它也没有区别; 版权不需要明确声明.

基本上,您实现的目标是降低人们意外违反许可条款的风险.你必须决定对你有多重要.

我要说最好的妥协方法是将一个包含链接(绝对URL以及项目中的相对位置)的非常短的标题放入每个源代码文件中的完整许可证文本中.这样,任何关心许可证的人都知道在哪里找到它(理想情况下,那些愿意支付大量许可费的人;你当然希望这些人能够联系你!)

  • 在争议中,这不是一个有效的论点.如果被告知有许可证,以及如何检索它,您就无法找到妨碍您查看许可证的技术障碍. (3认同)
  • 正确; 但在这种情况下,正如Zifre所说,这没关系.如果您不知道发布特定代码段的许可证,则必须假定您根本不允许使用它.因此,作为发布者,您不必花费额外的时间来让人们阅读许可证. (2认同)

San*_*hal 14

不,您不必将许可证放在每个源代码文件中.

如果你仔细观察,大多数FOSS应用程序也不会这样做.他们在每个文件的顶部放置了一个版权声明,并在短句中说明了该文件的许可证以及您可以在哪里找到许可证的全文.他们通常会将您指向包含许可证全文和/或包含全文的网站的COPYING或LICENSE文件(如果COPYING文件不再存在).

就像Michael Borgwardt在他的回答中所说,从法律上讲,你不必这样做.但是建议您分发源代码,因为人们可以立即看到谁拥有版权以及许可是什么.


Jon*_*ein 12

它可能取决于许可证.在GPL区分preamblelicense.它明确指出,(恼人的)前导码必须是代码的一部分:

我可以省略GPL的序言,或者如何在自己的程序中使用它的说明,以节省空间吗?

前导码和指令是GNU GPL的组成部分,不能省略.事实上,GPL受版权保护,其许可仅允许逐字复制整个GPL.(您可以使用法律条款来制作另一个许可,但它不是GNU GPL.)(1)

资料来源:1)http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

另请参见http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

来自ifrOSS免费电子书以德语解释和评论GPL 2.GPL 3还有另外一个

对于一个有根据的答案,您应该要求提供sx上没有的法律建议.如果您无法为您的(开源)项目找到律师,请查看FSFE法律网络.

  • 序言和说明*是*full*许可证的一部分,但没有任何说明你必须将*full*许可证放在*every*文件中.`[...]在计划中附上以下通知. - *以下通知*仅是完整许可证的一小部分."最安全地将它们附加到每个源文件的开头" - *最安全*但*不需要*.`每个文件至少应该有"版权"行和指向发现完整通知的位置的指针. - 只有要求是带有指向其余部分的指针的版权行.可以将*full*许可证放在一个单独的文件中. (7认同)
  • 而且我认为*应该*!=*必须*. (3认同)

Kek*_*koa 7

我认为把它放在每个文件中的原因是合法的.如果协议存在于每个文件中,那么在没有暴露许可证的情况下,任何人都无法遇到代码.

它可能不是一个好的,但所有大男孩都使用它,所以如果它只是视觉上的痛苦,我会寻找一个更好的理由不做同样的事情.

如果您正在使用GPL,这更是一个问题,但如果您使用的是BSD或MIT等公共域许可证,我认为您并不关心人们对代码的处理方式.我想这取决于您的许可证的严格程度.