-
Notifications
You must be signed in to change notification settings - Fork 3
02 GitHub in Government
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.
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.
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.
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.
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.
- The NOAA Fisheries Integrated Toolbox recommends GPL-3 over CC0-1.0 since the latter is not designed specifically for software. An additional note is added to clarify that the material is a US Government work. See their Resources repository.
- Other NOAA Affiliated GitHub organizations use a mix of GPL-3 and CC0-1.0.
- USGS uses CC0-1.0 License + additional info
- EPA seems to use CC0-1.0 License, e.g. useeior
- CISA also seems to use CC0-1.0 License, e.g. Sparrow
- Dept of Labor also uses CC0-1.0 License + additional info, e.g. ableist language app
- NASA uses Apache 2.0 mostly
- GSA uses CC0-1.0 License
- I (Eli Holmes) use CC0-1.0 with a note at the top that the work is a US federal government work by US federal employees as part of their official duties.
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.
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.
-
NOAA Fisheries Integrated Toolbox is a cross-center group that has been working for a number of years to provide a branded GH organization for NMFS public GH products and resources, training and tools for creating products. The resources are in the left nav bar on that page, so scroll down.
-
Fish and Fisheries Tools is an example of a branded set of GH hosted NMFS tools. The GitHub org with a resource folder for common elements and organization.
-
Within NWFSC, branded GH orgs have the name
nwfsc-xyz
. CB, CB Math Biology, CB Math Bio time series, CB OA Lab, FRAM, FRAM Assessment -
NEFSC: EDAB
-
PIFSC: PIFSC
-
AFSC: AFSC assessments, NMML
-
SEFSC: SEFSC
-
SWFSC: Major open source code and data producer (many CRAN packages, e.g.). But I can't find any GH organizations. I did find many individual GH accounts.
- US Geological Survey has a major GitHub presence.
- NASA does too
- U.S. General Services Administration has close to 900 repos on its org.
- Cybersecurity and Infrastructure Security Agency
- Environmental Protection Agency
- Department of Labor
- US Forest Service
- The US Department of Education's College Scorecard is all open source and on GitHub. Note, this was an early open-source in government project and is not on the USED GitHub organization (which is minimal) but on the contractor's GitHub organization, RTI International.
- USDA
- National Parks Service
- See also this list by GitHub. Scroll down to the bottom for the US Research Labs. GitHub in Government