Tuesday, June 01, 2004

Standardization of XML or XMLization of standards and Services

Well the title kind of gives the basic idea behind these thoughts i.e. what are the flood of XML based standards trying to achieve. The way I got initial understanding of the whole set of standard is
  • XML is good (mkay),
  • it is required to interoperate(mkay),
  • previous attempt at making computer talk to each other was bad(mkay)
  • Web Services are good and we can talk to microsoft(mkay)
But looking at it that way does not make a lot of sense to me.

XML is same

XML is NOT the solution to interoperability issue. period!!! As far as I understand the idea of interoperability is to make two machine talk same language and has nothing to do with making the protocol readable to human. The last time I checked my computers were still talking using a wierd language under the hood called binary. So what does XML has to do with interoperability issue and what was missing from DCE and CORBA that would not allow them to solve the issue. Let us look at the whole idea of making computers talk to each other. Most people agree that the computers talk to each other using protocols which is basically a language with its own word set. Now in order to allow two applications running on different machines the following approaches have been tried.
  • Same Code on both machine: which is what DCE tried to achieve. It had its own issue of not being available out-of-box on Mainframes (I remember hearing about DCE version on OS/390 from IBM which was very basic) and Windows. Besides that it was realized that porting the code to different environment itself resulted in a set of interoperability issues.
  • May or may not be same code but a very well defined protocol: Something that was tried with CORBA using binary tags and bunch of standards developed around it. Well implementation issues and associated inter-operability issues made sure the implementation from different vendors could not talk to each other.
So it seems that having standards do not solve the interoperability atleast in software world. Why? One reason could be that open standards are too open and providing a lot of leaverage to software implementations which results in interoperability issues(something that we can see with most of Web Service Standards). Another possible issue that seems to be important is that the standards follow the products and not vice-versa. This means that products come out with new features and then standards try to create specifications for the similar features provided by competing vendors resulting in a standard that is too late to give any incentive to vendors to interoperate. Hence any thoughts of establishing standards for low level product interoperability (like RPC, Message transport protocol) is meaningless. Then what is it that we are looking for in terms of standards that will help us achieve interoperability. We should be looking at Business Service Standards to help us achieve interoperability. This is what we should try to achieve via Service Oriented Architecture otherwise the whole SOA is of no use and will only result in development of another interface in front of business logic besides mainframe console applications, DCE, CORBA, HTML

XML is different

Then why should we bother with XML and the whole Web Service with WS-* and bunch of OASIS standards. Well looking at these pool of standards we have to realize that these are the foundation blocks on which we will be building these Business Service standards and these standards are just means to the end. In that sense we could have used any other low level open standards (like DCE, CORBA or DCOM if it was open). So how is XML different? One thing that we have to realize is that eventhough the interroperability is achieved between the machines, the standards are developed by human. So if you wanted the business groups of companies to get together and chalk out a Business Service standard at a global level, allowing them to define these protocols in human language(like english) would be more appropriate instead of binary tags. This means that the HR managers can get together and defines what are the Business Services they require to be automated, define the format of data that should be send around as protocols and standards. These standards can then be implemented by any product that must provide the corresponding HR Services. So now you do not have to develop the interfaces in-house using Java, .NET and instead you can buy the Business service interface as a commodity which is basically the code to provide interface. This code come with the application servers or as libraries from software companies focused on vertical segments or combination thereof. The developer would be require to write the pure business logic behind the service (which most of the time would already be present). Even though it would be better to have these standards define the aspects of service (like transport layer, Authentication level, Encryption level and so on), I think we may have to evaluate that during implementation and will require the developers to configure these Aspects of the protocol. Even though you can see some of such service standards taking shape on OASIS, I am not sure how much impetus we have from vendors. Most of the time I see them fighting over standards for low level services and not providing enough help to business owners to get to the next steps of standards i.e. business standards. Last week it seems like BEA started something on that front with TMC SOA blue print but I am not sure whether it will go any further until it gets backing from the organization devoted to the Business (like accounting or HR)

Road Ahead

Now given the time it takes to get the basic protocols itself to become standards, any thought of having Services Standards seems far away into the future. I get a feeling that we will loose this battle of standardization again. There is already talks about how XML eats into the CPU cycles and network bandwidth during (de)serialization and transport and how we should go back to good old days of binary protocols. These people have to understand that XML though not the best way to talk between machine, may be the best chance to make humans agree on standards. Also we should begin working on another set of standards on converting XML standards to a protocol that will suite computer more than human i.e. Binarization of XML standards This may be our only chance to get out of the endless technological cycles of standardization and take standards to a logical end. PS: Hmm...a prophetic dooms day ending makes it quite entertaining I hope even though it does not make any sense.

No comments: