(注意:这个问题包括"许可证"这个词.但是我们要清楚:这个问题不是要求许可建议.它问的是如何同时满足"程序员常用的软件工具"的文件命名要求:Github和CRAN这个问题可能与README文件一样容易.仅仅使用"许可证"这个词似乎让人们对他们的亲密投票感到高兴.)
我有一个R包,我想保留Github的代码.
根据R的要求(有关模板许可证的说明,请参见此处),我的DESCRIPTION文件中包含以下内容:
License: MIT + file LICENCE
Run Code Online (Sandbox Code Playgroud)
我的LICENCE文件包含MIT模板,根据需要:
YEAR: 2017
COPYRIGHT HOLDER: Don Quixote
Run Code Online (Sandbox Code Playgroud)
Github过去只通过查看LICENSE文件来计算许可,这允许我保留MIT文本,LICENSE以便Github检测到它和CRAN模板,LICENCE以便CRAN检测到它.这种方法用于.Rbuildignore隐藏LICENSECRAN中的Github .
但现在,一个黑暗倒下的土地上:Github上查看这两个LICENSE和LICENCE.发现它们不同,它放弃了确定项目许可证的尝试.
因此,似乎无法以满足CRAN和Github的方式使用MIT许可证或其他模板化许可证.
从重命名我CRAN许可证模板文件LICENCE到LICENCE.template会解决这个问题,但后来CRAN抱怨非标准文件.
我可以从git repo中省略CRAN许可模板文件,但是我不会为了方便而牺牲版本控制.
有解决方法吗?
在tidyr 问题中对此主题进行了扩展讨论(Hadley Wickham 参加了,这增加了一点额外的可信度)。解决方案是使用两行 CRAN 模板作为LICENSE(对于 CRAN),然后使用完整的 MIT 许可证LICENSE.md并将其添加到.Rbuildignore(对于 GitHub)。请参阅tidyr的相关拉取。
这是与当前最佳答案类似的解决方案,但对我来说感觉更清晰,因为它不使用基于拼写的“hack”。
更新(2021 年 1 月):正如 Konrad Rudolph 在评论中指出的那样,GitHub 现在将忽略LICENSE.md是否LICENSE存在。
我目前的方法,基于托马斯的评论如下:
根据LICENCECRAN 的要求,该文件包含 MIT 模板许可证。它现在列在 中.gitignore,因此它不会与 Github 混淆。
根据LICENSEGithub 的要求,该文件包含实际的 MIT 许可证。它没有在 中列出.Rbuildignore,因此它不会与 CRAN 混淆。
当然,这不是一个理想的解决方案,因为现在 CRAN 和 Github 都没有准确地归档整个代码库。特别是,如果代码是从 Github 获取的,则它不处于允许将其上传到 CRAN 的状态。如果代码是从 CRAN 获得的,那么将其发布到 Github 上只是不合作的(因为 Github 不会推断出许可证)。