mark nottingham

Bees and Ants

Tuesday, 24 June 2003

HTTP APIs

The W3C Semantic Web wiki has an entry called ‘BeesAndAnts’ that very effectively conveys something that I’ve been trying to articulate for a while (and, as usual, failing). It’s not about the Semantic Web in my mind, so much as it’s about REST and Web Services (which means that there’s something to this Web architecture stuff yet, I think).

Many people are approaching Web services as bees; you expose an API, do some dancing and you get interoperability. In my opinion, this is wrong - it doesn’t scale (the most damning and vague of technical criticisms), and it doesn’t provide the ease of use that Web services advertises; it forces everyone to think of the world as behaviours of things that have identity.

Behaviours are, by their nature, hard to characterise; it’s much easier and more concrete to talk about artifacts - i.e., the embodiment of state, with discrete identity. There’s still a need for bee dances (aka HTTP POST), of course, but ignoring the ability to change state in your environment just doesn’t make sense.

I think a large number of Web services people “in the know” are actually quite sympathetic to this approach, and want to design things so that we can leverage the existing Web infrastructure as much as possible. The problem is that many, many people still think of Web services as nothing but “RPC-using-XML-over-HTTP.” And that’s wrong for so many reasons.


2 Comments

Christian Romney said:

Mark, I believe the reason for the RPC mentality is that the REST model is not so easy to understand. All the treatises that deal with it on the web are over the head of 99% of the people who build web services. I read Sam Ruby’s REST+SOAP and it was his guru status that convinced me to look into REST. Of course, you had better have a lot of time on your hands to try and sift through the Doctoral Thesis where REST is defined (by its very nature above the heads of most of us). Couple that with the fact that REST doesn’t specify implementation details, and you have something that is too vague to catch on. What the community needs is two end-to-end web services samples one that are identical in terms of what they do, yet differ only in the style used to build them (REST vs non-REST) along with a guide that says, “See, THIS is a RESTful approach because of THAT”. Also, this should be in a language that is accessible in terms of understandibility. Java and C# come to mind. Python does not. Thoughts?

Tuesday, June 24 2003 at 8:47 AM

Mark Baker said:

Amen, brother Mark.

Tuesday, June 24 2003 at 9:36 AM