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.
3 comments:
Okay, the first time I read this I confused "standards" with "specifications", and thought: Didn't r0ml say at OSCON a year or two back that specifications are a key component to Open Source, because trying to rebuild an application from source code is neigh-impossible because it's usually a load of buggy incomprehensible crap that's very poor at expressing the problem it's intended to solve? (Considerable paraphrasing going on there, but I believe that was the message.)
But then I looked again, and you can write specifications without going through a "standardization process", so it holds together after all.
This is, in fact, pretty much the strategy we're banking on at work. With all due respect to our colleagues in OASIS and the IETF, we've decided to say to hell with the standards bodies. Yes, we will write a specification, and we'll get input from enough people in the field to be sure our specification something at least a few people think is a good idea, but mostly we'll publish an implementation or five under open source licenses and adoption of that code is going to be what really defines the environment.
now, only a few hours after I post this, who sends messages to our mailing list? Some guy at a w3.org workshop. Go figure.
I think the key point you've made here is that a specification is the description of one system, whereas a standard is a description of the commonalities of many, different systems. It's more useful to have a complete description of one system than an incomplete (and often incorrect!) description of multiple systems.
Post a Comment