Back from the W3C Workshop on the Web of Services for Enterprise Computing and I'm only just starting to begin to digest what happened. Here are my take-away themes:
- Interoperability, Interoperability, Interoperability:
- Hugo Haas presenting on behalf of Yahoo! and others made a better fist highlighting BT's main pain points than I did: WS-* is attractive to developers, but doesn't interoperate. Fix that. In particular fix databinding. Better support for WS-Security (WSS) would be nice, in particular surrounding authentication, but for the most part WS-* has gone striving off into la-la-land. YAGNI.
- Uniform Interfaces:
- Mark Baker must feel quite despondent that people still don't get the power and benefits of the uniform interface after six years of trying everything apart from "how to make friends and influence people" ;). He missed a trick not showing his classic protocol independence diagram. Support and new arguments from the likes of Nick Gall and Pete Lacey helped people begin to appreciate POX simply isn't good enough, however I'd include myself in those people who still don't really grok what "hypermedia as the engine of application state" means to a developer writing code to buy stocks, but suspect that there is something profound to learn here. That is to say that this remains either an impedance to most people demanding REST services, or possibly the tipping point in their understanding. Mark Nottingham hinted he was working on a demonstration programming model and I for one can't wait to see that!
- Building for the past:
- My position on behalf of BT was essentially the Enterprise is changing rapidly, at the heart of which is deperimiterisation. It makes no sense to build closed systems for internal consumption, or become bogged down in discussions of 1980s technologies and ideas. But I suspect that was lost on many. It seems like many still want to enshrine old systems in standards. One such proposal cropped up in a paper claiming to be "Poisson" (stochastic, more like :) presented and voiced several times during the meeting, demanded the "establishment of bindings for FTP". Given the venue, I assumed that must be a SOAP 1.2 binding, and a description in WSDL 2.0, but that wasn't at all clear. Over the years I've built a number of libraries for production systems around FTP, FTAM and other file transfer protocols for messaging, for document processing, retail systems and telcoms, the last one transferred 90 gigabytes of BT's billing data each night between 80 different applications. RFC 959 was my bible, Jon Postel and Joyce Reynolds loomed large in my prayers, but in each case the requirements and resulting application protocols used were wildly different. How you'd begin to generalise and standardise such a thing without widespread interest beats the heck out of me. Say such a thing did reach W3C Recommendation in a few years time they'd still have to wait for it to be implemented, apply it to their systems and roll it out to customers. Meanwhile they could have written a few lines of PHP, exposed the service as HTTP and benefitted from widespread support as well as better integrity and compression.
- Context and State:
- I was rather prickly after sitting through Kurt Stam's presentation of Mark Little's paper on how WS-Context is more Web friendly than WS-Addressing and the assumption we all knew and cared about problem they were trying to solve. It was only when Dave Orchard mentioned the forthcoming TAG finding on application state that the penny dropped. I think we missed a trick not discussing this topic more, as it is the perceived requirement for explicitly passing context and maintaining state beyond the URI which differentiates many "enterprise" requirements from bog-standard Web applications. In my experience, state carried outside of the URI and the contents usually falls into the premature optimization bag but YMMV.
- The Elephant not in the Room
- It's funny, but it took until halfway through the second day before Microsoft got more than a passing mention, and that was in a ping-pong between vendors regarding lack of participation in the Databinding Working Group. I can imagine Microsoft saying "we don't need to go to a W3C workshop to talk to our customers" but it did rather come across as a case of "they can't hear you" and what's more, they don't care.
- Theory over Practice:
- Much as I liked the TAG's position paper, I think I'd use it as an example of how many people still think around the art of the possible with the specifications, rather than what is possible with state of the art implementations. WS-* as she is specified is very different to WS-* as she is practiced. In particular Postel's Law trumps all - hint: try using the "required" attribute in your WSDLs. It's one thing to articulate an architecture based around concepts such as HTTP GET of SOAP or SOAP headers which can be ordered, quite another to build working interoperable systems based upon it.
- Past the point of no return:
- More than once we heard the "we've sold this technology to our board, you'd better make it work" plea, something I've been guilty of using myself in the past when banging the table for more testing at the WS-I. But here and now it seems quite inappropriate. I can't help but conclude WS-* has lost the sunk cost dilemma, with a series of seemingly good decisions leading to a bad outcome. As a result we shouldn't all fall into the sunk cost fallacy asking for new features to polish this clart: "we've bet the farm on your three legged nag, let's bet more because it MUST win".
Ken Kaskey and Eric Newcomer did a splendid job of allowing discussion over the course of the two days, but we had too many, too long, presentations. I could (and should have) presented for 10 minutes instead of 20. As a result I felt the wrap up was rushed and unsatisfactory. I wanted to leave with clear table of options for ways forward with votes for, against and "send people", but instead we ended up with a long laundry list and not enough time to prune and process it before being given only two votes. But that's a very minor quibble, really. Whilst things weren't conclusive, they never could be with such a broad subject area, I felt a lot of the right people were in the room, and a lot of points raised to help both camps move forward.
So What's the W3C to make of all this? Simple:
- Please don't form Working Groups for any other WS-* specifications, especially those which challenge Web architecture.
- Make the stuff you have interoperate, a single WS-Core Working Group should help this.
- The Web and Web services are radically different beasts. Let's make that clearer and think about helping people just use the Web for exposing services.
Which was in essence, my position on behalf of BT. Maybe it was I who wasn't listening ;-)
Finally, if you want an insight as to what it's like to be a member of the WS-* standards circus, and think about how this is all going to shake out, then I recommend reading Bob Freund's magnificent late entry paper Current haphazard tessellation amongst standardization bodies is harmful, confusing and employs too many lawyers.