This is possibly the most overused saying in the open source world. The idea is that if you don’t like a certain piece of software, there must be a shitload of other options for you. You don’t have to accept any design decisions, you must not believe in unification and consistency, you don’t have to settle with customizations, nope… you gotta have other options, err, choices.
The problem with this approach is that it completely eliminates the possibility of forming a stable base which you could build upon. Instead, you end up having a mind-blowing amount of duplication of efforts, thousands of people reinventing the wheel constantly. Speaking of Linux, you have a load of display managers, a load of sound subsystems, a load of GUI toolkits, a load of package formats, recently even a load of display servers, and of course a bazillion distros.
And you know, that must be good, you can have options, you can pick whatever you want, right?
No. It causes a great level of fragmentation, which is an enormous pain in the ass as a developer. It makes testing next to impossible and causes a huge overhead. And everytime 2 developers implement the same thing in a different software, they’re wasting precious time. One could work on feature A, while the other one could do something else. Given the fact that there are several thousand distros, that’s already a big waste of time at the magnitude of 1000, and I didn’t even talk about the software itself. Imagine, just for a brief moment, what they could possibly achieve if they could agree upon the direction for once!
But this is just the technical side. The other problem is even more grave. When a developer forks something, that’s the birth of another duplicated effort. Novice users tend to applause, because, you know, that will result in a new choice. A fork is usually born because the promoter believes they’ll make things better, they want to make something big, or something radically different.
Let me tell you, for the most part, this is dense bullshit at its finest. In most cases, the fork is not about the leader being so awesomely ambitious, talented or full of ideas, Hell no. It’s because of the “I know best” approach. It’s because the guy (or gal) can’t accept a decision, a refusal from a lead developer. It’s because of the complete inability (and unwillingness) to cooperate. And when they put all this behind the “freedom of choice” buzzword, it gets even more ridiculous.
So now take this developer filled with aggression and resentfulness. Do you really think this will be the beginning of something awesome? No, of course not. A big number of forks end up being dead in the water after the initial enthusiasm ran dry. When they realize it takes so much more to get acclaimed and applauded than talking shit all the time. When they realize now it’s them being criticized all the time by other “I know best” guys about any decisions they make.
So, after all, these “more choices” zealots really need to realize that “more choices” may be useful sometimes, but it’s definitely not necessarily and by nature a good thing.