We have that already. It's called mining.
How does mining address particular questions such as "do we want a fork or not?"
A couple of years ago, the network forked quite literally by accident when approximately half of the network was running one version of the core client while the other half was running another. The fork was detected, and within a matter of only a couple hours, the community rallied together to fix the issue. Miners using the "bad" version switched over to the "good" one. Technically, pool operators were largely responsible for the fix as some pools had been running the "bad" version and quickly switched to the "good" one. But individual miners could have opted to switch pools (or mine solo) if they didn't agree with the decision.
To directly answer your question, any coder can alter the software to come up with a new version of the core client. After that, it simply depends on whether enough miners prefer the new version. If a majority of the network switches to the new version, the network will fork.
Interesting. Very well explained too.