(注意:此问题包含“许可证”一词。但请注意:此问题不要求提供许可建议。它询问如何同时满足“程序员常用的软件工具”的文件命名要求:Github和CRAN。这个问题可能与README文件一样容易。仅仅使用“许可证”一词似乎会让人们对他们的亲密投票感到高兴。)
我有一个R包,我想保留Github的代码。
根据R requirements(有关模板许可的说明,请参阅here),我在DESCRIPTION
文件中有以下行:
License: MIT + file LICENCE
我的LICENCE
文件根据需要包含MIT模板:
YEAR: 2017
COPYRIGHT HOLDER: Don Quixote
Github过去只通过查看LICENSE
文件来计算许可,这样我就可以将MIT文本保存在LICENSE
中,以便Github在LICENCE
中检测到它和CRAN模板这样CRAN就会检测到它。此方法使用.Rbuildignore
隐藏CRAN中的Github LICENSE
。
但是现在,黑暗已经落在了土地上:Github同时看着LICENSE
和LICENCE
。发现它们不同,它放弃了确定项目许可证的尝试。
因此,似乎无法以满足CRAN和Github的方式使用MIT许可证或其他模板化许可证。
将我的CRAN许可证模板文件从LICENCE
重命名为LICENCE.template
可以解决问题,但CRAN会抱怨非标准文件。
我可以从git repo中省略CRAN许可证模板文件,但是我不会为了方便而牺牲版本控制。
有解决方法吗?
答案 0 :(得分:4)
tidyr issues中对此主题进行了广泛的讨论(Hadley Wickham参加了会议,这增加了一些额外的可信度)。解决方案是使用two-line CRAN template作为LICENSE
(对于CRAN),然后在LICENSE.md
中使用完整的MIT许可证,并将其添加到.Rbuildignore
(对于GitHub)。参见relevant pull了解提迪尔。
这与当前的最佳答案类似,但是对我来说,它更干净,因为它不使用基于拼写的“ hack”。
答案 1 :(得分:3)
根据Thomas的评论,我目前的方法如下:
根据CRAN的要求,文件LICENCE
包含MIT模板许可证。它现在列在.gitignore
中,因此它不会与Github混淆。
根据Github的要求,文件LICENSE
包含实际的MIT许可证。它未在.Rbuildignore
中列出,因此它不会与CRAN混淆。
当然,这不是一个理想的解决方案,因为现在CRAN和Github都没有准确地归档整个代码库。特别是,如果从Github获取代码,则它不处于允许将其上载到CRAN的状态。如果代码是从CRAN获得的,那么将它发布在Github上只会是不合作的(因为Github不会推断出许可证)。
答案 2 :(得分:0)
您现在可以遵循CRAN的提交模板,并且GitHub将支持它。例如,此存储库使用CRAN许可证模板,并在GitHub上正确显示许可证:https://github.com/TomKellyGenetics/vioplot
这与CRAN提交兼容。 CRAN将拒绝使用完整许可证文件而非模板的提交:
具有限制且基本许可允许的许可组件,例如: BSD_3_clause +文件许可 文件“许可”: Daniel Adler版权所有(c)2004 保留所有权利。
重新分发...
请仅提供BSD_3_clause许可证的CRAN模板。
此功能受GitHub支持(可能已更新)。您必须使用License: BSD_3_clause + file LICENSE
(或MIT)提交给CRAN,并且只能使用以下模板文件:
YEAR: 2004
COPYRIGHT HOLDER: Daniel Adler
ORGANIZATION: University of Goettingen