ESDS Open Source Policy
Software and Scientific Reproducibility
The overarching purpose of NASA’s Earth Science program is to develop a scientific understanding of Earth as a system. Scientific knowledge is most robust and actionable when derived from transparent, traceable, and reproducible methods. Reproducibility includes open access to the data and software used to arrive at results. Additionally, software that is developed for NASA should be open to the greatest extent possible in order to enable re-use across Federal agencies, reduce overall costs to the government, remove barriers to innovation, and ensure consistency through the application of uniform standards. Open Source Software (OSS) practices also facilitate collaboration between agencies and the private sector. To best meet the aforementioned goals, NASA’s Earth Science Data System (ESDS) program promotes the full and open sharing of all data, metadata, products, information, documentation, models, images, and research results – and the source code used to generate, manipulate, and analyze them. The scope of this policy addresses the open source delivery of software developed with ESDS funding in order to: (1) generate, discover, access, transform, and analyze NASA Earth science data and (2) ensure open peer review of findings based on these data in a manner consistent with guidance to increase collaboration with other agencies.
Reproducibility is a cornerstone of the scientific method. Modern technology has dramatically increased the reach of scientific inquiry – through advanced computing, improved data collection, and powerful analytical tools – while at the same time creating reproducibility challenges. Peer review of science results increasingly includes open, unfettered access to underlying data, but a lack of access to the software used to produce and analyze these data limits independent confirmation. Without access to software code, reproducibility will always be suspect due to such things as coding errors, numerical inconsistencies between the platforms running the software, the ordering of subordinate processes within the code, etc. [Ince, et al.; Hatton; Monniaux]. Natural language descriptions of algorithms, such as algorithm theoretical basis documents, are inadequate to address the issues above and can be translated to code in many different ways, introducing ambiguities into the review process [Gervasi & Zowghi]. As a result, many major scientific journals broadly require open access to software to ensure the integrity of the peer review process (e.g., Science), while others empower editors and referees to include code review as a prerequisite for publication (e.g., Nature).
Earth Science Data System Open Source Software Policy
NASA’s ESDS requires that all software developed through research and technology awards (i.e., ROSES or unsolicited proposals) or in-house government funded development is to be made available to the public as Open Source Software (OSS). This includes all software developed with ESDS funding used in the production of data products, as well as software developed to discover, access, analyze, visualize, and transform NASA data. This policy does not apply to commercial off-the-shelf (COTS) software.
OSS is defined as software that can be accessed, used, modified, and shared by anyone. OSS is often distributed under licenses that comply with the definition of “Open Source” provided by the Open Source Initiative (https://opensource.org/osd) or meet the definition of “Free Software” provided by the Free Software Foundation (https://www.gnu.org/philosophy/free-sw.html).
This policy requires that all software source code developed through ESDS-funded research solicitations be designated, developed, and distributed to the public as OSS. Solicitations referencing this policy will require proposals to include a plan for committing their software as OSS; all software components developed as part of the proposed work must identify a permissive, widely accepted OSS license and be developed within a public repository hosting service, beginning at the inception of the proposed work. NASA will evaluate proposals for compliance with this policy. A proposal that does not include adequate documentation to satisfy that the developed software will be OSS may not be selected. The ESDS Open Source Policy complements and extends NASA’s Earth Science Division (ESD) long standing Data and Information Policy (http://science.nasa.gov/earth-science/earth-science-data/data-information-policy/).
Solicitations referencing the OSS policy require proposals to articulate a plan for preparing software as OSS. Software components developed from all proposed funded work, and software developed within the agency, will identify a permissive, widely accepted OSS license community to be used and will be developed within a public repository hosting service from the inception of the funded activity. In addition, NASA ESD may partner with external entities to review and examine any vulnerabilities to NASA-sponsored open source code throughout its development lifecycle.
Exceptions to this policy may include the following: law or regulation, including but not limited to patent or intellectual property law, the Export Asset Regulations, the International Traffic in Arms Regulation, and the Federal laws and regulations governing classified information; restrictions on the sharing of source code; when the sharing of the source code would create an identifiable risk to the detriment of national security, confidentiality of Government information, or individual privacy; when the sharing of the source code would create an identifiable risk to the stability, security, or integrity of the agency’s systems or personnel; when the sharing of the source code would create an identifiable risk to agency mission, programs, or operations; or when the NASA Chief Information Officer believes it is in the national interest to exempt sharing the source code. NASA will evaluate all funded ESDS software development activities for continued compliance with the OSS policy.
Permissive licenses guarantee the free use, modification, and redistribution of software while still permitting proprietary derivative works [Opensource ref]. This policy strictly requires “permissive” licensing; thus, only permissive licensing shall be accepted and used for OSS development. Additionally, the permissive licenses - of which include Apache License 2.0, BSD 3-Clause “Revised” License, and the MIT License - must have broad acceptance in the Earth science OSS community.
This policy requires that all developed code be delivered to a publicly accessible repository hosting service that is widely recognized by a large, active OSS community and used by developers of Earth science data and tools (e.g., Github). Such services should meet the following criteria:
- Common communication features
- Issue tracking for bug reports and feature requests
- Version control System
- Source code repositories and repository browsing tools
The ESDS Program recommends software be developed using https://github.com/nasa.
Open Source Software Release Plan
- Science open source policy: http://www.sciencemag.org/authors/science-editorial-policies
- Nature open source policy: http://www.nature.com/authors/policies/availability.html#code
- Ince, Hatton, Graham-Cunning, The case for open computer programs. Nature 482, 485–488 (23 February 2012) doi:10.1038/nature10836
- Hatton, L. The T experiments: errors in scientific software. IEEE Comput. Sci. Eng. 4, 27–38 (1997)
- Monniaux, D. The pitfalls of verifying floating-point computations. ACM Trans. Programming Languages Systems 30 (3). 1–41 (2008)
- Gervasi, V. & Zowghi, D. On the role of ambiguity in RE. In Requirements Engineering: Foundation for Software Quality (eds Wieringa, R. & Persson, A) 248–254 (Springer, 2010
- Mattman et al., Understanding Open Source Software at NASA IN IT Professional 14(2) 29035, March 2012
- 18F: https://github.com/18F/open-source-policy/blob/master/policy.md
- OMB-16-21: https://sourcecode.cio.gov/#fn9
- NASA Space Act: http://www.nasa.gov/offices/ogc/about/space_act1.html
- Permissive OSS definition: https://opensource.org/faq#permissive
Last Updated: Aug 22, 2017 at 2:10 PM EDT