Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal for better branch management practices for the Magma repository #8921

Closed
ekowtaylor opened this issue Sep 1, 2021 · 8 comments
Closed
Labels
status: accepted type: proposal Proposals and design documents

Comments

@ekowtaylor
Copy link
Contributor

ekowtaylor commented Sep 1, 2021

Better branch management for the Magma repository

As the product has matured and the team has grown, so has the number of branches in the repository.

There are now at least 50 branches in the codebase and this number is growing. It's essential that we tame this growth to foster a healthy perception around how we manage the repositories.

The goal is to limit who can create a branch in the repo and for what purpose. Whilst as this, we should cleanup the existing branches too.

Here are some thoughts about some concrete actions that we can take to achieve a healthier approach to managing branches.

  • Moving forward, only specific branches can be created for:
    -- Release testing and validation
    -- Other program-wide needs as determined and validated by a set criteria (TBD) and owned by specific individuals/groups
  • All development branches now have to be created locally within the developers own environment and not as a part of Magma's main repo i.e. clone the repo locally
  • We should dedicate sometime for all active branches that are for individual development purposes to complete any ongoing work, migrate as needed and made ready for deletion

Proposed changes

  • When do we create a new branch?
    • When the product team requests for a new release per the teams sprint cadence
    • When a branch is required by the CI/Test team for specific program needs
  • Who can create a new public branch?
    • DevOps TL
    • Eng TLs
  • Branch lifecycle
    • Release branches are permanent
    • All other branches are ephemeral first but can be made permanent after a TSC review
@ekowtaylor ekowtaylor added the type: proposal Proposals and design documents label Sep 1, 2021
@hcgatewood
Copy link
Contributor

@ekowtaylor after discussion at today's TSC sync, we're supportive of the proposal but want a bit more clarification of how this will be implemented. Specifically, it's useful for e.g. CI changes to be tested by creating a new branch, and we want to better understand how that process would work under the proposed changes

@ekowtaylor
Copy link
Contributor Author

ekowtaylor commented Oct 4, 2021

After thinking through this some more, the proposed next steps are as follows:

  • Defining a socializing a new criteria for creating new branches (see proposal section above)
  • Reviewing and limiting who has the permissions to create public branches
    • This is not supported natively in Github so a workaround using hooks will be required
  • Once the necessary tooling is in place, a review of all branches will be performed and a list of supported and non-supported branches as well as the new criteria for creating additional branches will be shared with the TSA for their approval
  • Once approved, we will announce to the community the new plans for managing branches, publish the list of supported branches and criteria for creating new ones
  • All branches deemed non-supported will be given up to a week for their owners pause all work, recreate locally as needed and to delete them by themselves
  • Finally, all remaining non-supported branches will be deleted by an admin after the set date to start the new branch management process

@ekowtaylor
Copy link
Contributor Author

@hcgatewood let me know what you think

@hcgatewood
Copy link
Contributor

hcgatewood commented Oct 4, 2021

@ekowtaylor LGTM. We didn't get to this today unfortunately, but I'll prioritize it at the next sync!

@ekowtaylor
Copy link
Contributor Author

Added some more details: https://fburl.com/8vbbd4pb

@hcgatewood
Copy link
Contributor

@ekowtaylor let's plan to have you present this proposal at the Nov 1 TSC meeting

http://bit.ly/MagmaPublicCalendar

@hcgatewood hcgatewood added the status: needs presentation Needs to be presented at the TSC meeting label Oct 18, 2021
@ekowtaylor
Copy link
Contributor Author

Acknowledged, will prep for it

@hcgatewood hcgatewood added status: accepted and removed status: needs presentation Needs to be presented at the TSC meeting labels Nov 3, 2021
@hcgatewood
Copy link
Contributor

Accepted! Thanks for driving this forward @ekowtaylor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: accepted type: proposal Proposals and design documents
Projects
None yet
Development

No branches or pull requests

2 participants