Michi Henning (who, together with Steve Vinoski, wrote the best book on CORBA there is), weighed in with a comment on my second post about the state of Web services. He hates to say “I told you so”, but feels compelled to anyway ;-). He referenced this post from Brad Wilson, which offered this observation, which Michi made in 1999:
By the time you've made HTTP + XML do all the things developers need for real-life systems, HTTP + XML will be just as complex [as Corba]; it's inevitable. What annoys me is that catch-cry of "look at how easy this is!", with no-one crying "yes, and did you notice how little it can do?"
I guess I really wonder what developers need for real-life systems. I know that in the project I just completed, we needed a simple way to deliver XML from one system to another. We designed the target system to process the XML it receives in an idempotent manner so that work can be repeated in the case of failure (or unacknowledged success). It's a real life system. We got value out of the basics.
Of course not every system is as simple as that, and many real-world systems need more. Unfortunately, we as an industry have this habit of taking simple things that are useful, and, in the name of making them even more useful, add all kinds of stuff that makes them really hard to understand and apply. This happened with CORBA, COM and J2EE, all of which ended up offering way more features than a lot of people never used. That isn't to say that those technologies are no use to people, just that the basic stuff is a lot more useful for most people than the advanced features.
Meanwhile, while people like me were deep into distributed objects, some Web developers were hitting the 80/20 point with XML and HTTP. Predictably, though, once it was widely embraced for it's refreshing simplicitly, people started to point out all the things that were missing and all the things that could be added to make it more useful. Now we seem to be heading into another feature checkbox rase, just like before.
This time, though, there are at least three differences. First, we've seen this happen multiple times with multiple technologies, so we have a chance to recognize what's happening. People are beginning to understand that simplicity is actually a critical feature. Yes, it means that there are somethings you can't do. But it at the same time, there are some that you can, and maybe that's enough. Second, the stack isn't done yet. There are a ton of proposed specifications, but they aren't yet standards. There's still time to shape things into something simple and useful. Third, because we're working with XML, we have a chance to build flexible contracts (think RSS!) than we could with the distributed object technologies, although the tools don't encourage this - in fact they actively discourage it - today.
So I'm still optimistic about this technology. I know from experience that the basic stuff is useful, if you design your interfaces the right way such that you get interop, versioning, etc. I strongly believe that there are pieces of WS-* that are very useful, especially WS-Addressing and some of the WS-Security, etc. stuff. Beyond that I'm less sure. I'm also skeptical about magical tooling and automatic generation of everything, with dynamic configuration based on declarative settings. But I'm far from ready to walk away from the whole thing.
Posted
Oct 01 2004, 05:58 PM
by
tim-ewald