我觉得在每个代码文件中都有不必要的重复,但我在大多数开源项目中看到它。我应该这样做,还是只在代码之外包含一个许可证?
答案 0 :(得分:69)
请在代码外单个!我不知道其他人,但我讨厌在每个文件的顶部看到同样的事情。
我想我已经阅读了几次,只是通过页面向下阅读它。
答案 1 :(得分:24)
EULA在这里是错误的术语,因为查看源代码的人通常不是最终用户。
从法律上讲,它也没有区别;版权不需要明确声明。
基本上,您实现的只是降低了人们意外违反许可条款的风险。你必须决定对你有多重要。
我认为最好的妥协是将包含链接(绝对URL以及项目中的相对内容)的非常短的标题放入每个源代码文件中的完整许可证文本。这样,任何关心许可证的人都知道在哪里找到它(理想情况下,那些愿意支付大量许可费的人;你当然希望那些人能够与你联系!)
答案 2 :(得分:14)
不,您不必将许可证放在每个源代码文件中。
如果你仔细观察,大多数FOSS应用程序也不会这样做。他们在每个文件的顶部放置了一个版权声明,并在短句中说明了该文件的许可证以及您可以在哪里找到许可证的全文。他们通常会将您指向包含许可证全文和/或包含全文的网站的COPYING或LICENSE文件(如果COPYING文件不再存在)。
像Michael Borgwardt在答案中所说,从法律上讲,你不必这样做。但是建议您分发源代码,因为人们可以立即看到谁拥有版权以及许可证是什么。答案 3 :(得分:13)
可能取决于许可证。 GPL区分preamble
和license
。它明确指出,(恼人的)前导码必须是代码的一部分:
我可以省略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
A free ebook from ifrOSS以德语解释和评论GPL 2。有another one for GPL 3
对于一个有根据的答案,你应该要求提供sx上没有的法律建议。如果您找不到(开源)项目的律师,请查看FSFE legal network。
答案 4 :(得分:7)
我认为把它放在每个文件中的原因是合法的。如果协议存在于每个文件中,那么在没有公开许可证的情况下,任何人都无法遇到代码。
它可能不是一个好的,但所有大男孩都使用它,所以如果它只是视觉上的痛苦,我会寻找一个更好的理由不做同样的事情。
如果您正在使用GPL,这更是一个问题,但如果您使用的是BSD或MIT等公共域许可证,我认为您并不关心人们对该代码的处理方式。我想这取决于您的许可证的严格程度。
答案 5 :(得分:3)
IANAL,
假设您正在谈论许可,而不是EULA,您可以将许可证放在外面。这几乎总是用很长的许可证来完成,比如GPL。将整个GPL许可证放在每个文件中都是愚蠢的。通常你会有一些通知说明你可以在哪里找到实际的许可证。这是完全合法的。但是,如果使用BSD / Apache / MIT等非常短的许可证,只需在每个文件中包含许可证就更简单了,因为通知说在哪里找到许可证几乎与许可证本身一样长。
答案 6 :(得分:2)
这取决于许可证规定的内容。例如,GPL指示您在每个源文件中发出简短通知,在源代码分发中的某处包含整个许可证,并使获取二进制分发副本的任何人都可以使用您的源代码。
如果您不同意这一点,并且这是您的代码,您可以自由选择更合适的许可,或创建自己的许可。
答案 7 :(得分:1)
如果您的代码将被编译,因此您只是分发二进制文件,那么它确实无关紧要。因为在创建二进制文件时,会在编译过程发生之前删除注释。只有您将分发开源或闭源的实际源代码才有意义。如果您将使用无法编译的脚本语言分发应用程序,这通常很重要。
答案 8 :(得分:1)
你不需要它来获得许可证,只要清楚它所涵盖的文件,就会有一个外部文件。
但是对于版权,您应该在每一段文字上都有版权声明。
答案 9 :(得分:1)
我所做的是在文件顶部放置两行注释,说明我公司的名称,最后修订日期和源文件的许可证名称,然后在文件的最底部写一个简短的许可证的版本。
当然,完整许可证(多个许可证中的所有许可证)始终包含在源文件和发布目录中。