{"title":"Some thoughts on best publishing practices for scientific software","authors":"E. White","doi":"10.4033/IEE.2015.8.9.C","DOIUrl":null,"url":null,"abstract":"It is increasingly recognized that software is central to much of science, and that rigorous approaches to software development are important for making sure that science is based on a solid foundation (Wilson et al. 2014). While there has been increasing discussion of the software development practices that lead to robust scientific software (e.g., Jackson et al. 2011, Osborne et al. 2014, Wilson et al. 2014), figuring out how to actively encourage the use of these practices can be challenging. Poisot (2015) proposes a set of best practices to be included as part of the review process for software papers. These include automated testing, public test coverage statistics, continuous integration, release of code in citeable ways using DOIs, and documentation (Poisot 2015). These are all important recommendations that will help encourage the use of good practice in the development of scientific software (Jackson et al. 2011, Osborne et al. 2014, Wilson et al. 2014). Requiring these approaches for publication of an associated software paper should help improve the robustness of published software (automated testing, continuous integration), its ease of use (documentation, continuous integration), and the potential for the scientific community to build on and contribute to existing efforts. As part of thinking about these best practices, Poisot (2015) grapples with one of the fundamental challenges of scientific software publication: how do we review scientific software? Most scientists are not trained in how to conduct code reviews (Petre and Wilson 2014) and the time commitment to do a full review of a moderately sized piece of software is substantial. In combination, this would make it very difficult to find reviewers for software papers if reviewers were expected to perform a thorough code review. Poisot joins Mills (2015) in suggesting that this task could be made more manageable by requiring all software submitted for publication to have automated testing with reasonably high coverage. While Mills (2015) suggests that this will “encourage researchers to use this fundamental technique for ensuring code quality”, Poisot takes the idea a step further by suggesting that reviewers could then focus on reviewing the tests to determine if the software does what it is intended to do when provided with known inputs. This approach isn’t perfect. Tests are necessarily limited in the inputs that are evaluated and mistakes can occur in tests as well as in the code itself. However, reviewing tests to determine whether they are sufficient and whether the code produces correct outcomes in at least some cases is, I think, much more tenable than reviewing an entire codebase line by line. It is one of the most reasonable solutions I have seen to the challenge of reviewing software. While I agree with all of the major recommendations made in Poisot (2015), I think the ideas related to making software citeable will benefit from further discussion. While the benefits of citeability for scientific software are clear, it is less clear whether this citation should necessarily occur through the use of DOIs. As Poisot (2015) points out, there are advantages to using DOIs for scientific software. Many journals accept scholarly products with DOIs for inclusion in reference lists, which means that software gets acknowledged in the same way as papers. This helps provide credit to scientists developing software in a manner that is easily understood by academic reward structures. It also has the potential to make bibliometric analyses of software use more straightforward. However, many major scientific software products do not use DOIs for the software itself, preferring generic citations to the software (e.g., SymPy: SymPy Development Team","PeriodicalId":42755,"journal":{"name":"Ideas in Ecology and Evolution","volume":"8 1","pages":""},"PeriodicalIF":0.2000,"publicationDate":"2015-07-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"11","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Ideas in Ecology and Evolution","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.4033/IEE.2015.8.9.C","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q4","JCRName":"EVOLUTIONARY BIOLOGY","Score":null,"Total":0}
引用次数: 11
Abstract
It is increasingly recognized that software is central to much of science, and that rigorous approaches to software development are important for making sure that science is based on a solid foundation (Wilson et al. 2014). While there has been increasing discussion of the software development practices that lead to robust scientific software (e.g., Jackson et al. 2011, Osborne et al. 2014, Wilson et al. 2014), figuring out how to actively encourage the use of these practices can be challenging. Poisot (2015) proposes a set of best practices to be included as part of the review process for software papers. These include automated testing, public test coverage statistics, continuous integration, release of code in citeable ways using DOIs, and documentation (Poisot 2015). These are all important recommendations that will help encourage the use of good practice in the development of scientific software (Jackson et al. 2011, Osborne et al. 2014, Wilson et al. 2014). Requiring these approaches for publication of an associated software paper should help improve the robustness of published software (automated testing, continuous integration), its ease of use (documentation, continuous integration), and the potential for the scientific community to build on and contribute to existing efforts. As part of thinking about these best practices, Poisot (2015) grapples with one of the fundamental challenges of scientific software publication: how do we review scientific software? Most scientists are not trained in how to conduct code reviews (Petre and Wilson 2014) and the time commitment to do a full review of a moderately sized piece of software is substantial. In combination, this would make it very difficult to find reviewers for software papers if reviewers were expected to perform a thorough code review. Poisot joins Mills (2015) in suggesting that this task could be made more manageable by requiring all software submitted for publication to have automated testing with reasonably high coverage. While Mills (2015) suggests that this will “encourage researchers to use this fundamental technique for ensuring code quality”, Poisot takes the idea a step further by suggesting that reviewers could then focus on reviewing the tests to determine if the software does what it is intended to do when provided with known inputs. This approach isn’t perfect. Tests are necessarily limited in the inputs that are evaluated and mistakes can occur in tests as well as in the code itself. However, reviewing tests to determine whether they are sufficient and whether the code produces correct outcomes in at least some cases is, I think, much more tenable than reviewing an entire codebase line by line. It is one of the most reasonable solutions I have seen to the challenge of reviewing software. While I agree with all of the major recommendations made in Poisot (2015), I think the ideas related to making software citeable will benefit from further discussion. While the benefits of citeability for scientific software are clear, it is less clear whether this citation should necessarily occur through the use of DOIs. As Poisot (2015) points out, there are advantages to using DOIs for scientific software. Many journals accept scholarly products with DOIs for inclusion in reference lists, which means that software gets acknowledged in the same way as papers. This helps provide credit to scientists developing software in a manner that is easily understood by academic reward structures. It also has the potential to make bibliometric analyses of software use more straightforward. However, many major scientific software products do not use DOIs for the software itself, preferring generic citations to the software (e.g., SymPy: SymPy Development Team
越来越多的人认识到,软件是许多科学的中心,严格的软件开发方法对于确保科学建立在坚实的基础上是很重要的(Wilson et al. 2014)。虽然关于软件开发实践的讨论越来越多,这些实践导致了健壮的科学软件(例如,Jackson等人,2011年,Osborne等人,2014年,Wilson等人,2014年),但弄清楚如何积极鼓励使用这些实践可能是具有挑战性的。Poisot(2015)提出了一套最佳实践,作为软件论文审查过程的一部分。这些包括自动化测试、公共测试覆盖统计、持续集成、使用doi以可引用的方式发布代码和文档(Poisot 2015)。这些都是有助于鼓励在科学软件开发中使用良好实践的重要建议(Jackson et al. 2011, Osborne et al. 2014, Wilson et al. 2014)。需要这些方法来发表相关的软件论文应该有助于提高已发布软件的健壮性(自动化测试,持续集成),它的易用性(文档化,持续集成),以及科学界建立和贡献现有成果的潜力。作为思考这些最佳实践的一部分,Poisot(2015)努力解决科学软件出版的基本挑战之一:我们如何审查科学软件?大多数科学家没有接受过如何进行代码审查的培训(Petre和Wilson 2014),并且对中等大小的软件进行全面审查的时间承诺是实质性的。结合起来,如果审查者被期望执行彻底的代码审查,这将使找到软件论文的审查者变得非常困难。Poisot与Mills(2015)一起建议,通过要求所有提交出版的软件都具有相当高的覆盖率的自动化测试,可以使这项任务更易于管理。虽然Mills(2015)认为这将“鼓励研究人员使用这一基本技术来确保代码质量”,但Poisot进一步提出了这个想法,他建议审查人员可以专注于审查测试,以确定软件在提供已知输入时是否能够完成预期的工作。这种方法并不完美。测试在被评估的输入中必须受到限制,并且测试和代码本身都可能出现错误。然而,我认为,至少在某些情况下,审查测试以确定它们是否足够,以及代码是否产生正确的结果,比一行一行地审查整个代码库要站住脚得多。这是我见过的应对软件评审挑战的最合理的解决方案之一。虽然我同意在Poisot(2015)中提出的所有主要建议,但我认为与使软件可引用相关的想法将受益于进一步的讨论。虽然科学软件的可引用性的好处是显而易见的,但这种引用是否必须通过使用doi来实现却不太清楚。正如Poisot(2015)所指出的,在科学软件中使用doi有其优势。许多期刊接受带有doi的学术产品,将其纳入参考文献列表,这意味着软件与论文一样得到认可。这有助于以一种容易被学术奖励结构理解的方式为开发软件的科学家提供信誉。它也有可能使软件使用的文献计量分析更直接。然而,许多主要的科学软件产品并不为软件本身使用doi,而是更喜欢对软件的通用引用(例如,SymPy: SymPy Development Team)