tl;dr: Oh my...
I think we have an interesting discussion here, and a lot of valid and
good points were brought up.
However, I have a concern with Richi's suggestions on a much more
fundamental level.
I (re-)read
https://tools.ietf.org/html/rfc7282 very carefully, and
it's indeed a very insightful document. (If you haven't read it
already, I strongly recommend to do so.)
I do not see any substantial contradiction between CouchDB-style lazy
consensus and RFC7282, though. Please note that lazy consensus
describes the "happy path", pretty much what RFC7282 sees as the
prefered variety of consensus. Rough consensus, however, kicks in if
no "regular" consensus can be reached. It is dealing with a case where
lazy consensus has already disappeared. In all its essence, it's a
_replacement_ for voting.
Thus, if we wanted to introduce rough consensus in our governance, we
would have to use it instead of the majority vote, not the lazy
consensus. Replacing the lazy consensus with rough consensus would
actually be against the spirit of RFC7282 because RFC7282 still
prefers a "smooth"/"good" consensus over a rough consensus, but
Richi's proposed change explicitly states that rough consensus is the
"default decision making mechanism".
To analyze the premise of RFC7282 a bit more:
Two relevant properties of the IETF are:
1. They do not vote. (They don't want to, but they also cannot.)
2. They have chairs.
Obviously, RFC7282 expresses a lot of reasons why votes are
problematic in general, but it also states that the IETF doesn't even
have the formal requirements for votes as their is no definition of
voting right.
For Prometheus, the situation is pretty much the oppsite:
1. We do vote. (We don't want to, but we can if need be.)
2. We have no chairs.
I want to emphasize that we do not _like_ votes. They are a last
resort. That's clearly stated in the governance. We probably all agree
with the problems of voting described in RFC7282, but as long as votes
don't happen often, those problems are not very relevant. As also
stated in RFC7282, the IETF has to revert to rough consensus quite
often. If we had to revert to votes very often, I'd agree that we have
a problem. The IETF has work groups with hundreds of people (and many
work groups), while the whole Prometheus team consists of 20
people. The much larger organization size makes it more likely that no
"smooth" consensus can be found. On the other hand, the larger size
goes along with some hierarchical structures, so there are work groups
with chairs, and the existence of chairs enables rough consensus. With
voting as the last resort, they would devolve into constant votes with
all its problems. So rough consensus is the better way out for them.
I have to disagree with Richi that rough consensus would work without
chairs. On the contrary, I believe that qualified chairs are the most
critical part of making rough consensus work. (As said by others in
the thread already: Who would otherwise make the binding call when the
rough consensus is reached.)
Or in other words: Rough consensus would solve a problem that we don't
have with means that we don't have, either.
Having said all that, the mail thread so far shows that there is a
fair amount of dissatisfaction with our decision-making performance so
far. In general, I believe we need to understand and discuss the the
underlying problems better to find a good solution for it. However,
here is my speculation why rough consensus appears appealing to some
of us: Precisely because we all know and feel that frequent voting
would be a problem, we avoid votes, and because we do that, we
compromise on the quality of our consensus, e.g. we shy away from
decisions where a consensus seems hard to find, or some of us
"capitulate" (as fittingly described in RFC7282), or the notion of
"veto power" spreads, and probably more... If that's true, the
problems of voting would indirectly have an effect even if actual
votes are rare. In that case, rough consensus might be a solution, but
note what I pointed out above: It would replace the voting, not the
lazy consensus part AKA we would still first try to find a "smooth"
consenus before we go "rough". And yes, it would require chairs. In
case of the small size of the Prometheus team, one chair would
probably be enough. Prometheus-team would then be the voting body to
elect the chair. But here is the point where I stop my speculation.
Summary of my points (all meant as IMHO, even if stated as facts here):
- The changes as suggested in
https://github.com/prometheus/docs/commit/f7ee6ac5a9b841be6be25d92e2c403de15949491
are _not_ following the spirit of RFC7282.
- To truly adopt rough consensus, we need to introduce a chair and get
rid of decision finding by voting (with change of governance,
admitting and removing team members, and electing the chair as
notable exceptions). But that would be a very invasive change of the
governance.
- Before we do that, I would prefer to not start a discussion with a
possible solution, but with the problem we are trying to solve. I
think we first have to understand the apparent or actual problems in
decision making much better. Then we are in much better shape to
find a solution.
--
Björn Rabenstein
[PGP-ID] 0x851C3DA17D748D03
[email]
bjo...@rabenste.in