In working on my next book, which has to do with standards and integration, I recently wrote up a little sidebar rant about the state of standards, which I thought I would share….
When talking about the use and adoption of “Standards”, it is really hard to tell these days just exactly what that means anymore. We live in a world where there are multiple overlapping efforts from different standards bodies to define standard specifications. Vendor alliances are producing Web Services specifications outside of the domain of any standards body or consortia.
Every once in a while I will get challenged on referring to the use of a Java specification as a “standard”. The argument being that since the Java Community Process (JCP) is owned by one vendor (Sun Microsystems), the specifications that come out of that process are not really considered “standards”. They are just specifications.
I tend to use the words “standards” and “specifications” interchangeably. As far as I am concerned, any specification that has been through the JCP should be considered standard enough in that it has gone through some sort of formal process where it was jointly defined by a group of independent companies and/or individuals, and was posted for a public review process prior to ratification.
There are “defacto standards” such as open source implementations, many of which invented their own ways of doing things, or that conform to industry accepted “standard” specifications. The Apache SOAP and Apache Axis toolkits are examples of that.
The evolving WS-* stack of specs from the vendor collaborations which usually include Microsoft, IBM, and sometimes BEA should also be considered as “defacto standards” in that they represent the work and statement of direction for a meaningful constituency of the largest platform vendors. Some of these WS-* specifications have been submitted to an official standards body already, and the rest have been part of a program which involves public feedback sessions.
In short – the word “standard”, in the terms of standards based integration, refers to either a specification or an implementation that has gained enough traction in the industry to have long lasting staying power, and is open enough for multiple vendors to be able to implement it or repackage it.