首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该在每个头文件和源文件中添加许可证吗?

我应该在每个头文件和源文件中添加许可证吗?
EN

Software Engineering用户
提问于 2016-04-28 14:11:28
回答 2查看 22.9K关注 0票数 26

我即将将我的第一个项目推到GitHub (一个用C编写的迷你玩具lisp解释器)。

我注意到,绝大多数开放源码项目都在每个源文件中(顶部)包含了它们的许可证。这是开放源码所必需的吗?

EN

回答 2

Software Engineering用户

发布于 2017-09-21 15:14:29

这是一个老生常谈的问题,但对于其他寻找答案的人来说,大多数许可证都不要求在每个源文件中包含许可证,只要许可证包含在源代码中。这通常是通过使用与代码相同的repo、文件夹或目录中包含的LICENSE.mdLICENSE.txt文件来完成的。

下面列出了一些常见的开源许可证及其在源文件中的要求。

Apache 2.0版

Apache发布Apache许可证版本2.0的(许多)原因之一是:

..。允许通过引用而不是在每个文件中列出许可证.(来源)

许可证的附录似乎指定需要在文件本身中包含许可证通知,但是GitHub的ChooseALicense.com表示,这一要求更像是一种推荐。

MIT许可

麻省理工学院许可证只要求许可证文本:

包括在软件的所有副本或大部分。

GPL / LGPL / AGPL

对于GPL、LGPL或AGPL许可,运行GNU.org的自由软件基金会( Foundation )确实希望在每个文件(以及包含完整许可文本的COPYING文件中)中包含一个通知,或者如果使用LGPL,则需要一个COPYING LESSER

下面是他们所说的在源文件中包含许可证的方式:

这涉及到在程序的每个源文件中添加两个元素:版权通知(如“版权1999 Terry Jones”),以及一份复制许可声明,声明该程序是根据GNU通用公共许可证(或较小的GPL或Affero GPL)的条款分发的。

请注意,我不是律师,这个答案甚至不构成任何类型的法律咨询。

票数 17
EN

Software Engineering用户

发布于 2021-03-17 04:39:45

这不是必要的(尽管取决于确切的许可),但是对于商业和开源软件来说都是一个很好的实践。此外,随着名为软件包数据交换的适当标准的出现,开发人员和律师对版权和许可证的代码进行审计变得更加容易。

C/C++语言的此类头示例如下所示:

代码语言:javascript
运行
复制
//  SPDX-FileCopyrightText: 2019 Jane Doe <jane@example.com>
//  SPDX-License-Identifier: GPL-3.0-or-later

此外,还有一个名为复用软件的倡议,它为任何类型的项目提供了关于如何添加、管理和审核版权和许可信息的良好指南。该计划的结果之一是自动Python工具,以检查最新的重用和SPDX建议的遵从性。它被称为reuse,并提供了linter特性,请参阅他们的文件页中的更多内容。要了解更多关于遵从性和所需步骤的信息,请参阅完整的重用教程

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/317041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档