把每个代码文件的许可证?
我发现它在每个代码文件中都有不必要的重复,但是我在大多数开源项目中都能看到它。 我应该这样做,还是只在代码之外包含一个许可证?
请在代码之外单独一个! 我不知道其他人,但我讨厌在每个文件顶部看到同样的事情。 我想我已经阅读了几次,只是通过page_down – 通过它。
EULA在这里是错误的,因为看源代码的人通常不是最终用户。
在法律上,也没有区别。 版权不需要明确声明。
基本上,你所能达到的是人们意外地违反你的许可条款的风险较低。 你必须决定这对你有多重要。
我认为最好的解决办法是在每个源代码文件中添加一个包含链接(绝对URL以及项目中的相对)的非常短的标题到完整的许可证文本。 那样的话,任何关心许可证的人都知道在哪里可以find它(理想情况下,愿意支付大量许可费的人,你当然希望这些人能够联系到你!)
不,您不必将许可证放在每个源代码文件中。
如果仔细观察,大多数自由/开放源码软件也不这样做。 他们在每个文件的顶部放置一个版权声明,并在一个简短的句子中告诉你文件是什么许可证,以及在哪里可以find许可证的全文。 他们通常会指向包含许可证全文的COPYING或LICENSE文件和/或包含全文的网站(如果COPYING文件不存在)。
就像Michael Borgwardt在答复中所说的那样,在法律上你不必这样做。 但是,由于人们可以立即看到谁拥有版权以及授权是什么,因此build议您打算分发源代码。
这可能取决于许可证。 GPL区分preamble
和license
。 它明确指出,(令人讨厌的) 序言必须是守则的一部分 :
我可以省略GPL的序言,或者如何在自己的程序中使用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法律networking 。
我认为把它放在每个文件背后的理由是合法的。 如果协议在每个文件中,那么就不可能有人在不被许可证暴露的情况下绊倒一段代码。
它可能不是一个好的,但所有的大男孩使用它,所以如果只是视觉上的痛苦,我会寻找一个更好的理由不这样做。
如果你使用的是GPL,这是一个更大的问题,但是如果你正在使用像BSD或MIT这样的公共领域的许可证,我不认为你真的关心人们用代码做什么。 我想这取决于你的执照有多严格。
IANAL,
假设你在谈论授权,而不是EULA,你可以把授权放在外面。 这几乎总是通过很长时间的许可证来完成的,例如GPL。 将整个GPL许可证放在每个文件中将是愚蠢的。 通常情况下,您只需要提供某种types的通知,说明您可以在哪里find实际许可证。 这是完全合法的。 但是,如果BSD / Apache / MIT /等许可证很短,只需在每个文件中包含许可证就简单多了,因为通知说在哪里可以find许可证的时间几乎和许可证本身一样长。
这取决于许可证的规定。 例如,GPL会指示您在每个源文件中join一个简短的通知,在您的源代码发行版中包含整个许可证,并将源代码发行版提供给获取二进制发行版副本的任何人。
如果您不同意这一点,并且这是您的代码,您可以自由select更合适的许可证,或创build自己的许可证。
如果你的代码将被编译,所以你只是分发一个二进制文件,那么它并不重要。 因为当您创build二进制文件时,在编译过程发生之前删除了注释。 只有你将分发实际的源代码,无论是开源的还是封闭的源代码。 如果您将使用不编译的脚本语言分发应用程序,则此典型问题很重要。
我所做的是在文件顶部放两行注释,说明我公司的名称,最后修订date和源文件所在许可证的名称,然后在文件最底部显示一个简短版本的执照。
当然,完整的许可证(所有这些许可证在多个许可证的情况下)总是包含在源文件和发布目录中。
你不需要它的许可证,一个外部文件将做,只要它清楚它包括什么文件。
但是对于版权,您应该在每一条文本上都有版权声明。