Been dealing a little lately with the issue of standards. On one hand I recognize some standards as important and their existence has problably been a critical success factor for free and open source software. POSIX, PNG, Window Manager specification, UTF8, SVG, XML and various hardware standards come to mind as some examples.
The problem with standards is that the standarisation process often brings with it stagnation or that the standard advocates horrible solutions (the horrible solution was the compromise between two good solutions for instance). I think Solaris is an example of how letting yourself get locked down into a gigantic pile of standards and ABI promises in the end becomes more of a problem than a help. Sure if you ask people if ABI stability is important to them they will say yes, but in the end developers tend to value feature additions and improvements in the library they are depending on even more than ABI stability. And the same is true for standards, while everyone would say that being standards compliant is good, they would still choose to use something else if it provides a better experience.
Of course the worst kind of standards is when you create technical workarounds for the lack of standards and then ask people to standarize on those. Been a couple of examples of such I seen recently.
I don’t know how to do good and needed standards while not creating a standards bog, all I know is that I think standards isn’t the solution to all of the worlds problems.
I think it depends on what you want standards for. I value standards which ensure my freedom of choice. If I rely on a piece of software for something critical, and it malfunctions, I either want the ability to fix it myself, or the ability to swap it out for an alternative implementation. In the proprietary software world, having standards is what allows for such interchangeability of implementations. In the Free Software world however, we are generally free to fix problems ourself, so standards may not be of quite such critical importance.
Standards for things such as Binary compatibility are just to save people work having to track a changing ABI. Saving some work isn’t a major concern to me, as worst case you just have to upgrade your code yet again.
The scariest scenario to me is some global standard like HTML being coopted so that it would only work in Internet Explorer, and becoming a defacto standard, eventually resulting in a single company like Microsoft being able to control the direction of the entire basis behind our information society (the web), leaving things like Linux (and my freedom of choice) out in the cold.
You can only standardise sanely when you have a pretty good idea about the field.
For example, SQL was standardised before people understood the relational model for database management. Therefore, it is an unfixable mess which has to be replaced at enormous cost.