Stefan Tilkov thoughtfully responded to my “Building the Web with Web services” blog. Here are some of his comments.

In response to my assertion that documents/state don’t ask anything of anyone, he writes;

Er … well, I think I can see the point, but I can’t really make sense of the examples. So, a purchase order isn’t asking anything from anyone? That can’t be true – so obviously, these are counter examples – a purchase order is asking something. Looking at the paragraph, even for some length of time, I have problems finding out what exactly Mark is getting at – I fail to see the similarity between a pure piece of data like current time and a very concrete, business level document like purchase order. Arguably, it’s just not phrased very clearly, or maybe it’s because I’m not a native English speaker.

A purchase order isn’t asking anything of anyone; it’s just capturing the state of some order. It can be used to ask something of somebody. For example, I could give it to a skywriter, and they could write the XML out in smoke overhead. Or I could give it to an archiving service which promises to keep a copy around for some period of time. Or, I could give it to a purchasing department with the intent that they fulfill the order. But all those actions are where I’m asking somebody to do something. What would you do if you found a paper purchase order lying in the street? Do you know the intent of its author? No.

He also added this;

While Mark obviously was thinking of content negotiation, support for Expired headers and so on, he doesn’t talk about it at all. How is anybody supposed to make sense of that?

I quite intentionally (though I slipped some in at the last minute, sigh) tried to avoid mentioning Web terms where I could, and just talk about the general approach. I did this because in my experience, once you start using Web terms, people automatically import their preconceived views of the Web … which is what I’m trying to fix.

And then this;

OK, I’m a bit puzzled by now, but surely things are going to be clarified in the next few sections. (Seriously, that’s what I thought when I first read the article). Imagine my surprise when I saw that the next paragraph’s title is Conclusions:

Well, that’s all there is! 8-) The intent of the essay was to describe how the Web relates to document style Web services; that if you add identification of the things whose state is represented by those documents, make semantics uniform and explicit on the wire in the form of an application protocol, and dereferencing of identifiers to request a document, that you’ve got the Web.

Thanks for the constructive comments, Stefan. I know how easy it is to get all kneejerky on this. It just seems that the industry is SO close to finally understanding the Web, that I feel an obligation to jump up and down and yell “Yo, over here, we’ve already got one of those!”.

Service Data Objects. Oh my.

Here’s some snippets from a whitepaper;

The core SDO specification provides the base APIs that are applicable to all types of data sources

That’s the definition of uniform!!

The SDO architecture is based upon the concept of disconnected data graphs. Under the disconnected data graphs pattern, a client retrieves a data graph (i.e., a collection of tree-structured or graph-structured data) from a data source, mutates the data graph, and can then apply the data graph changes back to the data source. Most commonly, the update is performed with optimistic concurrency semantics, which means that if any of the underlying data was changed before the client applies the changes, the update is rejected and the application must take corrective action. Optimistic concurrency semantics is a natural semantic that serves most business applications well.

“Disconnected data graphs”? You mean like the Web? 8-). And optimistic concurrency? Who knew?.

Ok, come on now, this is just getting silly. A Java API for all this stuff is nice, but we’ve got Servlets, and it’s not nearly as complex as SDO. Compare and contrast DataObject (grr, no direct URI) to HttpServlet; the former is just missing the equivalent of POST (which would make it useful for operating on more than just data), but consider that doGet/GET on a servlet is equivalent to requesting that the state of a DataObject be serialized via Java serialization.

What am I missing? Why can nobody see this?

Via David Forslund, a pointer to a set of workflow patterns.

Good stuff. I’ve been contemplating updating my Hypermedia Workflow paper, and this would be a good base from which to restructure it.

I also just stumbled across a paper entitled “Workflow Description for Open Hypermedia Systems” which sounded intriguing, but was I ever disappointed to read it; it just talks about Web services and WSFL. It seems academia is making the same mistakes as industry. 8-(

On my O’Reilly weblog. If this doesn’t convince you, I don’t know what will.

Norm lists the countries he’s visited.

I’ve wanted to put together a similar list of my own for a little while, since I stumbled upon a list (wow!) put together by Paul Cotton‘s daughter Cecilia earlier this year.

Here’s mine. That’s 22 I’ve slept in, and 26 I’ve been too. Not too bad. But I really need to spend more time outside of Europe and Scandanavia.

Tim relays some news from Jean Paoli, that in addition to releasing the schemas for the Office formats, documentation will be released too. He writes;

In general, I think that this kind of tech doc is an order of magnitude more important than schemas,[…]

Big +1

Until last week, the SOAP document/literal examples I’d seen differed from the rpc/encoded ones only by the encoding. Then I spotted this example (in section 5.1 – sorry, no URI) in the WSDL 2.0 Primer;

<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
 <env:Body>
	<customerName>Kevin Liu</customerName>
	<checkInDate>2002-09-01</checkInDate>
	<checkOutDate>2002-09-10</checkOutDate>
	<roomType>double</roomType>
	<comments>the customer will be arriving late in the evening</comments>
 </env:Body>
</env:Envelope>

Ignoring the problem that there’s not a single child element of env:Body, this is, from a Web architecture POV, quite encouraging; we have a SOAP envelope encapsulating state. Very RESTful (at least the part of the architecture that is visible in that example).

But if you know where (how?) to look, the Web is nearby. The key is to realize, once you’re dealing in state, that the obvious next question is, “The state of what?”

Can this be it? I think I’ve just found the key to describing the relationship between the Web and document-style Web services. Cross your fingers. If all goes as planned, the next few weeks are going to be very exciting.

Scoble writes;

I’m watching 636 sites every day. Try to do THAT in your Web browser.

Which way would you prefer?

And not to mention that “not using the browser” is different than “not using the Web”. How did you get that RSS? Uh huh, I thought so. 8-)

As an interesting addendum to the Eolas debacle, did you realize that Mike Doyle from Eolas flaunted their acquisition of the UC patent on www-talk? ’nuff said.