On Thu, Jun 18, 2015 at 6:31 AM, Mike Hearn <mike@plan99.net> wrote:
The first issue is how are decisions made in Bitcoin Core? I struggle to explain this to others because I don't understand it myself. Is it a vote of people with commit access? Is it a 100% agreement of "core developers" and if so, who are these people? Is it "whoever reverts the change last"? Could I write down in a document a precise description of how decisions are made? No, and that's been a fairly frustrating problem for a long time.
There is a quote from United States Supreme Court Justice Potter Stewart to describe his threshold test for obscenity which is relevant here: "I know it when I see it."
It is hard certainly, and perhaps even impossible to write down a system of rules that is used to resolve every dispute among core developers. But that doesn't mean it isn't obvious to all the participants what is going on. If a contentious change is proposed, and if after sufficient debate there are still members of the technical community with reasoned, comprehensible objections who are not merely being obstinate in the views -- a neutral observer would agree that their concerns have not been met -- then there is a lack of consensus.
If there was some sort of formal process however, the system wouldn't work. Rules can be gamed, and if you add rules to a process then that process can be gamed. Instead we all have a reasonable understanding of what "technical consensus" is, and we all know it when we see it. Where we do not see it, we do not proceed.