Developers and miners are both replaceable. In either case, they can be “fired” by users. Bitcoin is more of a series of kingdoms, with each user the king of his domain. These kingdoms can decide to work together or not (usually peace and working together is best!). Developers are more of diplomats — allowing the kingdoms to interact peacefully and set the rules of trade. Miners are the mercenaries who provide the security, but also are easily replaced if they fail to live up to their job or attack the kingdoms.
Preventing chain splits is easy — make features optional and opt-in, and don’t require users or miners to implement them. Everyone has an incentive to stay together. The only contention can occur in these cases from troublemakers seeking to cause a disruption. These troublemakers should be ignored or removed (if possible). The only way a UASF fails is if the network is under direct attack, in which case. Bitcoin WILL be under attack (if it isn’t already), and building up an immunity to attacks will make it stronger to resist future attacks.