TL;DR: You can’t stop forks. If there is a disenfranchised group out there, they will fork (see ETC). Voting doesn’t change that.
I disagree with @alexvandesande on this topic because I think the only thing that makes crypto-currency governance better than traditional governance systems (e.g., democracy, monarchy, dictatorships, etc.) is the fact that groups of people can split off into separate groups if their belief systems diverge enough. Democracy, monarchy, and even dictatorships would not be that bad if it was reasonably easy for disenfranchised citizens to “fork” (secede). As has recently been seen in Catalonia, and historically all over the world, splitting off when a subgroup becomes disenfranchised is extremely difficult, expensive, and bloody.
IMO, this is exactly why the governance system of Ethereum ultimately boils down to “users decide what client they want to run”. This is similar to groups of citizens (e.g., cities) being able to decide “which government do I want ruling me” and “a new one that we made up” is a reasonable choice.
Alex is correct that there are network effect costs to splitting like this, but that is OK. Having one network to rule them all is a bad thing it turns out. It is why most Americans feel disenfranchised, because there is one government trying to pander to vastly different groups of people. Sure, something like Maker or Augur will need to either pick a chain or run their platform on multiple chains (splitting their user base) or spend significant engineering figuring out how to merge the chains, but that is well worth it IMO if it means that disenfranchised users feel empowered to split off.
One can, of course, argue that doing things like voting prior to implementing something that is likely to cause a split could result in the split not happening at all because the client development teams would (presumably) not write the code in the first place, but that just means you are disenfranchising a different set of people. So you haven’t really “solved forking”, you have just made it so the set of people most capable of winning votes are the set of people who aren’t disenfranchised and the set of people who aren’t becoming disenfranchised.
Ultimately, what we must remember is that the client development teams are not beholden to anyone other then their own corporate structures and they can author whatever code they want, regardless of any sort of voting system. If you try to tell them, “You aren’t allowed to write this code” they will just do it anyway and your governance system will be shown to be pointless in the end.