Software Management

Distribution of USGS Code

USGS Software Metadata: code.json

USGS Software Metadata: code.json

All USGS software repositories should contain a code.json metadata file and it's root and you can create one easily using this simple template.

Template Download

Licensing USGS Software: CCO

Licensing USGS Software: CCO

The Creative Commons (CC0) license places your software as completely as possible in the public domain so that it is free for others to use or build upon, 

Read the License

Code and Software might be shared through a variety of methods ranging from email correspondence to code repositories to deployment on a server. Regardless of the method, below is a checklist of essential items to consider when distributing source code or software.

Check Policies

Know which policies apply to your activity and your responsibilities as an author.

Federal Source Code Policy

With limited exceptions, all source code associated with USGS software must be made available at a minimum for Federal Government-wide reuse. Prior to starting a new software project, a strategic analysis of mission goals and existing open, mixed, and proprietary software solutions free of preconceived preferences must be considered to comply with the 2016 Federal Source Code Policy (as described in OMB M-16-21). Custom-developed code may only be considered if existing solutions do not adequately satisfy USGS needs or the purpose of science and innovation.

Office of Science and Technology Policy directive on increasing access to the results of scientific research

All code and software that is developed for the purpose of science and innovation is required to be made publicly available to comply with the Office of Science and Technology Policy memorandum, Increasing Access to the Results of Federally Funded Scientific Research. The details of how scientific software may be shared and author’s responsibilities are described by USGS Fundamental Science Practices USGS Instructional Memorandum on Scientific Software.

USGS Instructional Memorandum on Scientific Software Release

All scientific software is governed by USGS Instructional Memorandum (IM OSQI 2016-01)  Review and Approval of Software for Release. Scientific software is a discrete package of computer code and documentation that contains source code implementing scientific algorithms and/or producing scientific data. A scientific software product may also be integral to or part of another USGS scientific information product or series publication (e.g. a USGS data release, an Open-File Report, or Techniques and Methods series product), or an outside publication such as a journal article.

Approval

  • It is recommended that all software obtain Center Director (or delegated authority) approval before distribution.

  • Scientific Software requires formal Center Director (or delegated authority) approval in IPDS.

Security Review

All software must have a security review before it is made publicly available by any method. Scientific Software is subject to additional reviews also. A security review ensures personal, private, or otherwise sensitive information is not included in the repository (Refer to Review). Sensitive information that should not be shared includes:

  • Personally identifiable information (PII)

  • Absolute file system paths

  • Internal server host names or IP addresses

  • Usernames/Passwords

Metadata

Providing properly structured metadata is key to ensuring that software can be adequately discoverable and reusable. You should create a code.json file in the root of each software repository. The contents of the code.json file should be that of a single project as described on the inventory code compliance website. The required fields are name, organization, description, version, status, permissions, URL links, tags, languages, contact name and email, and date.

By creating this file, a bureau level file will be automatically generated and posted to either the Department of the Interior (DOI) or USGS website in order to maintain the USGS software inventory as part of the Federal software inventory at https://code.gov/.

Licenses

All software developed by the USGS should by default use an open-source license (put a "LICENSE.md" file in the project root of your repository). Below are license options to consider:

  • The Creative Commons (CC0) license may be used (currently CC0 1.0) when an official license declaration is required or appropriate to include. This assumes the software is either completely original, or using other software also with the CC0 license. This license places the work as completely as possible in the public domain so that it is free for others to build upon, enhance, or reuse, should work for most USGS software.

  • "MIT/X11" is an option when governing jurisdictions do not recognize the public domain dedication (e.g. outside the U.S.). Outside the United States, we are not required to release the source unencumbered (though MIT/X11 is probably the least encumbered, open-source license).

  • The Unlicense (unlicense.org) may be used to opt out of copyright altogether.

Note: Any copyrighted code that is used in USGS software products must be used with permission from the copyright holder and should be marked as being copyrighted material (refer to SM 1100.6).