Michi Henning weighs in...

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

Comments

XML Eye for the Object Guy wrote re: More on REST
on 10-01-2004 3:59 PM
Michi Henning wrote re: Michi Henning weighs in...
on 10-01-2004 5:12 PM
I'd like to chime in here with a perspective that comes from nearly 25 years as a programmer and designer.

Most things start out simple. That's because most ideas, at least at their core, are simple. For example, someone comes up with the idea of doing a file transfer protocol: "All we really need is a server that has a stash of files, and a client that asks for one of those files, and then we open a TCP/IP connection to transfer the file." That's what's at the core of ftp, and it is just one example of many ideas in computing that start out with a simple requirement, an idea to meet the requirement, and basic approach to solving the problem.

CORBA, web services, or any other kind of middleware come from a similarly basic idea: "All we need is a server that can accept a remote procedure call with its parameters, and return a reply with the results."

So, why is it that CORBA, DCOM, WS, etc. have turned out to be so complex? I can see several reasons:

- The basic idea is often not sufficient to really solve the real-world problem. In case of ftp, complexity is introduced by the need to make the protocol work through client-side firewalls that don't permit incoming connections, the desire to restart failed transfers where they failed instead of retransmitting the entire file, the need for authentication, etc. In case of CORBA, complexity is introduced by issues such as partial failure, guaranteeing at-most-once semantics, the need for location transparency, etc.

In other words, there are legitimate requirements that must be addressed in order to make the solution work in practice. The additional requirements add extra complexity.

- Design by committee (and even design without committee) often leads to features that would better be left out. In case of CORBA, the specification is full of things that are useless and don't contribute any function points to the overall platform, simply because someone said "Wouldn't it be nice if it could do X..." The extra features add complexity at two levels:

- in the implementation, because it requires more code, more APIs, more complex protocols, or more complex <you name it> to support the feature,

- in the APIs, because extra features require more complex APIs,

- in the architecture, because features rarely stand in isolation and often interact with each other semantically, adding yet more complexity.

The third point is particularly important because it means that the increase in complexity of the system for n features that each add m units of complexity is not n x m, but is determined by some higher-order function. (I could cite numerous examples in CORBA where a feature in one part of the platform interacts in surprising and very complex ways with a seemingly unrelated feature in a completely different part of the platform.)

- Political consideration often dominate the agenda, rather than technical ones. Certainly, in the OMG, many decisions are made on grounds of maneuvering for market share, playing dominance games, kow-towing to a particular customer, or through sheer ignorance and bloody-mindedness. The technical results of this are not pretty at best and downright abominable at worst.

- Finally and, in my opinion, most importantly, design failures cause complexity to rise far quicker than what would ordinarily be expected by the addition of a particular feature. What I mean by that is bad design, pure and simple. The computing world is full of design ideas that are poorly executed and result in a mess of APIs that are complex, slow, error-prone.

This final point is what so often spells the downfall of a technology (and, in the case of middleware, so far, has spelled the downfall of DCE, CORBA, and DCOM, and (this is my personal prediction) will spell the downfall of web services. In CORBA, the design mess, more than anything else, has completely destroyed the functionality that people were initially trying to provide. Examples are numerous: the messed-up protocol design, the insanely complex interfaces to the trading service with their botched semantics, the complexity of the C++ mapping, the complexity of the POA API, etc, etc.

Personally, I'm convinced that the complexity beast can be tamed. What it takes is clean design, clean and orthogonal abstractions, the ability to say "no" to a feature, a clear vision of what a system is meant to do and not meant to do, and the ability to leave power games aside. Unfortunately, it takes experience (and lots of it) to arrive at the necessary clarity. As is so often the case, the third or fourth system that we come up with is the one that gets it right, and the previous ones we built simply so that we could learn from our mistakes. It is unfortunate that we are in an industry where the customers bear the brunt of that learning curve...

I don't want to push my own barrow too much here, but people might be interested in Ice (www.zero.com). It's a CORBA-like middleware platform that is faster, simpler, more fully-featured, and much easier to use than CORBA. The reason for this isn't that the people who built Ice are so much more brilliant than the rest, but that more than ten years of experience and hard-learned lessons have gone into Ice, coupled with a focus on design goals and architectural integrity.

I also find it interesting that most (if not all) truly brilliant systems in computing seem to have been implemented by a small number of people who had vision, excelled in their area of expertise, and had the stamina to see an idea through without losing integrity along the way. In comparison, I can't think of anything brilliant that came from a large number of people, whether they were part of a large development team, an international consortium, or even a large open source effort. (All the brilliant bits of open source that have large numbers of contributors still seem to be controlled by a small group of true experts who say "yay" or "nay".)

I guess the above is a long way of saying that a poorly-design system will inevitably fail, that it takes time to come up with the right design (and execution of that design), and that people often cannot detach their emotions and ego sufficiently from their work.

Cheers,

Michi.
mearls@hotmail.com (Michael Earls) wrote RE: Michi Henning weighs in...
on 10-01-2004 11:30 PM
I'm betting on WS-Security, WS-Policy, WS-Addressing (when will we see more intermedaries? - Is this a hardware opportunity?), WS-Transfer, and a Pipeline/Filter bus.

Doesn't seem all that complicated to me. Nope, it's definitely not CORBA.
Don Box's Spoutlet wrote Tim and Michi
on 10-01-2004 11:50 PM
Adrian Tawse wrote re: Michi Henning weighs in...
on 12-06-2007 9:38 AM
Rather late to the party but go see www.connectivelogic.co.uk

Add a Comment

(required)  
(optional)
(required)  
Remember Me?