1

创建 R 包并将其托管在 CRAN 中时,包的许可通常通过以下方式传达:

  • License在文件中添加一个DESCRIPTION带有许可证名称的字段,前提是它是 R 识别的典型开源许可证之一 - 例如:

License: GPL (>=3)

  • 对于带有版权声明的许可证,请改为添加许可证的名称和一个名为的文件,LICENSE指示年份和作者 - 例如

License: MIT + file LICENSE 然后是包含以下内容的文件 LICENSE:

YEAR: 2021
COPYRIGHT HOLDER: Me

当包不包含任何依赖项时这很好,但现在假设我想在包的源代码中发布一些依赖项,每个依赖项都意味着不同的通知和版权所有者。

例如,假设软件包是在 MIT 或 GPL 下分发的,然后有一个带有 BSD 2 子句的依赖项,以及另一个带有 MIT 许可证的依赖项,每个依赖项来自不同的作者和年份,与主包的。

澄清一下,这个问题是关于如何正确构建文件DESCRIPTION, LICENSE, 并COPYRIGHTS以这样的方式生成 (a) 是一个有效的 R 包(将安装、检查和加载而不会出现错误或警告), (b) 将被 CRAN 接受,(c) 将遵守许可(即:应在包的源代码和二进制版本中包含版权声明)。

(顺便说一句,我在 CRAN 中浏览了一些在其源代码下提供依赖项的包,并注意到依赖项的许可证经常被忽略 - 例如,一个包是 GPL,包括 MIT 代码,但 MIT 版权声明完全缺失源包保存源文件顶部的内容。在分发二进制包时,这个其他答案会违反 BSD 许可证的条款:包含其他 MIT 代码的正确许可 R 包

R 扩展手册提到以下内容:

  • """如果包许可限制了基本许可(在允许的情况下,例如,使用带有归属条款的 GPL-3 或 AGPL-3),附加条款应放在文件 LICENSE(或 LICENCE)中,字符串 '+文件许可”(或分别为“+文件许可”)应附加到相应的个人许可规范。"""

  • """在版权所有者不是作者的情况下,可以使用可选的“版权”字段。如有必要,这可以引用已安装的文件:惯例是使用文件 inst/COPYRIGHTS。"""

  • """inst 中有时需要的另一个文件是 AUTHORS 或 COPYRIGHTS,用于指定作者或版权所有者,因为这太复杂而无法放入DESCRIPTION 文件中。"""

但我不确定如何解释这些陈述。

  • 在第一种情况下,如果包和依赖项具有相同的许可证,那算作“限制”吗?如果没有,我是否应该将完整的版权声明从例如 MIT 许可证复制粘贴到文件中LICENSE?应该在我指定自己的版权年份和名称之后出现吗?
  • 在第二种和第三种情况下,如果我对大部分代码都拥有版权,我应该如何在版权字段中表明这一点?或者这是一个自由文本文件?如果此文件位于 下inst,则该条目在文件中的外观应如何DESCRIPTION?只指定主包代码的许可证可以吗?
4

0 回答 0