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. We now have the NMFS GitHub Guide as a resource.
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.
Licenses and Disclaimers
See chapter on licenses and disclaimers for government work.
GitHub in NMFS
A selection of GitHub organization for NOAA Fisheries. Note many NMFS staff also use GitHub via their personal (work) accounts.
- 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.
- NOAA Fisheries Integrated Modeling System FIMS
- Automation Products for IEA Automation Products for Integrated Ecological Assessments
- Pacific Fisheries Management Council assessments NWFSC and SWFSC org related to groundfish assessments and data
- Pacific Hake Assessments
- NMFS Stock Synthesis r4ss ss3sim
- Ecosystem State
- Future Seas
- NWFSC: FRAM, FEAT, CB, CB Math Biology, CB Math Bio time series, CB OA Lab, TIDE, RVerse Tutorials
- NEFSC: NEFSC, Ecosystem Dynamics and Assessment Branch
- PIFSC: PIFSC, PIFSC Stock Assessments
- AFSC: AFSC assessments, NMML, AFSC Gap Products, AFSC Ecofoci, Alaska Groundfish EFH
- SEFSC: SEFSC
- SWFSC: SWFSC, US AMLR
- GARFO: GARFO
GitHub in NOAA
Be aware that this structure is evolving. 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.
- Geophysical Fluid Dynamics Laboratory
- NOAA https://github.com/ioos
- AOML Omics
- Great Lakes Environmental Research Laboratory (GLERL)
- Pacific Marine Environmental Laboratory
GitHub in other agencies
- US Geological Survey, USGS Astrogeology Science Center, USGS R, USGS Web Informatics
- Census Bureau
- NASA, NASA Jet Propulsion Lab, NASA Global Imagery Browse Services, NASA WorldWind, NASA-DEVELOP, MCL Consortium, Planetary Data System Software, NASA-IMPACT
- U.S. General Services Administration has close to 900 repos on its org.
- Cybersecurity and Infrastructure Security Agency
- Environmental Protection Agency
- Department of Labor
- Department of Energy Earth System Grid Federation, CROCUS, E3SM Project, Land Ice Verification and Validation toolkit, MPAS-Dev
- National Institutes of Health Early Detection Research Network
- Congressional Budget Office
- 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
- Veterans Affairs. In 2021, they transitioned their whole dev team to GitHub. news story
- National Parks Service
- US Bureau of Reclamation
- See also this list by GitHub. Scroll down to the bottom for the US Research Labs. GitHub in Government