Github organisation governance

This is a WIP!

Status

In progress

Impact

High / Medium / Low

Driver

@Ruth Cheesley 

Approver

 

Contributors

@Norman Pracht (Unlicensed) @Mohit Aghera @Alan Hartless @Jan Linhart 

Informed

@Nick Veenhof (Deactivated)

Due date

Apr 25, 2021

Outcome

Background

With the increasing number of repositories that we have in the main organisation we need to have some centralised way of managing them to ensure that they all stay in sync, use the same rules, have the same security settings, and use a common set of labels across all repositories.

The aim of this document is to firstly document all of the repositories we have and secondly set out what rules and settings we will be applying, and perhaps more importantly, what repositories will be breaking from this structure and the reasons why.

The organisation will be done using a bot which references a central organizer.yaml file in the .Github repo for the org: https://organizer.gitconsensus.com

Relevant data

List of current repos

Used this tool to grab a list of all repos as of 24/04/2021 which I have uploaded to Drive:

https://docs.google.com/spreadsheets/d/1wbc4t5CiQebXKDtlH3WholI42Uz6fDiv1LI63QOejh8/edit?usp=sharing

I have grouped them in the following types of repos:

  • Core

  • Documentation

  • Integration

    • Several of these are managed by community members and will have their own permissions that need to be set up

  • Language packs

  • Plugin

    • These need to have the same semantic versioning as core

  • Tools

    • These are tools that are used by the project or things like Docker

  • Theme

    • These need to have the same semantic versioning as core

  • Website

I have specifically separated out the plugins and integrations because they are two different things but they are commonly confused. I think that we may need to make this clearer in the name of the repos, with plugin = installed in Mautic and integration = installed in third party system?

List of current labels on mautic/mautic

Used gh api /repos/elastic/$repo/labels --paginate to get a list.

https://docs.google.com/spreadsheets/d/1A7Mxcqo4h8ZA18rbGi0awEmIFC8KD-322ztQxE4TSd8/edit?usp=sharing

List of teams / members

Use this gist to get the list of teams and members:

https://docs.google.com/spreadsheets/d/1sGUGnv19qJ3CP_rKUuNdvipzLaI5bqNnPQuPHRWr14c/edit?usp=sharing

Proposed groupings of repos & team permissions

We can group repos together so that they get the same set of rules, rather than having to set them individually. I propose that we group them as in the spreadsheet above with the addition of a group called security.

We can set the permissions by team using the org file - I have set the suggested permission levels in the spreadsheet.

Action items

Outcome