如何将代码链接到出版物

计算科学 出版物
2021-11-25 19:47:46

科学计算(以及当今许多其他领域)的学术论文通常涉及一定数量的代码,甚至是专门为该论文编写或用于获得论文结果的整个软件包。帮助论文读者访问代码的最佳方式是什么?我目前的方法是在论文或引用中放置一个指向 Github 存储库的链接(连同特定的版本标签)。

4个回答

好吧,我认为你有几个选择。

  1. 如果你有一个稳定的页面——例如由大学或其他不太可能很快消失的非营利机构赞助的页面——你可以在那里发布。
  2. 您可以使用 Github、Bitbucket 或 SourceForge 之类的服务来分发代码。
  3. 如果代码具有边际一般价值(它是针对特定条件集的分析代码等),您可以将该代码作为“补充信息”下载到您使用它的论文中。
  4. 您可以使用上述的某种组合。

但是,在任何或所有这些情况下,您都应该在文章中明确说明来源,并说明它是哪种许可(GPL、知识共享等),这样就不会出现与知识产权相关的问题。

很好的问题和很好的回答,但如果目标是达到与出版物本身相同的标准,我认为没有人能充分解决持久性问题。(考虑到代码仍然运行的机会,这可能很愚蠢,但可能仍然至少与出版物一样有用)。

大学网站期刊增刊不是持久的

大学网站不太可能提供稳定性或冗余来保存托管内容。内容更难引用,通常缺乏机器可读的元数据。

不幸的是,期刊在维护其补充材料方面似乎并没有做得更好(参见Anderson et al. 2006),并且可能不接受必要的格式,甚至根本不接受补充材料(参见一个值得注意的例子)。

由于这些原因,关注数据长期存档的人们一致转向提倡使用专用存储库而不是网站或补充材料,而且许多期刊现在都要求这种做法将代码遵守这个标准似乎是公平的。

多副本的解决方案?

Github 和相关网站还没有证明大学图书馆和知名出版商在 100 年的规模上能够长期存在。通过促进广泛的分发,它可以提供其他人在评论中回应的解决方案,包括一位无法对 stackexchange 发表评论的人,

......让我们保存剩下的东西:不是通过保险库和锁将它们与公众视线隔离并用于将它们寄售以浪费时间,而是通过复制的倍增,使它们远离意外。

——托马斯·杰斐逊,1791 年 2 月 18 日

Figshare 和 CLOCKSS 标准

我知道的唯一存档标准是figshare,它可以接受完整的代码存储库(目前作为“文件集”,但我相信很快就会有选项被列为“代码”类型)。figshare 的关键不仅是具有程序元数据的可引用 DOI,而且是 CLOCKSS档案服务的支持,该服务在全球 12 个地理和地缘政治分布的节点上维护其所有内容的副本。如果 figshare 倒闭或不复存在,这将触发其所有内容可从 CLOCKSS 免费获得。

因此,我建议使用 Github 来分发代码,同时在发布时向 figshare 提供存档副本。

您可以使用一些花哨的 pdf 技术来简单地将代码附加到 pdf(即,代码文件嵌入到 pdf 中,并且可以通过单击 pdf 中的某个按钮“下载”)。例如,这可以通过attachfile包来完成。当然,这适用于预印本(虽然我不知道它是否已经适用于 arxiv)但你可能会遇到日志文件的问题......

对于特定研究项目的小脚本,最好的发表位置是期刊的网站,作为论文的“补充信息”。这是阅读文章的人最容易找到的地方。

其他项目也感兴趣的更重要的包最好单独发布。不幸的是,目前没有真正好的解决方案。理想情况下,代码发布可以通过 DOI 永久访问,就像论文一样,但我不知道有任何托管站点分发 DOI 并保证其永久性。像 Github 或 Bitbucket 这样的公共存储库可能是目前最好的选择。

最好的解决方案是发布包含代码和随附数据的论文,但这在技术上尚不可行。我正在研究一个探索这个想法的研究原型,有关详细信息,请参阅此站点