proposals/p1190.md
We've been having authors merged PRs, but that's not going to work when we get contributors who don't have merge access. We need a solution.
It's been mentioned that LLVM favors having authors merge due to the risks of breaking build bots. The LLVM community's leaning is to favor author merges so that the author can decide whether to try rolling back or fixing forward.
At present Carbon has essentially been using a shared repository model where authors merge their own PRs, but that's difficult to extend to a fully public setup. The fork and pull model is the other main git collaboration model, and is popular with open source projects.
Encourage reviewers to merge when they feel okay doing so. Let reviewers make that choice. Let authors say they'll merge themselves.
This is a fork and pull model which encourages reviewer merges.
See changes to code review.
We could tell reviewers to never merge PRs from developers with merge access. This is also a fork and pull model, but minimizing reviewer merges.
Advantages:
Disadvantages:
In the future, build bots may cause more issues, and we may lean more in this direction. It could also be that we end up here through standard practice of coordinating with the reviewer is concerned the author may need to fix a break post-commit. However, it doesn't seem necessary to make it a hard rule at present.
We could grant the public merge access; in other words, continue with a shared repository model, but fully public instead of private. This way, reviewers would not need to consider access.
Advantages:
Disadvantages:
We could allow reviewers to clean up pull request descriptions, rather than asking the author to.
Advantages:
Disadvantages:
The preference is to let authors control pull request descriptions.
We could only have authors resolve merge conflicts, instead of having reviewers do it.
Advantages:
Disadvantages:
The preference is to minimize review round-trips. However, this could still be a real-world outcome if reviewers generally only merge when there are no outstanding merge conflicts.
We could implement a two-person rule for source code changes, where both an author and reviewer must see the merged code. GitHub supports this with "Dismiss stale pull request approvals when new commits are pushed", although we may also need to require 2 approvers per pull request.
Advantages:
Disadvantages:
The preference is to minimize review round-trips.