We are updating our knowledge base!

Please visit our new site at https://wiki.greensoftware.foundation/ for the latest information.

GitHub Repositories & Permissions

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?

Every working group and project in the Foundation has a dedicated GitHub repository. Each repository in GitHub is like a project, and has its own set of issues, folders for relevant documentation, and ability to track the development of an issue.

Discussions are now public and hosted in the top-level repo on https://github.com/orgs/Green-Software-Foundation/discussions.

Naming convention

All repositories in GitHub should be small case, with hyphens - and not underscores _.

Prefer shorted more memorable names to longer names.

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

Appointment

Access

Permissions

Comments

WG Chairs & Project Leads

Maintainer

  • merge pull requests

  • apply suggested changes.

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 PMs

Admin

  • merge pull requests

  • apply suggested changes.

Admin access to all GSF repos

 

Contributors

Triage

  • be assigned issues.

  • apply labels to issues.

  • manage discussions/issues.

On request

Full breakdown of permissions on GitHub

Permissions for each role

Read

 

Triage

Write

Maintain

Admin

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

✔️

✔️

✔️

✔️

✔️

Submit reviews on pull requests

✔️

✔️

✔️

✔️

✔️

Approve or request changes to a pull request with required reviews

 

 

✔️

✔️

✔️

Apply suggested changes to pull requests

 

 

✔️

✔️

✔️

View published releases

✔️

✔️

✔️

✔️

✔️

View GitHub Actions workflow runs

✔️

✔️

✔️

✔️

✔️

Edit wikis in public repositories

✔️

✔️

✔️

✔️

✔️

Apply/dismiss labels

 

✔️

✔️

✔️

✔️

Create, edit, delete labels

 

 

✔️

✔️

✔️

Close, reopen, and assign all issues and pull requests

 

✔️

✔️

✔️

✔️

Enable and disable auto-merge on a pull request

 

 

✔️

✔️

✔️

Mark duplicate issues and pull requests

 

✔️

✔️

✔️

✔️

Request pull request reviews

 

✔️

✔️

✔️

✔️

Merge a pull request

 

 

✔️

✔️

✔️

Edit and delete anyone's comments on commits, pull requests, and issues

 

 

✔️

✔️

✔️

Lock conversations

 

 

✔️

✔️

✔️

Act as a designated code owner for a repository

 

 

✔️

✔️

✔️

Mark a draft pull request as ready for review

 

 

✔️

✔️

✔️

Convert a pull request to a draft

 

 

✔️

✔️

✔️

Create status checks

 

 

✔️

✔️

✔️

Create and edit releases

 

 

✔️

✔️

✔️

View draft releases

 

 

✔️

✔️

✔️

Edit a repository's description

 

 

 

✔️

✔️

View and install packages

✔️

✔️

✔️

✔️

✔️

Publish packages

 

 

✔️

✔️

✔️

Delete and restore packages

 

 

 

 

✔️

Manage topics

 

 

 

✔️

✔️

Enable project boards

 

 

 

✔️

✔️

Configure pull request merges

 

 

 

✔️

✔️

Configure a publishing source for GitHub Pages

 

 

 

✔️

✔️

Manage branch protection rules

 

 

 

 

✔️

Push to protected branches

 

 

 

✔️

✔️

Merge pull requests on protected branches

 

 

 

 

✔️

Create tags that match a tag protection rule

 

 

 

✔️

✔️

Delete tags that match a tag protection rule

 

 

 

 

✔️

Limit interactions in a repository

 

 

 

✔️

✔️

Delete an issue

 

 

 

 

✔️

Define code owners for a repository

 

 

 

 

✔️

Add a repository to a team

 

 

 

 

✔️

Manage outside collaborator access to a repository

 

 

 

 

✔️

Change a repository's visibility

 

 

 

 

✔️

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

 

 

 

 

✔️

Manage data use settings for your private repository

 

 

 

 

✔️

Transfer repositories into the organization

 

 

 

 

✔️

Delete or transfer repositories out of the organization

 

 

 

 

✔️

Archive repositories

 

 

 

 

✔️

Enable GitHub Discussions in a repository

 

 

 

✔️

✔️

Create and edit categories for GitHub Discussions

 

 

 

✔️

✔️

Move a discussion to a different category

 

 

✔️

✔️

✔️

Transfer a discussion to a new repository

 

 

✔️

✔️

✔️

Lock and unlock discussions

 

✔️

✔️

✔️

✔️

Individually convert issues to discussions

 

✔️

✔️

✔️

✔️

Create new discussions and comment on existing discussions

✔️

✔️

✔️

✔️

✔️

Delete a discussion

 

✔️

 

✔️

✔️