- From: Yaron Goland <yarong@microsoft.com>
- Date: Fri, 16 Oct 1998 01:03:13 -0700
- To: WebDAV WG <w3c-dist-auth@w3.org>
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