I’ve written and shepherded a handful of RFCs over the years, and noticed that some frustration points about our RFC process keep coming up again. I think that it is now time for us to reflect on our past experiences with this, and discuss how to improve things going forward.
So, let’s share your experiences you’ve had with our RFC process so far.
I’ll start with a minor annoyance, that the FCP process is under-specified.
Who actually declares FCP? Is it the shepherds, or is it the steering committee on behalf of the shepherds? If I read the text correctly, the idea is to have one shepherd propose FCP, and then FCP starts only after the other shepherds signed it off. Does this happen automatically, or does it require an explicit announcement after the shepherds have signed off? If so, who is responsible for that? When do we start counting the 10 days for the FCP? And shouldn’t it be the other way around in the first place? The shepherds all give their agreement, and then FCP is declared
It is also advertised widely, e.g. in NixOS Weekly and through Discourse announcements.
Let’s ignore the fact that NixOS Weekly is pretty much dead, who is responsible for making the Discourse announcement? Is it the shepherds or the steering committee? Is such an announcement “mandatory” in the first place?
A trickier one is the relationship between RFC authors and shepherds. In theory, the author is the main responsible for the RFC, while the shepherds’ job is mostly to guide the discussion. In practice, being a shepherd involves a lot more work than that. Some RFCs have been completely rewritten by the shepherds, and in some cases the original authors even stop participating …
The RFC process also states “The author cannot be part of the Shepherd Team”, which also gets a lot trickier in practice than one might initially expect. Does this also apply to co-authors? What if the shepherds completely rewrite the RFC during the process, do they now count as authors? What if an entire Nix team authors an RFC? On this topic, the steering committee wrote in Update 2023-05-03 · Issue #112 · NixOS/rfc-steering-committee · GitHub :
- sees this as not much of an issue, partly because shepherding often results in contributing to the text of an RFC anyway;
- RFCSC shall avoid selecting a shepherd team that does not include any opposing voices when such voices are present in the discussion;
- Formalising this is not necessary, but if people feel the need and are willing to write an RFC to codify this it will of course be considered like any other RFC.
I do think that updating our process to reflect these questions would be favorable.
All these points above raise questions about the role we want our shepherds to fulfill. Do we select shepherds as proponents of an RFC whose job is to safely bring it through the process? Or do we think of shepherds as mostly neutral helpers, preferably with the shepherd team having diverse opinions on the subject? Because the process reads like it was written with the latter in mind, while the former is more common in many RFCs.
One major point of frustration that I regularly see, but which I fear is not a “technical” problem, is the lack of feedback and participation. Especially for the less controversial and more straightforward yet technical RFCs, finding shepherds and getting forward can be extremely difficult. Sometimes no external opinions are raised at all until FCP gives the RFC some additional visibility. This can be very frustrating and demotivating.
On a closing note, my intention is about iterating and making incremental improvements to our process, not about re-inventing how our RFC process could look entirely different instead. I do not necessarily want to change the lived process, I mostly want the written process to more precisely describe what is already happening in practice.
Also note that I have no plans of writing an RFC for this myself currently, but I do hope that somebody else will be inspired by this discussion to do so.