Tim’s recent post called “I want RelaxNG” has given me something interesting to think about it. He has grown to dislike XSD and favors RelaxNG for most of what he needs to do today. It seems more people are coming to the conclusion that RelaxNG is technically superior to XSD. So Tim asks the question:
What is stopping us from making this change (to use RelaxNG)? There will never be fewer Web services then there are today.
So I’ve been asking myself, is it conceivable that such a change could be made? This would mean convincing enough developers of its purported superiority, gaining enough mindshare to influence vendors. It would mean vendors moving to RelaxNG in their infrastructure/products, hopefully at the same time. It would require trying to maintain interoperability during the transition away from XSD, possibly forcing vendors to support both languages for the rest of time. The way I see it, the answer is:
No.
There’s no way. This has nothing to do with technical merit and everything to do with momentum, money, politics and consensus. We’re simply too committed to XSD as an industry to move away from it in any substantial way. Although I don’t know a lot about RelaxNG, I seriously doubt it’s compelling enough to influence such a change.
I remember in the early days of XML 1.0 there were many developers and organizations shouting about its technical flaws and inadequacies. Numerous proposals were made for superior and more elegant languages. No one talks about that stuff anymore. They moved on. They got over it. They eventually realized that consensus was more important than their technical issues. People realized that XML 1.0 was “good enough”.
It’s been the consensus around XML 1.0 that has caused such a major revolution in distributed computing, not its technical superiority to prior technologies. Consensus is extremely difficult to achieve in our industry. It’s nearly impossible to get a group of developers, from different backgrounds, to agree on anything. It takes a lot of time and compromise. And the more people involved, the harder it is to produce something of quality that makes everyone happy. Someone once said:
“Only a standards body can produce something that’s dumber than any of its members.”
I’m sure if you approached people on the WG, they could quickly iterate through all of its weaknesses and flaws. It’s basically the “too many cooks spoil the pot” phenomenon.
And so it was with XSD. The WG was huge, numerous companies with different agendas. They produced something big and complex that doesn’t meet anyone’s needs perfectly but perhaps everyone’s needs adequately.
In my opinion, one of the best XML specifications ever written was XPath 1.0. The original draft was written by a single person, James Clark, who interestingly is one of the two editors listed on the RelaxNG spec. The original draft was produced quickly and elegantly.
By just one guy.
RelaxNG enjoys similar benefits. The OASIS TC only consisted of 8 people, all of whom are scary-smart in XML terms. As a result, it’s surely a better spec technically.
However, a better spec != consensus. This has been proven over and over again throughout recent history, especially since the advent of the Internet, the Web, and all the technologies that make it work. For example, how technically brilliant is HTTP? HTTP illustrates that consensus is a powerful thing and something that cannot be taken for granted. Look how much business has been built on the back of HTTP today.
Achieving consensus is terribly complex. It involves mostly non-technical issues, plenty of (albeit veiled) politics and negotiations. It requires mindshare amongst developers and commitments from vendors. To summarize: it’s hard, hard, hard.
So the consensus we are currently enjoying around XSD cannot be dismissed, even if it suffers from some technical weaknesses. Vendors, enterprises, and developers have invested a tremendous amount of time and money in the current WS stack (which includes XSD) and most have yet to realize the full WS dream. I doubt many will even raise a brow to RelaxNG until they start seeing a return on their initial investments. Like we did with XML 1.0, we must move on.
Like Tim said, “there will never be fewer Web services then there are today.” But if we don’t compromise and get on with it, there may never be more than today either. ;-)
Posted
Aug 19 2004, 10:13 AM
by
Aaron Skonnard