One definition of insanity is holding contradictory beliefs without acknowledging the contradiction. Unfortunately, I don’t think we can blame the crazies here. Both of these ideas are too widely accepted. Which one is right?
Or is this a false dichotomy? Is it more like free market capitalism and government regulation, both possible at the same time, both valuable and complementary?
That may work for economics, but it’s not so clear for software, as shown by troubled platform standards like OpenGL and POSIX. I’ve mentioned this to a few friends in the industry, and they’ve generally seen it as a choice between evils, not complementary ideas or mutually exclusive virtues. They were evenly split on the final choice, too, so no help there.
Of course, in practice things are rarely black and white. As the classic joke goes, “Standards are great, there are so many to choose from!” Similarly, most monocultures aren’t actually that homogenous. Right now there are three distinct versions of Windows with significant market share, and that’s before you take into account different service packs, patches, and versions of IE.
Diversity isn’t much better at staying diverse. Evolution and free markets may support diversity, but they strongly favor winners. Mature industries often end up with only three major players with 50%, 35%, and 15% market share each. What’s more, forces such as globalization, network effects, and selection for uniformity can result in a single player dominating heavily. (It’s not even clear that diversity helps security, but that’s a tangent.)
Anyway, enough muddying the water. Can we have the benefits of both standards and diversity? If not, which should we prefer? I don’t know the answer, but I’m definitely curious.