Adam Bosworth, Sloppy KISSes, and WS-Mess

About two months ago, I linked to a tiny little paragraph Adam Bosworth wrote at the end of a completely unrelated weblog entry, where he mentions that he had been trying to justify all of the WS-Complexity when simple XML over HTTP works so well. People have been proposing that simple XML over HTTP hits the 80/20 for awhile and it's beginning to catch on but today might have been a watershed event for the Loyal WS-Opposition. Adam evidently thought about this stuff really hard over the past two months and has just published the transcript of a brilliant talk he gave at ISCOC04 where he emphasizes simplicity and organicness over complexity and cathedral building in the Web Services space. Herewith some notes and speculation on What It All Might Mean.

What makes this talk so special?

This talk is about this conflict as it relates to computing on the Internet. This talk is also a polemic in support of KISS. As such it is unfair, opinionated, and perhaps even unconscionable. Indeed, at times it will verge on a jeremiad.

Well, for starters, Adam is a complete bad-ass as is obvious by his use of words like jeremiad, which turns out to mean exactly the kind of thing bad-asses talk about all the time:

jer-e-mi-ad : A literary work or speech expressing a bitter lament or a righteous prophecy of doom.

But seriously, this eWeek article from July 2004 talks about Bosworth leaving his Chief Architect/SVP of development post at BEA for Google and gives some history behind Bosworth's other adventures in technology. He's been involved--and is often given credit for--the success of many applications and technological achievements over the past decade or so.

The other reason this is an important event for the REST people, and the KISS/YAGNI people in general, is because Bosworth worked primarily on WS technology when he was at BEA. So not only is he a really smart guy in general but his really smart brain has been cranking away on concepts surrounding Web Services for the past couple of years. And now he just casually plops the following out on his weblog:

On the one hand we have RSS 2.0 or Atom. The documents that are based on these formats are growing like a bay weed. Nobody really cares which one is used because they are largely interoperable. Both are essentially lists of links to content with interesting associated metadata. Both enable a model for capturing reputation, filtering, stand-off annotation, and so on. There was an abortive attempt to impose a rich abstract analytic formality on this community under the aegis of RDF and RSS 1.0. It failed. It failed because it was really too abstract, too formal, and altogether too hard to be useful to the shock troops just trying to get the job done. Instead RSS 2.0 and Atom have prevailed and are used these days to put together talk shows and play lists (podcasting) photo albums (Flickr), schedules for events, lists of interesting content, news, shopping specials, and so on. There is a killer app for it, Blogreaders/RSS Viewers. Anyone can play. It is becoming the easy sloppy lingua franca by which information flows over the web. As it flows, it is filtered, aggregated, extended, and even converted, like water flowing from streams to rivers down to great estuaries. It is something one can get directly using a URL over HTTP. It takes one line of code in most languages to fetch it. It is a world that Google and Yahoo are happily adjusting to, as media centric, as malleable, as flexible and chaotic, and as simple and consumer-focused as they are.

On the other hand we have the world of SOAP and WSDL and XML SCHEMA and WS_ROUTING and WS_POLICY and WS_SECURITY and WS_EVENTING and WS_ADDRESSING and WS_RELIABLEMESSAGING and attempts to formalize rich conversation models. Each spec is thicker and far more complex than the initial XML one. It is a world with which the IT departments of the corporations are profoundly comfortable. It appears to represent ironclad control. It appears to be auditable. It appears to be controllable. If the world of RSS is streams and rivers and estuaries, laden with silt picked up along the way, this is a world of Locks, Concrete Channels, Dams and Pure Water Filters. It is a world for experts, arcane, complex, and esoteric. The code written to process these messages is so early bound that it is precompiled from the WSDL's and, as many have found, when it doesn't work, no human can figure out why. The difference between HTTP, with its small number of simple verbs, and this world with its innumerable layers which must be composed together in Byzantine complexity cannot be overstated. It is, in short, a world only IBM and MSFT could love. And they do.

What does that mean? I mean, other than the obvious things he's saying like simple is better than complex. What did he just say in that last sentence? Did he just say that IBM and Microsoft, the two biggest contributors to WS-Madness, stand to gain significantly from making things require complex toolkits as well as certified experts? I think he did.

In fact, that's what really pisses me off more than anything about the whole WS-Situation. I've never really been able to put my finger on it but I think that he just nailed it for me. When the very first SOAP specs were being published five or six years ago, it was extremely simple and light-weight and was more of a concept than a specification. It was all about "hey, why don't you expose that customer record as XML over HTTP and then I don't need access to your database and we won't have to mess with CORBA and," pause/think "well, shit! If we slap some SSL on that pipe we could even do this over the public internet." At some point, the wrong people got involved and turned these simple ideas into another piece of massive complexity and it became a tool for vendor lock-in.

Real quick, I want to make sure I'm not giving the impression that Bosworth was some kind of WS-Nazi and suddenly saw the light in the REST architectural style, joined Google and is now working off the evil points he earned at Microsoft to meet some kind of not-evil quota required by Google; that's not the case. In fact, I believe he was one of the first people to really champion loosely coupled, late bound, message-based SOAP web services as opposed to tightly coupled, early bound, RPC style web services. But today was the first time I've seen him go so far as to state publicly that the WS stack probably isn't going to work in a large number of scenarios.

I think we just need to get more enterprise developers hanging out on the public web and seeing what kind of things are possible with a simple set of semi-standard protocols and formats. Bosworth had to leave BEA (enterprise) for Google (web) before he could recognize and think objectively about the value of simple concepts like REST and loosely specified XML messages.

To rest soap ws coding weblog ... on Fri 11/19/04 at 07:09 AM