How would changes to the Bitcoin protocol be decided upon? What constitutes a "majority"? We know that the Bitcoin protocol can be updated at any time. Larger updates and hard forks can be difficult to push through, but as long as a majority of the Bitcoin community supports the update, it can happen.

However, it's unclear to me exactly what "majority" means. Which players have the most weight in the decision-making process?


Does it mean "a majority of holders of bitcoin"? If an update is so drastic that it would threaten confidence in Bitcoin, they would likely sell and would vote with their wallets. However, if the update isn't particularly drastic, currency holders would likely have no course of action. If they only use Coinbase, for example, they don't have a choice of which version of the protocol to use.
Does it mean a majority of people with software running a version of the Bitcoin protocol? Currency holders with wallets like Bitcoin-Qt? They decide which version to run.
Does it mean a majority of nodes? (This is distinct from #2, as a person running 10 nodes in this scenario would get 10 votes instead 1 vote). Someone can flood the network with nodes running the protocol, and if there is a hard fork, people may mistakenly check to see how many nodes support each version, basing their decision on that ratio.
Does it mean a majority of merchants? They can decide whether to continue accepting Bitcoin, and they decide whether to convert BTC immediately or to continue to hold it.
Does it mean a majority of mining power? The miners are the ones who decide which blocks to accept and work off of.
Does it mean a majority of the developers (weighted by their influence)? Some have pointed out that that Gavin has a lot of influence and could probably convince people to adopt a particular change, as long as the change is small enough. Are there ways for the developers to  surreptitiously exert control over the progression of the protocol?


I started wondering about this after I read the following question: How could the bitcoin protocol be changed? Has this ever occurred?

In the comments, @Muhd says:


  So it follows that changes will likely only be implemented and adopted if it benefits a large majority of participants. I suppose most security updates would qualify. Technically, isn't it the case that we only need a majority of miners (>50%) to switch over? Or does it require more than that?


@meni-rosenfeld responds:


  No, a majority of miners is irrelevant. If miners try to change the protocol on their own, they will simply be ignored by the rest of the network, and their "mining rewards" will be worthless. A change requires an economic majority - adoption by the users and businesses who give the currency value.


P.S. This question is important because there are certain protocol changes that would be good for some parties but bad for others. For example, increasing the block size would be good for payers, but bad for miners (it would be easier to get a transaction in the blockchain, so there'd be lower mining fees).
"...if it benefits a large majority of participants.", nobody proposes anything ever that will not, at least be presented as, 'benefiting a large majority of participants'.  From 'trickle down economics' to 'you might not agree now with me on this proposal, but you'll agree with me later' gives the people that set the agenda and write, defend and prepare these proposals and technical changes a lot of influence.

secondly, normal politics (as this is politics, not engineering primarily, as for instance now BIP16 and BIP17 are evaluated for implementation and the developers do not agree and seem to have valid points.) 

Although i don't get the impression that the bitcoin developers have dark motives, or don't want the best, i am worried about what is going to happen when the US government starts to try to exert influence over bitcoin. There are already BIP proposals that for instance make it possible for someone to request a payment from a customer, and this greatly reduces anonymity but increases tracability vs. for instance the implementation of zerocoins which would build in automatic mixing and increase anonimity. the US govt, or any government for that matter will use their influence and also power to try to safeguard its (perceived) interests. (i don't know which BIP's these are - but you get the picture)

Actually, if i am not mistaken there is no bitcoin protocol as such, there is just the bitcoin-qt client, a piece of C++ code that is hard to understand (unless you're a C++ programmer) and by the sound of it not unambiguous. This is the protocol, the protocol is written according to how this program works. 

Anybody has any illuminating thoughts or facts on this issue?