Github collaboration features: tools for organizational scaling #4131
Replies: 7 comments 12 replies
-
Pattern 1: Domain-based subteams
Pros
Cons
|
Beta Was this translation helpful? Give feedback.
-
Pattern 2: Team leads
Pros
Cons
|
Beta Was this translation helpful? Give feedback.
-
Pattern 3: Cart, owner of code
Pros
Cons
|
Beta Was this translation helpful? Give feedback.
-
Pattern 4: Bors, owner of code
Pros
Cons
|
Beta Was this translation helpful? Give feedback.
-
With bors squashing all commits already this shouldn't be needed. If anything it would confuse contributors into thinking that they need to update their branch before changes can be accepted.
This will probably break bors as it works on a branch without opening a pull request itself.
I agree. If bors is one of the status checks that will also force usage of bors, which may allow restricting merge permission even for those with write permission on github.
Bors helps a lot with it's merge queue. Without bors you would have to wait for each PR to pass CI before you can merge it and update the next PR. |
Beta Was this translation helpful? Give feedback.
-
Pattern 5: Scoped team leads
Pros
Cons
|
Beta Was this translation helpful? Give feedback.
-
On Removing Bors (and why I think we can't)We already explored the "no bors world", pretty much to its full extent (i really wanted to stay "github native" and put off using bors for as long as I could). "Github native" has a number of deal breaking problems:
Bors solves a number of problems for us:
Github's merge queues might eventually solve these problems for us, but right now they are still in beta (and we haven't been granted access yet ... and we requested access right when they were announced). They also don't support squash merges yet, which would be close to deal breaking. |
Beta Was this translation helpful? Give feedback.
-
Motivation
The following features are listed with the permissions level required to perform the action in parentheses.
Dangerous powers
There are several powers that are moderately dangerous to give to Bevy org members, that we should be careful about handing out:
There are several seriously dangerous powers, that we should avoid handing out if at all possible:
Testing
I've created a test org and test repo to experiment with features. Feel free to message me (or comment below) if you want access to experiment.
General settings
If we move off of bors (see below), we should enable squash commits only.
This should be enabled.
We should strongly consider enabling this for the Bevy org, especially if and when we grant additional powers.
Role-based access control
By default, there are 5 permissions levels. These roles mostly fit our needs, although there are some questionable choices.
We could, in theory, create custom roles. However, this seems to be restricted to Enterprise users, at a steep $210 / yr / seat...
I'll reach out to support, to see if they would be open to granting this permission to an open-source team. We could find a rather deep-pocketed sponsor to support this, but TBH this is a high price to pay and would force us to be much more restrictive about org membership.
Test setup
This testing was done on a test repo using a second dummy account. Please feel free to message me asking for permissions if you would also like to experiment.
Test results
Branch protection
Branch protection: You can protect important branches by setting branch protection rules, which define whether collaborators can delete or force push to the branch and set requirements for any pushes to the branch, such as passing status checks or a linear commit history.
Rule analysis
There are several rules we could turn on for
main
:Code owners
Code owners: You can use a CODEOWNERS file to define individuals or teams that are responsible for code in a repository.
PRs will not be able to be merged, unless they have approval from all code owners.
bors
will obey code owners restrictions directly.Beta Was this translation helpful? Give feedback.
All reactions