NASA's Earth Science Data Systems (ESDS) Program requires that all software developed through research and technology awards (i.e., Research Opportunities in Earth and Space Science [ROSES] or unsolicited proposals) or other 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 software.
- Definition of OSS
- Scope of the Policy
- Policy Exceptions
- License Requirement
- Software Development Plan
- Repository Requirement
- Background: Software and Scientific Reproducibility
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 or meet the definition of “Free Software” provided by the Free Software Foundation.
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 require a proposed 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 the requirements of this policy may not be selected. In addition, the ESDS may partner with external entities to review and examine any vulnerabilities within NASA-sponsored open source code throughout its development lifecycle.
The ESDS Open Source Software Policy complements and extends the Earth Science Division’s (ESD) long standing Data and Information Policy.
Exceptions to this policy may include the following:
- Laws or regulations, including but not limited to:
- patent or intellectual property law,
- the Export Asset Regulations (EAR),
- the International Traffic in Arms Regulation (ITAR), 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 ESDS-funded 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 (Open Source Initiative). This policy strictly requires “permissive” licensing; thus, only permissive licensing shall be accepted and used for OSS development.
Solicitations referencing this policy will require that proposals 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, to begin 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 this requirement may not be selected.
The Open Source Software Development Plan Guidelines serves as a starting point for tailoring a project’s specific software development plan. Not all elements may be applicable or appropriate for every project.
This policy requires that all developed code be delivered to a publicly-accessible repository 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 implement the following criteria:
- Common communication features
- Issue tracking for bug reports and feature requests
- Version control system
- Repository browsing tools
The ESDS Program recommends software be developed using NASA’s Github Repository.
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. OSS practices also facilitate collaboration between agencies and the private sector.
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 and the ordering of subordinate processes within the code, among other factors [Ince, et al.; Hatton; Monniaux].
Natural language descriptions of algorithms, such as Algorithm Theoretical Basis Documents (ATBDs), 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).
To best meet the aforementioned goals, ESDS established this Open Source Software Policy. 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.
- Science Journal open source policy
- Nature open source policy
- Open Source Initiative (OSI)
- 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)
- Mattmann, C., Crichton, D.J., Hart, A.F., Kelly, S.C., Goodale, C., Ramirez, P.M., Hughes, S., Downs, R.R., and Lindsay, F. Understanding Open Source Software at NASA IN IT Professional 14(2) 29035, March 2012
- 18F: An Open Source Team
- Federal Source Code Policy OMB-16-21, Footnote 19
- NASA National Aeronautics and Space Act