科学计算领域的学术论文(以及如今的许多其他领域)通常包含大量代码或什至是为该论文专门编写的或用于在论文中获得结果的整个软件包。帮助论文读者访问代码的最佳方法是什么?我当前的方法是在论文或引文中添加指向Github存储库的链接(以及特定的版本标签)。
科学计算领域的学术论文(以及如今的许多其他领域)通常包含大量代码或什至是为该论文专门编写的或用于在论文中获得结果的整个软件包。帮助论文读者访问代码的最佳方法是什么?我当前的方法是在论文或引文中添加指向Github存储库的链接(以及特定的版本标签)。
Answers:
好吧,我想您有几个选择。
但是,在任何或所有这些情况下,您都应该在文章中清楚地指出采购,并指出其许可类型(GPL,知识共享等),这样一来就不会出现与IP相关的问题。
伟大的问题和伟大的答复,但我认为,如果目标是要达到与出版物本身相同的标准,那么没有人能够充分解决持久性问题。(考虑到代码仍然可以运行的机会,这可能很愚蠢,但可能仍然至少与出版物一样有用)。
大学网站不太可能提供稳定性或冗余性来保留托管内容。内容更难引用,通常缺少机器可读的元数据。
不幸的是,期刊在维护其补充材料方面似乎并没有做得更好(参见Anderson等,2006),并且可能不接受必要的格式,甚至根本不接受补充材料(参见一个著名的例子)。
由于这些原因,关注长期数据归档的人们已经一致转向倡导使用专用存储库而不是网站或补充材料,现在许多期刊都要求采用这种做法。遵守此标准似乎是公平的。
Github和相关站点尚未证明大学图书馆和老牌出版商可以达到100多年的使用寿命。通过促进广泛的分发,它可以提供其他人在评论中呼应的解决方案,其中包括一个无法对stackexchange发表评论的人,
...让我们保存剩下的东西:不是通过拱顶和锁来将它们挡在公众视线之外,而是用来浪费时间,而是通过增加副本的数量来避免意外的发生。
— 1791年2月18日,托马斯·杰斐逊(Thomas Jefferson)
我知道的唯一存档标准是figshare,它可以接受完整的代码存储库(目前为“文件集”,但我相信不久之后可以选择将其列为“代码”类型)。关键的一块figshare不仅可引用DOI与程序的元数据,但后盾CLOCKSS存档服务,这在12地理保持其所有内容的副本和地缘政治上分布在世界各地的节点。如果figshare停业或不复存在,这将触发其所有内容可从CLOCKSS免费获得。
因此,我建议使用Github进行代码分发,但也建议在发布时将档案副本提供给figshare。
您可以使用一些精美的pdf技术来简单地将代码附加到pdf(即,将代码文件嵌入到pdf中,并且可以通过单击pdf中的某些按钮来“下载”)。例如,这可以通过attachfile包来完成。当然,可以使用预印本(尽管我不知道它是否已经适用于arxiv),但是您可能会遇到日记文件问题...
对于特定于特定研究项目的小脚本,最好的发表位置是该期刊的网站,作为该论文的“补充信息”。对于那些阅读本文的人来说,这是最容易找到的地方。
其他项目感兴趣的更重要的软件包也应单独发布。不幸的是,目前没有真正好的解决方案。理想情况下,可以通过DOI像纸一样永久访问代码发布,但是我不知道有任何托管站点可以分发DOI并保证其永久性。像Github或Bitbucket这样的公共存储库可能是目前最好的选择。
最好的解决方案是发布包装有代码和数据的文件,但这在技术上尚不可行。我正在研究这种想法的研究原型,有关详细信息,请参见本网站。
看看http://www.runmycode.org。他们托管与研究论文相关的代码的伴侣站点。如果代码是R,Matlab或其他一些代码,它将实际为您运行代码。我还没有尝试过,但是我打算。我认为David Donoho和他的合作者正在使用它。
作为读者,在论文中声明可以通过直接与作者联系来获取代码是有效的。作为作者,这可以帮助促进协作,并给我机会提醒人们,如果他们在工作中使用代码,请引用我的文章。