Software Policy


DOE CODE is the software services platform and search tool that allows for scientific and business software to be provided to the U.S. Department of Energy (DOE). The DOE Office of Scientific and Technical Information (DOE OSTI) developed DOE CODE, providing functionality for collaboration, archiving, and discovery of scientific and business software. DOE OSTI is charged with fulfilling the Department's responsibilities to collect, preserve, and disseminate scientific and technical information (STI), including software, emanating from DOE research and development activities.

In addition to DOE OSTI's charge for scientific software, the Office of the Chief Information Officer (OCIO) and DOE OSTI partnered to leverage DOE CODE to maintain a comprehensive inventory of DOE-funded custom-developed business software. In accordance with the Office of Management and Budget Memorandum M-16-21, Federal Source Code Policy: Achieving Efficiency, Transparency, and Innovation through Reusable and Open Source Software, DOE CODE fulfills requirements to maintain an inventory of all DOE-funded custom-developed software and to report this inventory to the government-wide Code.gov website.

Software Collection Software Discovery and Access Software Preservation

Software Collection

Scope - Scientific and Business Software

DOE-funded scientific and business software is collected by DOE CODE. Software records within DOE CODE provide software details and links to the software itself, a code repository, or project contact information for access to the software. The repositories may also include manuals, examples, and test data.

When providing software and code to DOE CODE, users need to identify what type of software they are submitting—scientific or business software. Users who are unsure of the type of software are encouraged to work with their software point of contact.


Providing Software to DOE CODE

Software records should be provided directly to DOE CODE, either by a developer or the developing organization. DOE CODE offers two paths for users to provide scientific code. Users can (1) submit code to DOE CODE to make the software discoverable and optionally assign a DOI, and (2) formally announce code to DOE, complying with DOE funding responsibilities.

Submitting Software to DOE CODE

Users can submit their code to DOE CODE. The submission process is for code in early stages of development with no distribution limitations, and for those who wish to obtain a DOI early in the process. Software that has an access limitation (OUO, CUI, etc.) cannot be provided via the submission process; it must go through the DOE CODE announcement process. Only a minimal set of metadata is required for submission to DOE CODE (details on required metadata are below).

Announcing Software to DOE through DOE CODE

Users may need to announce their code to DOE to ensure announcement and dissemination in accordance with DOE statutory responsibilities, complying with DOE funding responsibilities. The announcement process is for code in later stages of development that has gone through internal review and release processes. The DOE CODE announcement process requires additional metadata above the submission process (details on required metadata are below).

DOE national laboratories, DOE facilities, and DOE contractors who have developed and/or modified software during work supported by DOE or during work carried out for others at DOE facilities are required to announce software to DOE using DOE CODE, if the software meets the following criteria:
  • the software meets the definition of STI;
  • the software is known or expected to be useful inside or outside the DOE community, or is not specific to the originating site;
  • a stable, usable, documented version of the software exists (i.e., the software is not under initial development); and
  • the software has undergone all appropriate reviews for sensitivity and export control.
Software that meets the following criteria does not need to be announced to the Department of Energy through DOE CODE:
  • operational systems software that is site-specific, unique to a particular hardware, or necessary to ensure the fundamental operability of automated data processing equipment, whether supplied by the manufacturer of the system hardware or others;
  • computer software programs developed and/or modified during work carried out for others at DOE facilities that are specifically excluded in the agreement under which the non-DOE funded work was performed;
  • software generated under the auspices of the Energy Information Administration (EIA); and
  • specific software used by power administrations for the operation, control, planning, and modeling of electric power transmission systems and the interconnected utilities; however, modifications/enhancements to portions of this software that are not an integral part of the whole and have potential application outside the power administrations should be announced.

Metadata

Metadata is information that is unique to and descriptive of a particular piece of software. There are different metadata requirements for the DOE CODE submission and announcement processes. Submitting software requires fewer metadata fields than announcing software. There are also optional metadata fields that can be utilized when either submitting or announcing software. More information on the optional fields can be found at DOE CODE Help.

Metadata Required in the DOE CODE Software Submission Process:
  • Project Type
  • Repository URL; Landing Page; or Contact Email*
  • Software Title
  • Description/Abstract
  • License(s)
  • Developers
Metadata Required in the DOE CODE Software Announcement Process:
  • Project Type
  • Repository URL; Landing Page; or Contact Email*
  • Software Title
  • Description/Abstract
  • License(s)
  • Release Date
  • Developers
  • Source Code Upload**
  • Sponsoring Organization Name
  • Primary Award Number
  • Research Organization Name
  • Contact Information

*Depends on software's project type and access limitation.

**Required if the project is not hosted in a public repository.


DOI Assignment

DOE CODE provides assignment of digital object identifiers (DOIs) to unlimited distribution software. A DOI is a digital identifier that is globally unique, persistent, machine resolvable, has an associated metadata schema, identifies an entity in perpetuity, and provides long-term access to the object. DOIs are assigned to enable researchers to more easily discover software through additional discovery pathways and reuse software through citation of the DOI. They also allow for stronger connections to be made between software, publications, and data through reference and citation via DOI metadata.

DOIs can be assigned during the DOE CODE submission and announcement processes. During the software submission process, DOI assignment is optional. During the announcement process for software with unlimited distribution, a DOI will automatically be assigned unless the software has already received a DOI from DOE OSTI or another source. Limited distribution software will not receive DOIs during the announcement process. For more information, see What are the benefits of getting a DOI for code or software?


Licenses

A software license indicates how code may be used and/or distributed. A software license can be assigned by the software copyright holder. A license is required when providing software to DOE CODE.

For open source software, DOE OSTI provides a list of the licenses that users can select from. Users can choose a license not listed by selecting “Other” and providing a URL to the landing page of the license.

For closed source software, users must provide either a license URL or contact email. When providing a license URL, the license URL page should include valid contact information. Otherwise, the user will be asked to provide a valid contact email address. For additional information about license requirements, reference Announcing Software to DOE CODE.


Access Limitations

An access limitation describes how a piece of software or code may be accessed. Different categories of software have different limitations on access.
  • Any open source software provided to DOE CODE is automatically designated as having unlimited availability when both submitting and announcing software.
  • Closed source software provided to DOE CODE may be designated as having unlimited or limited availability.
    • Closed source software with unlimited availability may be submitted or announced to DOE CODE.
    • Closed source software with limited availability may only be announced to DOE CODE.

Prior to software announcement, users must ensure the software has undergone all appropriate reviews for sensitivity and export control by the originating site. The review process will determine unlimited or limited availability. If limited availability, the process will determine the required access limitations. For a list of access limitations and their definitions, refer to the Access Limitations table. For more information on access limitations, see What is an access limitation?


Software Discovery and Access

Finding Software

DOE CODE allows users to search and discover the bibliographic metadata for software resulting from DOE-funded projects and details on how to access the software. DOE CODE does not directly disseminate software projects. Access to the software is provided by the developer or developing organization. For open source software, a link to the repository or landing page URL is provided from the DOE CODE software record page. For closed source software, a landing page URL or contact email is provided from the DOE CODE software record page for users to reach out to the developer or developing organization to request access to the software. Limited software records will be discoverable within Science Research Connection (SRC), which delivers both unclassified/unlimited and controlled access information to the DOE community.


Licensing

A software license indicates how code may be used and/or distributed. On a DOE CODE software record page, users can determine allowed use by means of the software license details. The software license is provided in the record page metadata, via the software landing page at the top left of the page, or via a license contact email. A detailed workflow of what licensing information is required for the different software types can be found on the Announcing Software to DOE CODE flowchart.


Software Preservation

Archival Policy

To ensure long-term preservation of DOE-funded software, DOE OSTI maintains a dark archive to house a copy of software source code for departmental backup and storage. A repository URL or a file upload is required when providing software to DOE CODE.
  • When providing open source software to DOE CODE, users can provide a repository URL to the source code. When a repository URL is provided, DOE OSTI will first ensure the URL is valid and then automatically clone the source code. Any subsequent changes to the source code will be updated in DOE CODE’s dark archive daily. When providing a repository URL, users should be certain to provide the URL to the actual repository.
  • When providing open source software and a repository URL is not available, or when providing closed source software, DOE CODE requires an upload of the software source code for announcement. The source code is used for archiving and preservation purposes, but is not distributed externally by DOE OSTI. More detail on archiving requirements can be found on DOE CODE’s FAQ page.

Software Repositories

The developer or developing organization decides where software is hosted and accessed. Options may include lab or site-maintained repositories, private repositories (such as site-hosted GitLab), and public repositories (such as GitHub and Bitbucket). DOE OSTI, through DOE CODE, provides a GitLab repository service for the DOE community.
  • DOE OSTI hosts a GitLab instance and provides a GitLab repository service allowing for open or closed repositories. The GitLab services are only available for unlimited availability software.

The DOE CODE GitLab repository service is separate from the submission and formal announcement processes to OSTI through DOE CODE. The repository service can be used for DOE-funded software projects throughout the development process, independent of submission and announcement of software records to DOE CODE. Visit DOE CODE Repository Service for more details.

*DOE CODE was initially developed as an open source project; the archived version of the DOE CODE project can be found on the DOE CODE GitHub Community Page.


Deleting Records

Preservation includes ensuring that an object (or a record of the object) is not deleted. DOE OSTI encourages users to maintain access to the software or information on how to obtain the software if access or distribution status has changed. For information on how to remove a software record from DOE CODE, please contact doecode@osti.gov.