Blockchains are distributed systems. They are essentially consensus protocols, which means that different nodes in the network (e.g. computers on the internet) have to be running compatible software.
“Node operators” are the owners and managers of nodes that run the protocol. Most node operators don’t want to write much software, and it’s a technical challenge for anyone to independently write compatible implementations of any consensus protocol even if they have a specification. As a result, node operators rely on software repositories (usually hosted on Microsoft/Github servers) to provide them with the software they choose to run.
“Core developers” of a blockchain are software developers who work on the software that implement that protocol. Developers have processes that are supposed to assure the quality of the software they release, and are generally very interested in maintaining the legitimacy of their software repositories because they want to see people using their software (as opposed to someone else’s).
1. Incentives
Each group in the system has their own incentives. Those incentives are not always 100% aligned with all other groups in the system. Groups will propose changes over time which are advantageous for them. Organisms are biased towards their own survival. This commonly manifests in changes to the reward structure, monetary policy, or balances of power.
2. Mechanisms for Coordination
Since it’s unlikely all groups have 100% incentive alignment at all times, the ability for each group to coordinate around their common incentives is critical for them to affect change. If one group can coordinate better than another, it creates power imbalances in their favor.
In practice, a major factor is how much coordination can be done on-chain vs. off-chain, where on-chain coordination makes coordinating easier. In some new blockchains (such as Tezos or Polkadot), on-chain coordination allows the rules or even the ledger history itself to be changed.