如何满足CRAN和Github许可文件命名要求

时间:2017-04-21 19:22:06

标签: r github cran

注意:此问题包含“许可证”一词。但请注意:此问题要求提供许可建议。它询问如何同时满足“程序员常用的软件工具”的文件命名要求: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同时看着LICENSELICENCE。发现它们不同,它放弃了确定项目许可证的尝试。

因此,似乎无法以满足CRAN和Github的方式使用MIT许可证或其他模板化许可证。

将我的CRAN许可证模板文件从LICENCE重命名为LICENCE.template可以解决问题,但CRAN会抱怨非标准文件。

我可以从git repo中省略CRAN许可证模板文件,但是我不会为了方便而牺牲版本控制。

有解决方法吗?

3 个答案:

答案 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