Stefan Tilkov's Random Stuff

APP not General Purpose?

Dare Obasanjo believes GData/APP fails as a general purpose editing protocol for the Web and points out three problems:

  1. Mismatch with data models that aren’t microcontent
  2. Lack of support for granular updates to fields of an item
  3. Poor support for hierarchy

Bill de hÓra acknowledges that the third is indeed missing from APP, considers the second problem a general issue with PUT, and disagrees about the first one; but he adds two more problems: update resumption and batch/multi-part uploads.

James Snell considers Dare’s post “silly”. For the first issue, he suggests using a non-Atom resource, an idea that Dare considered and dismissed in his post, claming it would be bad reinvention of WebDAV. For the second issue, he suggests using PATCH + a diff format. The third issue (lack of hierarchy support) is something that he doesn’t see as a problem at all.

Personally, I don’t understand Dare’s WebDAV analogy at all — it seems to question the very foundation of Atom and APP’s design, namely the division into entry resources and media resources. I don’t see many alternatives, unless we come up with the old “let’s stuff everything into an XML envelope” approach, which will lead to utter madness. I’m not at all sure I like the PATCH approach, too — I’m not really keen on having to tunnel even more verbs through POST because they’re not widely supported. The hierarchy issue only is a problem when you need to have everything inline within the feed; I’m not sure how much of a problem it is in practice to use the link approach described by James. (If you’re looking for it, there’s a mad solution in the parallel universe, too.)

Most importantly, though, I think it would be very bad if Microsoft — and I don’t think one should underestimate Dare’s influence in this particular area — chooses to not adopt APP because of some preceived or real technical reasons without trying to resolve them in an APP-compliant way first (i.e. by either finding a workaround, building an extension, or even trying to influence the protocol itself [for which, admittedly, it may be too late now]). As usual, Joe Gregorio makes this point much better than I can.