Vote to unlock merge request
Provide a mechanism for getting positive signals from users for a merge request, with enough signals opening the gate for accepting the merge request. This will be similar to approvals in EE, but purposely designed (and branded) and implemented differently than EE's approval system (that will become more powerful and fine-grained over time).
- Use a voting mechanism, such as emoji
- Provide a configuration setting to turn on the feature project-wide. The configuration should also set the number of votes required to make the merge request acceptable.
- Other conditions for allowing the merge request to be accepted remain the same. This new feature just adds one more necessary condition for merge-ability.
- Any user who can view the merge request page can vote. They can only vote once. There are no negative votes / signals.
- View how many votes have been received, and how many remain (or the total required).
- This CE feature and the EE approvals feature should be clearly differentiated. So we should not even use the term "approval" in describing the feature or in the UI. Perhaps "voting" to "unlock" a merge request.
- This feature is available in CE, but not in EE. (The EE approvals feature is of course not available in CE.)
Out of scope
- Negative signals are out of scope.
- You cannot take back your vote. Unvoting may be a future feature.
- Viewing who has already voted is not in scope for this current issue.
- There's no explicit requirement for what happens when you've reached the number of votes and have unlocked the merge request. Whether others can keep voting or not, and what the display will be, whatever is easiest to implement, let's do that first. More details can be worked on in the future.
Some mockups so far
Approvals by Votes
At Immuta we have a workflow in GitHub where someone submits a PR, various people review it (sometimes experts at specific languages, sometimes just anyone in general can review it) and once you have enough thumbs up beyond a specific threshold (usually 2) you are then allowed to merge the PR into master.
I've been eyeing up GitLab and I noticed GitLab issues have a voting mechanism. It would be incredible if there was a way to tie the voting mechanism into the ability to merge.
So say when you setup a project you can specify that the build is required to succeed AND there must be X amount of votes before the merge button becomes available. Bonus points: allow a way to specify either people and / or groups that are allowed to have their vote be counted towards making the merge button active.
Thoughts? I'd love to say I could help contribute towards this but would unlikely have any time to do so as I'm already encumbered with work and multiple other open source projects.