I would like to propose that we create a new role within the community called “RFC Shepherds”. “RFC Shepherds” will be responsible for ensuring that a definitive yes or no decision is made for every RFC proposed for the project.
Creating this new role will help solve the problem we have with some RFCs, where an RFC is proposed, discussed, but then goes nowhere because there is no definitive decision made about how to move forward. This is especially an issue for newer contributors who may not know who to ping to revive a discussion or to give a definitive yes or no decision on their RFC. A good example of this problem is the recent RFC to move the llvm vim utils into its own repo.
The process for “Shepherding” an RFCs will be:
- Monitor Discourse for new RFCs and add self as a watcher.
- After 1 week of discussion on an RFC, review the discussion and decide if an RFC has:
a) Reached consensus (either yes or no).
b) Needs another week of discussion.
c) Needs to be promoted to the LLVM Decision Making Process. - Explicitly communicate the decision by commenting on the Discourse thread.
Once an “RFC Shepherd” decides that there is a consensus ‘yes’ on an RFC, then and only then may the changes implementing the RFC be committed to the repository (after following the existing process for code review).
It is important to note that “RFC Shepherds” should not make decisions based on their own personal preferences, but should be making decisions based entirely on community feedback. An ideal person to “Shepherd” each proposal would be someone with some background knowledge on the topic, but without any personal stake in it. It is understood, though, that this ideal person may not exist for every RFC.
In most cases only one “RFC Shepherd” will be needed to review an RFC, but RFC authors or anyone who commented on the thread may request additional “RFC Shepherds” review the proposal in case of a disagreement.
There will be three “RFC Shepherds” and they will be chosen from community volunteers with preference given to those who volunteer first. (i.e. The first three people to volunteer will become “RFC Shepherds”). Each “RFC Shepherd” will commit to keeping the role for six months. After the six months is up, the “RFC Shepherd” may volunteer again for another six months if there are no new volunteers.
I think that our community has grown big enough that our lack of authoritative decision makers is starting to affect the quality of the project. When I first started working on LLVM 10+ years ago, there were a number of highly visible, very active contributors who were clearly the decision makers for the project and where able to fill this role. But today, I don’t think we really have anyone who feels empowered enough to make authoritative decisions in the same way. Or at least the people that do are much less visible and much less active then they used to be.
I think it’s very important that we change this and give more of the project experts the authority to evaluate and decide community consensus for the future direction of the project. The “RFC Shepherds” is how I think this problem could be solved, but I would be happy with any solution that solves this fundamental issue.