Adventures in Consensus blog post from the Rust community

This blog has an interesting take on the purpose of the RFC process and the difference between submitting and defending full feature proposals and mapping the design space to find the tradeoffs: AiC: Adventures in consensus · baby steps

Mapping the solution space

When we talk about the RFC process, we always emphasize that the point of RFC discussion is not to select the best answer ; rather, the point is to map the solution space . That is, to explore what the possible tradeoffs are and to really look for alternatives. This mapping process also means exploring the ups and downs of the current solutions on the table.

What does mapping the solution space really mean?

When you look at it, “mapping the solution space” is actually a really complex task. There are a lot of pieces to it:

  • Identifying stakeholders: figuring out who are the people affected by this change, for good or ill.
  • Clarifying motivations: what exactly are we aiming to solve with a given proposal? It’s interesting how often this is left unstated (and, I suspect, not fully understood). Often we have a general idea of the problem, but we could sharpen it quite a bit. It’s also very useful to figure out which parts of the problem are most important.
  • Finding the pros and cons of the current proposals: what works well with each solution and what are its costs.
  • Identifying new possibilities: finding new ways to solve the motivations. Sometimes this may not solve the complete problem we set out to attack, but only the most important part – and that can be a good thing, if it avoids some of the downsides.
  • Finding the hidden assumption(s): This is in some way the same as identifying new possibilities, but I thought it was worth pulling out separately. There often comes a point in the design where you feel like you are faced with two bad options – and then you realize that one of the design constraints you took as inviolate isn’t, really , all that essential . Once you weaken that constraint, or drop it entirely, suddenly the whole design falls into place.
1 Like