我即将将我的第一个项目推到GitHub (一个用C编写的迷你玩具lisp解释器)。
我注意到,绝大多数开放源码项目都在每个源文件中(顶部)包含了它们的许可证。这是开放源码所必需的吗?
发布于 2017-09-21 15:14:29
这是一个老生常谈的问题,但对于其他寻找答案的人来说,大多数许可证都不要求在每个源文件中包含许可证,只要许可证包含在源代码中。这通常是通过使用与代码相同的repo、文件夹或目录中包含的LICENSE.md
或LICENSE.txt
文件来完成的。
下面列出了一些常见的开源许可证及其在源文件中的要求。
Apache发布Apache许可证版本2.0的(许多)原因之一是:
..。允许通过引用而不是在每个文件中列出许可证.(来源)
许可证的附录似乎指定需要在文件本身中包含许可证通知,但是GitHub的ChooseALicense.com表示,这一要求更像是一种推荐。
麻省理工学院许可证只要求许可证文本:
包括在软件的所有副本或大部分。
对于GPL、LGPL或AGPL许可,运行GNU.org的自由软件基金会( Foundation )确实希望在每个文件(以及包含完整许可文本的COPYING
文件中)中包含一个通知,或者如果使用LGPL,则需要一个COPYING LESSER
。
下面是他们所说的在源文件中包含许可证的方式:
这涉及到在程序的每个源文件中添加两个元素:版权通知(如“版权1999 Terry Jones”),以及一份复制许可声明,声明该程序是根据GNU通用公共许可证(或较小的GPL或Affero GPL)的条款分发的。
请注意,我不是律师,这个答案甚至不构成任何类型的法律咨询。
发布于 2021-03-17 04:39:45
这不是必要的(尽管取决于确切的许可),但是对于商业和开源软件来说都是一个很好的实践。此外,随着名为软件包数据交换的适当标准的出现,开发人员和律师对版权和许可证的代码进行审计变得更加容易。
C/C++语言的此类头示例如下所示:
// SPDX-FileCopyrightText: 2019 Jane Doe <jane@example.com>
// SPDX-License-Identifier: GPL-3.0-or-later
此外,还有一个名为复用软件的倡议,它为任何类型的项目提供了关于如何添加、管理和审核版权和许可信息的良好指南。该计划的结果之一是自动Python工具,以检查最新的重用和SPDX建议的遵从性。它被称为reuse
,并提供了linter特性,请参阅他们的文件页中的更多内容。要了解更多关于遵从性和所需步骤的信息,请参阅完整的重用教程。
https://softwareengineering.stackexchange.com/questions/317041
复制相似问题