Skip to content

02 GitHub in Government

Eli Holmes edited this page Feb 8, 2022 · 5 revisions

GitHub has been used by government agencies and staff for many years; some agencies more (GSA) and other are more newcomers. But recently there has been a bigger shift to using GitHub, not just for code and project tracking but also as an application or website delivery platform. How agencies, organizations, teams and individuals organize their GitHub projects is evolving. Currently (Sept 2021) the following is roughly how things are organized in NOAA.

Version control, Generally Speaking

There are several methods for version controlling code. The user can version control content on a local machine through Git, manage content versions on GitHub, and many other places. GitHub is strongly preferred. Sharing through other methods is fine, but it becomes harder to track versions and maintain version control.

Strongly preferred: GitHub

There are a variety of public and free options for collaboration with Git. Github is recommended over GitLab an dBitbucket as NOAA has set up rules regarding its use. See the GitHub resources folder for GitHub use and rules at NOAA, and see additional GitHub best practices below. NOAA does have some internal resources for collaborative Git platforms including VLAB and Gitlab. NOAA GitLab may be used only if necessary and there are no plans to include non-NOAA collaborators. VLAB is available for non NOAA users by invite only.

Terms

Product = software (like R package, say, or Python package), a dataset or database, a report with all the various pieces (data, code, text), a report template, a collection of scripts for some task, an application like an API or mobile app.

Repository = GitHub repository that may or may not be a product. Repository is like a folder on your computer. It is an organizational component but not necessarily, and actually often not, a product. Along with the repository comes important management tools at the repo level: issues tracking, project boards, releases, landing page, automation of tasks.

Organization = A collection of related repositories (products or not) AND the organization-level project management tools associated with those (project boards, team discussions, landing page). Anyone can create a GH organization. Think of it like a collection of folders on your computer. Individuals can use these or teams, e.g. Eli has 3 individual GH orgs for different projects, 3 team orgs for team projects and is a member of a few branded GH organizations.

Government agencies use some kind of public domain license, but which one used varies a bit. For NOAA Fisheries products, see the material in the Fisheries Integrated Toolbox. This group has been working the last couple years on developing boilerplate disclaimers and licenses for NMFS open source products.

Licenses

Work of the United States government that is done by US federal employees as part of their official duties is in the public domain within the United States of America and cannot be copyrighted. Code (or anything else) developed by US federal employees should have a notice that the work is in the public domain. Additionally it is common to waive copyright and related rights in the work worldwide through the CC0 1.0 Universal public domain dedication.

There are two main licenses used for products by federal agencies (or their employees) on GitHub: Creative Commons license (CC0-1.0) and the GNU General Public License v3. CC0-1.0 is a very broad declaration of public domain while GPL-3 is explicit about derivative works and how those works must retain an open source license.

Disclaimers

Besides the license, code from federal agencies should also have a disclaimer that the code is 'as is' and the user assumes responsibility for its use.

  • The Fisheries Integrated Toolbox has a Disclaimer for US Government products in its Resources repo.
  • The repos on the EPA organization use a few different (albeit similar) disclaimers. Generic, GitHub specific.
  • CISA repos have a bit of an ad hoc disclaimer.

GitHub in NOAA & NMFS

Be aware that this structure is rapidly evolving. Currently NOAA doesn't have a single organization site for official products. NOAA is a branded GH org that has links to other NOAA-affiliated GitHub orgs. The list of NMFS-affiliated GH orgs is not even remotely complete.

GitHub in other agencies