George Santayana, a notable philosopher, coined the phrase, "Those who do not learn from history are doomed to repeat it." A study of the history of the CORBA standard reveals that for WebService standards, history is again repeating itself.
William Grosso has put together a presentation about the history of the CORBA standard. The presentation focuses on the social and environmental factors that lead to the development of the CORBA standard. There are a lot of parallels in CORBA's history and the emerging web services standards.
CORBA defined in 1989, however vision based on the world of 1985. A world were PCs were just starting to emerge, businesses had dedicated machines with dedicated applications and the corporate network was still being built. The presentation explains that CORBA had several high points:
Standardized Language Mappings
Very Efficient Protocol
Key Services Defined Early
Strong Support for Server Developers
However, Grosso says by the mid 1990s, CORBA hype had outgrown the original ambitions and CORBA proponents were claiming amazing things. He then highlights the low points of CORBA:
Interoperability Took Too Long
Specifications evolved slowly
Reliance on Fat Clients
Lowest Common Denominator Technology
Using IDL Too Complicated
Brittle Design Methodologies
Very little support for Application Lifecycle
No Support for Network Failures
If you look at this list, every one of them, except perhaps one, applies to Web Service standards. That leads me to a grim conclusion, for web services, we are doomed to repeat the failures of the past.
Why do standards evolve in this way? Is there something fundamentally wrong in the way we create standards? Jim Waldo has a few keen insights on this matter. One of his main points:
A standards body is often a lousy place in which to invent a technology.
Waldo explains that there may be substantial discussion of technical merit in standard groups but he says that its really lip service. I also think that standards groups tend to choose the lowest common denominator of innovation. That is, standards groups tend to only approve innovation that they all collectively grasp, however in most cases innovation tends to be grasped only by a few.
Another problem is that standards groups tend to create documentation rather than implementation. That is a fatal flaw which I explored in "Be Liberal in What You Accept, Conservative in What You Send". The lack of a standard compliant implementation undermines interoperability, the core essence of standardization.
It's interesting that standards groups give the participants an illusion of choice. Unfortunately, history clearly shows that their fate is preordained. I guess George Santayana, was right when he coined the phrase, "Those who do not learn from history are doomed to repeat it."
It's been said several times in the Test Driven Development and Extreme Programming community that the best "standard" would be created test-first, and that the text of the standard should include the automated unit tests and / or automated acceptance tests....
Does anyone remember NeXT's "Distributed Objects"? I'm told that system was very useful, but it was never made a standard; and it was only defined for Objective C with DO support.