A WebDAV Bed Time Story

Read at your own risk, it is past 1:00 am, my power is out at home so I am
at work and really tired.
				Yaron

		WebDAV and the Birth of Properties

Like any bed time story this story has been greatly simplified but the basic
ideas are there.

In the beginning there was meta-data.

Then there was WebDAV and WebDAV wanted meta-data. So WebDAV said "Let there
be pointers on resources and let those pointers point to other resources and
let the pointer names indicate the nature of their relationship." Thus
meta-data became first class objects and wondrous things became possible.

Then came the truly great gods of deployed systems and they were displeased
and declared in a grand and fearsome voice "What are you nuts? My perf will
suck HARD. Every time I want to get a **D*#$&#@$*@# piece of meta-data I
have to do TWO requests. First I have to request the damn pointer value and
then I have to request the value being pointed to."

WebDAV, being young and intensely naive thought it had a brilliant solution
"We will create structured URLs from the arbitrary name of the resource and
using some special delimiter you can directly reference a property resource,
thus skipping having to de-reference the pointer." WebDAV had entered the
first level of HTTP Nirvana.

But then the powerful deity of URLs, The Masinter, appeared and his wraith
was terrible. "URL Munging will not be tolerated, try again" he roared.

WebDAV, still weak in the ways of HTTP, invented a whole series of HTTP
methods which skipped the de-referencing step. One could perform a variant
of GET/PUT/DELETE/COPY/MOVE with a magic header that said "Execute this
method on the URI referenced by the pointer with the following name."
Thankfully the WebDAV, not being hopelessly stupid, realized that the
complications of this system in terms of specifying it, implementing it,
proxying, securing it, etc. were so unbelievably complex that even if two
interoperable implementations were ever created the protocol would be too
hopelessly convoluted to extend later.

WebDAV then invented a structured data syntax to be used in place of the
pointers. Let the structured data have URIs and let each element of the
structured value be individually named with a URI. So were hierarchical
properties born. One could address a property in a single step if one was
willing to be limited to get/set functionality or one could treat a property
or any of its sub-parts as a resource and modify it directly if one was
willing to discover the URI for the property and then de-reference it. Truly
this was a great system, allowing properties to be first class resources but
also to be efficient. However there was a cost for these wonders, it would
not be possible to have multiple properties with the same name for they
would collide in the URI namespace and would complicate the protocol to no
end by requiring various commands to control ordering. WebDAV declared that
each resource may have but one of a particular property and multi-values
could be expressed as structures inside the single instance of the property.

The wondrous lords of deployed systems were again displeased "I see you are
still clueless" they growled "Do you have any idea how expensive it is to
grab a URL, figure out it isn't for a file but really for a property and
then process it? While I'm at it, most of my SQL databases can't do sparse
nested tables worth a damn, that is, if I even have a SQL database which
none of my OS's do. So trying to query for individual parts of the value
will screw my perf to hell."

WebDAV, having grown wise in the ways of "ship now or be irrelevant" agreed
to remove all save the get/set functionality, naming those PROPFIND and
PROPPATCH. It agreed to not even provide for partial updating of property
values but rather required full replacement. 

WebDAV knew that one day URIs for properties and their sub-elements would
return, when the need was great enough.

So WebDAV, like all good standards before it, went happily into the bed
marked "Proposed Standard" and left the complicated issues it side stepped
in order to get consensus to its progeny who would think WebDAV, like all
children of their parents, a complete moron who if it had only known better
wouldn't have created such a crappy standard. But WebDAV, like all good
parents, looked lovingly on its children and hoped its efforts will provide
its children with a better world than it had.

The End

Received on Friday, 16 October 1998 04:03:14 UTC