首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在GitHub项目中声明多个许可证

在GitHub项目中声明多个许可证
EN

Software Engineering用户
提问于 2015-12-12 00:17:48
回答 3查看 19.2K关注 0票数 64

多年来,我一直非常喜欢在网上共享的东西上发布许可证,这样其他人就可以更容易地判断是否以及如何重用所述的内容。在GitHub开始温和地“推动”用户在其repos中包含许可文件之前,我并不知道如何最好地使用代码--尤其是在GitHub上公开共享的代码--但从那时起,我就一直在努力充分利用许可文件。

我现在的情况是,我和其他一些人一起做了一个小项目,需要提到几个许可证(因为第三方代码和库以及非代码文件)。虽然我的合作伙伴在这个问题上比较“懒散”--有人建议我把代码放在网上,因为没有人会在意-,我宁愿这样做。问题是:我不知道如何在GitHub上提及几个(不同的)许可证。

我在GitHub上看到了几种不同的解决方案,这就是为什么我很难判断这个答案对一个稍微不同的问题是否具有权威性。我想知道的是,以下哪一种--如果有的话--是最常见的,或者还有其他的其他方法。

  1. 创建一个许可证文件,并将所有不同许可证的描述放入其中。(问题:它们应该按特定顺序排列吗?首先,我会提到所有许可证的名称,以便有更好的概述吗?
  2. 按照链接答案中的建议,创建每个许可证使用的许可文件,并将其命名为LICENSE.mdLICENSE.LibNameA.mdLICENSE.AssetsB.md等。(问题:命名是否基于项目名称?不是执照的名字?如果我用了不止一个许可证来制作自给材料,我会在“主”LICENSE.md中提到它们吗?如果没有,我会做什么呢?)
  3. 创建两个许可证文件:一个列出“主要”内容的许可证(S),即自己创建的所有代码/资产;一个列出所有第三方材料。(上述问题:是否有一种特定的命名方案,以及列出第三方材料的顺序?)

最后,如果我正确地理解了各种GitHub解释和项目关于其许可证API的说明,那么在确定回购协议的许可证时,只会考虑“主”许可证文件(尽管我还无法确定如果提到几个许可证将选择哪个许可证)。

EN

回答 3

Software Engineering用户

发布于 2015-12-12 09:32:21

您可以使用任何机制来包含您喜欢的那些许可证,只要您的项目的访问者能够清楚地知道哪个许可适用于项目的哪个部分。

我倾向于:

  • 将您使用的每个第三方库放在自己的目录中。此目录应包含库发行版的所有文件,包括许可证和自述文件。
  • 在您自己的许可证文件中,只引用您自己代码的许可证。
  • 在项目的自述文件中,请提及您使用的第三方库以及每个库在哪个许可下分发。有关完整的许可证详细信息,请参阅库目录中的许可文件。
票数 27
EN

Software Engineering用户

发布于 2018-05-23 18:20:54

SPDX creators (幻灯片12)的演示中,非常清楚:

LICENSE的内容:

代码语言:javascript
运行
复制
Apache-2.0 OR GPL-2.0-or-later

然后,您可以添加两个额外的许可文件:LICENSE.Apache-2.0LICENSE.GPL-2.0-or-later

在所有情况下,README.md都应该包含一个SPDX许可证标识符:

代码语言:javascript
运行
复制
SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

你可以这样做:

代码语言:javascript
运行
复制
## License

This work is dual-licensed under Apache 2.0 and GPL 2.0 (or any later version).
You can choose between one of them if you use this work.

`SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later`

请注意,Apache-2.0 OR GPL-2.0-or-laterApache-2.0 AND GPL-2.0-or-later有很大的不同。前者意味着用户可以在两者之间进行选择(这是常规情况!)第二个表示用户必须遵守这两个许可证。也见维基百科上的多重许可

请注意,我在这里使用的是新的SPDX许可证列表3.0 (截至2017-12-28)。2017年的版本将GPL-2.0作为GPL2.0的标识符,但无论这意味着“GPL2.0”还是“GPL2.0或任何更高版本”,还不清楚都是这样。

票数 25
EN

Software Engineering用户

发布于 2018-05-24 23:27:48

我最终就我的问题直接联系了GitHub支持部门,他们说,如果我明确表示他们的回答只是作为建议,而不是建议,那么引用他们的话是可以的。

我们的团队在这个时候没有任何特别的建议,但是如果我们有什么其他的可以分享的话,我们将确保询问和更新您!

他们最初的答复如下:

一种建议是为大部分代码创建一个许可证文件,并在自述文件中添加其余第三方材料的许可文本。另一种方法是,当每个路径有意义时,每个路径都有自己的许可文件。因此,例如,如果您的存储库有以下路径:libs/ following v2/您可以拥有libs/敬畏-lib-v2/LICENSE。在后一种情况下,您可能需要在自述文件和/或根目录中的许可文件中提及这一点。您还可以考虑在存储库的根目录中使用一个许可证文件,并为任何第三方材料、代码等添加子部分。

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

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

复制
相关文章

相似问题

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