NASA's Public GitHub Organization

Purpose

This organization is intended to publicly host NASA code that has been SRA-approved for open source. You can review the SRA (software release authority) process for getting open-source approval on https://code.nasa.gov/#/guide.

Who

Only NASA staff can be a member of the NASA org on github.com and release code in github.com/nasa org.

Members of the public can not attain and do not need collaborator status. You don't need any special status to submit pull requests or add issues.

Only members have rights to directly edit code in a github.com/nasa repository. Everyone else will need to submit a pull request. We highly encourage pull requests from the public!!!

If you are a NASA employee and would like to be added to the Public NASA GitHub Org, you will need to submit the AGCY NASA Github Collaborator Form NAMS request (https://nams.nasa.gov).

How

For information on how to become a member of the NASA Org (you need to be a NASA civil servant or contractor with access to systems inside the NASA firewall), please see the instructions on code.nasa.gov/#/guide. Additionally, see "Request Process" below.

Instructions for NASA Org on Github.com Once You Are a Member

To ensure mandatory policies are followed, NASA org members are not given the full admin rights you might be used to on your personal github.com accounts. However, by using teams, team owners, collaborators, and outside collaborators roles we can make the experiene pretty quick and easy.

Org Owners

Only org owners have the ability to create new repositories and bring new users in as members of the NASA github org.

We currently have two active owners in the org:

Repos

We do not give out admin rights on any NASA Github repos for reasons stated above. If you want a new repo created or want to edit settings on an existing repo that require admin access, please contact one of our org owners. Without admin rights on a repository, you'll still be able to make any code changes yourself as long as you're a collaborator on that repository or a member of a team whose participants are collaborators by default.

If you need for a new repository (and it has gotten SRA approval) please either submit a modification to your NAMs request or email one of the Org Owners with the follwing information:

If you are joining for the first time and need a repository created, you can also include the same information in your NAMs request for access inside the more information box.

Teams

Teams are effective ways of managing repository access privileges for an entire group of users. Only org owners can create and remove teams, but we now allow users to be team maintainers. Team maintainers have permissions to add and remove users to their teams from the population of people who are already NASA org members.

Note: Team maintainers are technically able to add a user who was once in the NASA org back onto their team (thus reinstating the user in the org). However, we do not allow this and will remove maintainers who are found in violation. If you need a past member to be reinstated in the org, contact an org owner and request to be added as an outside collaborator.

Collaborators

Github also has a role called "collaborator". This is someone who doesn't have repository ownership or admin rights but can push edits to code directly without doing a pull request.

If you would like to add a NASA staff member who is a member of the NASA org as a collaborator on a single repository, we still suggest you contact the NASA org owners mentioned above about setting up a TEAM for that single repository instead of adding people one by one. Teams result in less requestes (and therefore waiting) on NASA org owners for actions. We are sorry you don't have normal full ownership rights. It is because everyone with write access needs to be approved NASA user. If you had normal repository owner right, you could add any github user.

Outside Collaborators

Only on a rare case-by-case basis we will allow non-NASA users to be added to the org as Outside Collaborators. You can collaborate without this status via forks, branches, and pull-requests. If you fork a repository, you can make changes and then submit back a pull-request. A repository maintainer can then approve those changes. You do not need formal outside-collaborator status for this!

Please reach out to us if you have any questions.

Request Process

Need: If you need to be added to the NASA org on github.com/

Process: Create a personal github account and then request to be added as a Github Collaborator via a new or modified NAMs request. Please include your github id in the request.

Need: If you need to add a new open-sourced repository to github.com/nasa that has already been approved via the software release authority process.

Process: Make or modify a request to start a new repository in github.com/nasa via the NAMs request. Please give it a useful name and good documentation! We'll create a blank repository for you to put the code into.

Need: If you need to create a new team for managing who has access to make changes on a particular repository or group of repositories.

Process: Modify your NAMs request to request the team creation or email the two owners above. Give team name and which repositories team members should be given access to.

Need: If you need to add a new member to an already established team.

Process: Send an email to the Team owner, modify your NAMs request, or email the Github Owners in that order of preference.

Related Sites

Code.nasa.gov

Please make sure any repos added here are also tracked in code.nasa.gov! Placing open-sourced code on https://code.nasa.gov is a congressional mandate. Additionally, all code projects on code.nasa.gov will get harvested into code.gov, which improves discoverability for the public and enables federal government wide tracking of open-sourced code.

Questions?

In addition to the emails listed above, you may leave an issue on this repository. We will use those questions & answers to eventually make a FAQ section on this page.