A Point of Agreement

Tuesday March 14, 2006
R0ml has been quoted by John Udell as saying that Open Source software can replace standardization. Many of the things I consider blogworthy are distillations of a position in an argument I've had with my father, but on this I think we are in violent agreement. Everybody loves a fight though, so I'll try to state this as antagonistically as possible - arguing against Mr. Udell's commentary. He raises three potential objections, asking if the idea is wrong in principle.

Objection: We don't write programs that way.
Who's "we", kimosabe? Speaking for groups that count me as a member, we do. Apparently some other people do too - David Wheeler claims that there are 30 million lines (more than $1 billion worth) in Red Hat Linux alone.

Objection: Our technology platforms are too balkanized to enable us to collaborate on common implementations.
Maybe Microsoft isn't going to start collaborating on Firefox, but who cares? If you follow the trends that W3Schools sets forth, IE's days are numbered anyway. Apple already uses an open-source browser engine.

Objection: Ditto for our political agendas.
This, I think, is the most telling objection. People who want to produce a good product for their customers will use open-source software and collaborate on its implementation, because that is quickly becoming the industry's best practice for producing high-quality software. People who instead have a strong political agenda, unrelated to the quality of their products, will develop standards bodies and waste their time re-implementing tons of code which is available elsewhere for free.

For an example of technology politicization, SQL is a "standardized" language, whereas PHP, Python, Perl, and Ruby are each open-source with a single implementation. Have you tried to write a whole program in SQL lately? Or even make a generated SQL statement run on more than one database at a time?

There are still some areas where standardization is important - the web comes immediately to mind - but that is only because it is a platform still nominally controlled by entrenched proprietary interests. Imagine, for example, Microsoft were to give up IE tomorrow, and suddenly declare that they were simply packaging Firefox with Vista. What would the point of the W3C be at that point? To broker discussions between Firefox - with 99% market share - and Safari and Opera? It's unlikely. Safari, being open-source itself, can crib freely from Firefox's code where necessary, and Opera is already an also-ran, copying from behavior of the major browsers more than implementing an abstract standard.

While not quite as bad as SQL (it is possible to make pages which render in both Firefox and IE, at least), anyone who has done browser-portability work will tell you that standards aren't all they're cracked up to be in this arena either. On a daily basis I wish that Firefox were the only implementation I had to contend with.

There are more examples of this trend. There is a PNG standard but even Microsoft just uses libpng. Mozilla maintains what I think is the most exhaustive description of the failure of the C++ standardization process - I think it would be hard to argue that things wouldn't be better if the "standard" were in the hands of the GCC team. Jython and JRuby both elegantly prove that you can have implementations that bridge language gaps without a formal standard.

It's not that open source can replace "open" standards and the standardization process. Open source has replaced standardization. We've just been waiting for the world to catch on.