How to manage/maintain multiple decoupled repositories

Status

In progress

Impact

High

Driver

@Ruth Cheesleyย 

Approver

ย 

Contributors

@Nick Veenhof (Deactivated)ย @Dennis Amelingย @Alan Hartlessย @Jan Linhartย 

Informed

@Norman Pracht (Unlicensed) @Mohit Aghera @Jozsef Keller

Due date

Apr 16, 2021

Outcome

Background

With the Composer Initiative we have decoupled all of the plugins and themes from the core Mautic repositories, in addition to the /app directory now being a separate repo of mautic/core-lib.

At the moment the repos only contain a copy of the code at a point in time - they do not have the git history which we need to retain.

We also need to find a way so that we can break out all of these into their own repo, but keep all of them updated (one way only from mautic/mautic โ†’ core-lib/plugin/theme repo) so that when these are updated when a PR is merged, the code is automatically synchronised (maybe with a GitHub Action?) to the plugin/theme repo.

Some related things we need to consider:

  • Governance for all the repositories

  • All plugins will need to use the same branching strategy so that they can be aligned with PRโ€™s against different versions that may be in flight at the same time

  • The build will need to make sure that the plugin repos are tagged as well as the core repo

This MUST be in place before the Mautic 4 Beta Sprint (23-25 April)

Research

Splitting the repos while maintaining the GitHub commit history (this does not take into account maintaining the sync)

Maintaining the sync between mautic/mautic and the core-lib, plugins and theme repos

Governance of decoupled repos

  • We need to make sure that all of the plugins and themes are appropriately licensed and that a readme & license file plus all the security and community health files are present

  • We can set up a centralised .github repo that allows us to orchestrate all of our organisation repos centrally

    • We would need to reach out to the maintainers of repos ahead of time to make sure that they are aware of any changes (eg changes to branch names) that we may require / suggest

    • We can apply rules to groups of repos, to all repos, or manage them individually

  • There is a tool that we can use to manage our repos centrally: https://organizer.gitconsensus.com

Useful resources

Options considered

ย 

Option 1:

Option 2:

ย 

Option 1:

Option 2:

Description

ย 

ย 

Pros and cons

Estimated cost

Large

Medium

Action items

Outcome