Thanks for getting the ball rolling on this, @Gankro, and sorry for the late reply. I think the proposal here is in the right ballpark, but I have some concerns – play by play below.
That makes sense, but experience has shown that the amount of “controversy” (which is to say, people having opinions and wanting them to be heard) can be very difficult to predict in advance. To some degree you just get a better sense for this over time, but it’s still easy to make mistakes or get surprised.
That said, we plan to have final comment periods for both RFCs and for ungating features. The latter means that even if a feature comes in directly as a PR, there will still be a chance for people to try it and comment on it after the fact, before it is fully committed.
Part of the weighty feeling of RFCs in the past has been the lack of things like subteams and a visible RFC pipeline to keep things moving. But it’s also very important that “straightforward” API changes be easy to land with a minimum of process overhead, and I think eliminating the RFC requirement where we can is a good move.
Hm, this is a bit worrying, at least as stated. Major revamps of unstable APIs should probably require at least amendment RFCs, but I’m not 100% sure where to draw the line there. Certainly in the past I’ve done some significant revision between RFC and implementation…
I think I’d broaden that a bit to adding API surface that clearly follows existing conventions (no serious new design questions) and addresses a fairly clear need.
One worry here is bloat in the standard library, which can hurt discoverability etc. Personally, my feeling tends to be that if a new API fits in very naturally to the existing surface and follows conventions, there’s relatively little “cognitive overhead” and I’m happy to see it land, but I know @alexcrichton for example is more conservative on this front.
I think figuring out the exact line here is probably the most important – but also the hardest – piece of this puzzle.
These bullets make perfect sense, assuming we have fairly clear guidance on the previous question.
In particular, I want to draw attention to a new step here that the subteams make possible: the ability to reach for consensus at a “medium” scale – the subteam level – without going through the full RFC process. Assuming the subteam is active and fairly representative of the broader community, this should be a good way to keep things moving quickly while getting reasonably diverse input.
I very much like the steps you outline here, but I’m a little unclear on the timing. In particular, as @sfackler talks about, it may be hard to get a good enough sense of “real world” usage to know that an API is fully baked. The final comment period does help with this, but I wonder basically which side we should err on: better to have more APIs in unstable limbo (and wait for a chorus of requests to stabilize), or to commit to more APIs that we are not fully sure about (but no one seems to object to)?
I don’t know what the right answer here is. One of the things I’m working on right now is pulling together all the info we need to have a libraries dashboard, and that at least should give some better visibility into the “unstable limbo” features.
This sounds very good, assuming that we can maintain a broad level of trust in the subteams (which is important anyway). Thanks for writing it up!
+1