What is GitHub?
GitHub is where we manage almost every aspect of the Foundation.
It’s where people collaborate on documents and code.
It’s where people have discussions about our projects and green software.
It’s where we project manage all our work through GitHub Issues and GitHub Projects.
What is a Repository?
Each repository in GitHub is like a project, it’s has it’s own set of issues, it’s own place to put docs, it’s own project board.
For example this is the repository for the Software Carbon Intensity Specification Project: https://github.com/Green-Software-Foundation/sci
The issues related to this project are in the issues tab https://github.com/Green-Software-Foundation/sci/issues
Any discussions related to this project are here : https://github.com/Green-Software-Foundation/sci/discussions
Every working group and project in the Foundation has it’s own GitHub repository, even if we don’t store any code/documents in the repo, we use the repo’s project management features to manage the project.
Permissions in GitHub
To perform any actions on GitHub, such as creating a pull request, assigning people to issues or adding/removing labels in a repository a person must have sufficient access to the relevant account or resource.
We use teams to assign permisisons, for example these are the teams and permissions for the SCI project above:
gsf-pms (admin)
gsf-staff (write)
<working group>-chairs (maintainer)
<project>-leads (maintainer)
<project>-contributors (triage)
Appointment | Access | Permissions | Comments |
---|---|---|---|
WG Chairs & Project Leads | Maintainer |
| WG Chair -Permissions granted only to their WG areas Project lead - Permissions granted only to their project repo |
GSF Staff | Write | Permissions granted only to their WG area | |
GSF PM’s | Admin |
| Admin access to all GSF repo's |
Contributors | Triage |
| On request |
Full breakdown of permissions on GitHub
Permissions for each role | Read | Triage | Write | Maintain | Admin |
---|---|---|---|---|---|
Manage individual, team, and outside collaborator access to the repository | ✔️ | ||||
Pull from the person or team's assigned repositories | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Fork the person or team's assigned repositories | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Edit and delete their own comments | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Open issues | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Close issues they opened themselves | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Reopen issues they closed themselves | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Have an issue assigned to them | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Send pull requests from forks of the team's assigned repositories | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
Approve or request changes to a pull request with required reviews | ✔️ | ✔️ | ✔️ | ||
Apply suggested changes to pull requests | ✔️ | ✔️ | ✔️ | ||
View published releases | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
Edit wikis in public repositories | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Apply/dismiss labels | ✔️ | ✔️ | ✔️ | ✔️ | |
Create, edit, delete labels | ✔️ | ✔️ | ✔️ | ||
Close, reopen, and assign all issues and pull requests | ✔️ | ✔️ | ✔️ | ✔️ | |
✔️ | ✔️ | ✔️ | |||
✔️ | ✔️ | ✔️ | ✔️ | ||
Request pull request reviews | ✔️ | ✔️ | ✔️ | ✔️ | |
Merge a pull request | ✔️ | ✔️ | ✔️ | ||
Edit and delete anyone's comments on commits, pull requests, and issues | ✔️ | ✔️ | ✔️ | ||
✔️ | ✔️ | ✔️ | |||
✔️ | ✔️ | ✔️ | |||
✔️ | ✔️ | ✔️ | |||
✔️ | ✔️ | ✔️ | |||
Create status checks | ✔️ | ✔️ | ✔️ | ||
Create and edit releases | ✔️ | ✔️ | ✔️ | ||
View draft releases | ✔️ | ✔️ | ✔️ | ||
Edit a repository's description | ✔️ | ✔️ | |||
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
✔️ | ✔️ | ✔️ | |||
✔️ | |||||
Manage topics | ✔️ | ✔️ | |||
Enable project boards | ✔️ | ✔️ | |||
Configure pull request merges | ✔️ | ✔️ | |||
Configure a publishing source for GitHub Pages | ✔️ | ✔️ | |||
✔️ | |||||
✔️ | ✔️ | ||||
Merge pull requests on protected branches | ✔️ | ||||
Create tags that match a tag protection rule | ✔️ | ✔️ | |||
Delete tags that match a tag protection rule | ✔️ | ||||
✔️ | ✔️ | ||||
Delete an issue | ✔️ | ||||
✔️ | |||||
Add a repository to a team | ✔️ | ||||
✔️ | |||||
✔️ | |||||
Make a repository a template | ✔️ | ||||
Change a repository's settings | ✔️ | ||||
Manage team and collaborator access to the repository | ✔️ | ||||
Edit the repository's default branch | ✔️ | ||||
Rename the repository's default branch | ✔️ | ||||
✔️ | |||||
✔️ | |||||
✔️ | |||||
✔️ | |||||
Enable GitHub Discussions in a repository | ✔️ | ✔️ | |||
Create and edit categories for GitHub Discussions | ✔️ | ✔️ | |||
✔️ | ✔️ | ✔️ | |||
Transfer a discussion to a new repository | ✔️ | ✔️ | ✔️ | ||
✔️ | ✔️ | ✔️ | ✔️ | ||
✔️ | ✔️ | ✔️ | ✔️ | ||
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
✔️ | ✔️ | ✔️ |