Wednesday, January 19, 2005

Interoperability of Web Services transactions

I mentioned the other day that I'm at the Web Services Transaction interoperability workshop here in Raleigh. We were at the first of these workshops back in April when we went over the various specifications to try to enhance them to improve interoperability. 9 months later, we're actually trying to make our product work with other implementations. Pretty cool, but also a very intense few days.

Unfortunately in order to attend we had to sign a fairly restrictive agreement that basically says we can't give much information about what happened. So I'm not even sure whether I can even say who was there beyond the usual suspects. But with that restriction in mind, I'll try to give an overview of what happened.

First of all, I had intended to post something before and during the actual event. However, it turned out to be way too busy. There were almost a half dozen different companies represented with nearly two dozen test scenarios! I talked to my friend Jorgen who was there with the Microsoft contingent and he said this was the most scenarios of any interoperability workshop: he should know, as it's his job to attend them all! Then each scenario has two possible actors: the initiator (basically who is the transaction coordinator) and the participant (who's being driven by the coordinator according to the specific protocol). So you can imagine the test matrix was pretty big - at a minimum we had to take part in nearly 300 tests!

Whoever thought that we could do this in two days needs their head examining. No individual specification, whether it's Web Services, CORBA, IETF or whatever, is ever going to be so carefully written that there's no scope for confusion or misinterpretation. Throw into that the fact that the transactions specifications build on the WS-Coordination specification and they all use WS-Addressing and that transaction protocols are inherently complex things to understand let alone implement, and you've got a potential state explosion for getting things wrong. So I'm actually pretty impressed by all the attendees that it worked out so well. Of course there were some hiccups, but everyone seemed to go into it with an open mind to just "get the job done" and I think we did. In fact, now that it's over and I look back, I'm really surprised by the lack of significant implementation and/or specification problems.

As I've said before, Web Services are as much about interoperability as they are about building internet-scale applications. However, that doesn't mean that a Web Services specification is inherently interoperable. So, something like these workshops, or the ones we did for WS-Context are necessary. I think other standards bodies such as the OMG could benefit from this approach.

So we spent two intensive days going round each scenario testing and being tested, updating and forcing updates and ultimately clarifying the specifications and agreeing on what interpretations made sense. I had some great help from back in our office, despite the timezone difference. A collective pat on the back!

The place this all happened was really nice. It has food of one sort or another constantly available, with drinks throughout the corridors. The perfect finishing touch came at about 2pm when they opened a sweet (candy for the Americans amongst you) "bar": a long table with different types of sweet-stuff. My dentist isn't going to be happy when I see him next, but when the going got tough, it was the gummi-bears and coke that kept me going!

Well I've been up at 4am every day since I got here (and 4am when I travelled here), so it's time to catch up on some sleep. Then it's a flight back home, assuming I don't get snowed in!

No comments: