A good article about when giving too many options becomes a bad thing:
Most of these options exist for historical reasons — whenever there’s a new feature, it often gets a checkbox to turn it off. The other common case is when a feature isn’t obviously useful to everyone, and it’s hard to make an obvious choice about whether to have it enabled by default or not — so we build in a switch.
I believe we have been subject to this shortcoming on a regular basis with XWiki too. It happens like this:
- Someone wants to rewrite an old feature or add a new one
- Someone else asks: "Shouldn't we keep that old feature available? Should we really ship this new feature?"
- People start arguing endlessly about whether or not the feature is going to be useful, most of the time without looking at any actual data about how the feature actually is being used
- Someone jumps in with a awesome suggestion: "Let's make it optional and provide a setting in the administration / configuration file!"
While this is great for legacy compatibility and ease of customization, it can quickly lead to overly complicated situations: "-The software isn't doing this! -Did you check whether option XXX and YYY were activated? -No, how do I do that? -Well, you just have to go to screen AAA, then update setting BBB...". You get the gist. As evidenced by Barry Schwartz in this TED talk, there is such a thing as giving people too many options to choose from.
It takes determined leadership to stand in, cut the crap and remove what's no longer needed. This kind of approach can be tough to enforce in the context of an Open-Source project. Advocates of democracy, openness and freedom, I hear you. I am sympathetic to your views. They even make logical sense.
The thing is, great design requires that you keep only what is strictly necessary to build something amazing:
Apple wanted so badly to make a stunningly light and thin computer that they ruthlessly chose body design and build precision over lots of USB ports and an optical drive. Those two features are damn useful, and at the time every other computer had them. But they simply couldn’t have made such a slim, lightweight computer without a move the earthcommitment to get rid of everything that got in the way of their goal.
Options give you an easy way out of tricky design decisions. This is why you need to take them out ruthlessly if you're serious about building a great product.