-
Notifications
You must be signed in to change notification settings - Fork 22
Consensus and Voting Model #6
Comments
In the current BDFL model the contributors fell in to a pattern I'd call "fight for my patch." This meant that people pushed hard to get their code in through the one person with the authority to land it as well as any naysayers along the way. I can think of instances where this dynamic played out in ugly ways under every project lead and so I am convinced that it is the fault of model and not any of the individuals who have had the role. The consensus seeking model that Node Forward adopted has created an all together different environment. In consensus seeking the goal is to win over the other participants and everyone is invested in making progress rather than tying people up in the process. At the same time, no individual can be a road block like you get with pure or full consensus. In the time that we have been using this model several contentious issues have been raised. What usually happens is that people's concerns are alleviated quickly or the person proposing the change simply withdraws it in order to reformulate it in to something that is more easily accepted by their peers. It has been almost two months now and we have never resorted to voting. At the end of a discussion I simply ask "does anyone disagree?" and we move on. I'm actually amazing at how well it has worked so far. I would caution against the modifications that are being proposed. Going to pure consensus for certain kinds of decisions is ill advised. It removes the incentives for someone voting against a motion to try and convince their peers. I've seen this play out in pure consensus political groups I've been involved in and it's real ugly. Going to formalized or forced voting is also an unnecessary and rigorous process. The more you call formalized votes the more people don't consider them strange, which is what you want. You want the participants always moving in the direction of easy consensus and not calling for a vote rather than continuing to work towards it. Voting should be a last resort, and should feel like last resort to the participants rather than something you do routinely. The much simpler "Does anyone disagree?" works much better, it puts the onus of thought and process on those that are against a motion rather than on those that want to get things done. For reference, the governance structure is documented here: https://github.com/joyent/nodejs-advisory-board/pull/11/files#diff-898e7f1ceacb493c024554f5a7c87bdfR35 |
Just to add to what @mikeal has said, frequently someone has disagreed when we've asked "Does anyone disagree?" It's not taboo to disagree, and it is usually a source of very productive discussion. In both BD and pure-consensus models, disagreement becomes a source of angst. In a BD model, there's a chance that your disagreement will be shut down without being heard (the "benevolence" of the dictator would hopefully make this rare, but people are human). In a pure consensus model, disagreements are often perceived as a way to stall the process, and there's some social pressure to not be seen in that way. A potential fallback to well-established voting rules reduces the pressure to achieve consensus, which ironically makes consensus easier to achieve. A vote seems weird, and no one wants it to get there, but we're also not afraid to make our minority opinion known, and those in the majority have no need to try to shout us down. |
To follow up on what @isaacs is saying, the reason consensus seeking seems to work is that in all ways possible it incentives individuals to convince their peers. In BDFL and in full consensus people who disagree are not properly incentivized to convince their peers upon disagreement and it would also appear that routine voting could produce similar incentives in a consensus seeking model. |
A consensus model is nice, but I will argue that the major problem with node isn't disagreement, it's lack of decisiveness. Consequential decisions are almost completely avoided; only minor changes are made, everything else just piles up in the issue tracker or some other to-do list. I'll give an example: nodejs/node-v0.x-archive#8704 Another: will v8 upgrade to 3.29 or 3.30 before v0.12 drops? There needs to be a process for making real decisions. It could be a weekly meeting, then someone could put the issue on the agenda and be assured that at the end of the meeting it's clear what "node" is going to do. I agree that general consensus is much preferable to forcing things through with minimal majority. |
@piscisaureus I added an "Agenda" section that discusses how agenda gets added to the meetings and how votes are forced, does that properly address these concerns? Also, didn't the v8 upgrade land in node-forward with a quick and easy consensus? |
It's a good start, but we can talk about the details.
Yes, because node-forward actually discussed this. But for joyent/node that doesn't happen. |
Below is from an internal thread from the advisory board, included here to start the discussion.
Consensus and Voting
@shammond2000
@isaacs
@Danese
The text was updated successfully, but these errors were encountered: