Next message: Clemm, Geoff: "RE: Revision of a stable-URL versioned resource"
Message-ID: <65B141FB11CCD211825700A0C9D609BC025FA320@chef.lex.rational.com>
From: "Clemm, Geoff" <gclemm@Rational.Com>
To: ietf-dav-versioning@w3.org
Date: Thu, 6 Apr 2000 00:33:41 -0400 
Subject: RE: Stable URLs
	From: Tim Ellison/OTT/OTI [mailto:Tim_Ellison@oti.com]
	       (4) There is no visible 'meta' area of a server URL
namespace.  The
	   stable URL space is the exclusive domain of the server.
	Adding a header that says "switch to a completely different
namespace"
	is pretty drastic.  In particular, why not just use existing
namespace
	functionality, namely, let the server allocate a meta area of the
	server URL namespace, or let the server introduce a "metadata
virtual
	host"?  What does the separate namespace buy you that makes up for
the
	cost of needing these "stable" flags in the Workspace and
	Revision-Selector headers.
	<tim/> This came from the requirement to not have any part of the
user's
	URL space hijacked by the server for storing metadata.  I remember
previous
	long discussions about this.
	It buys you the ability to say to clients 'no part of the namespace
is out
	of bounds to you'.
A problem with saying that the stable URL is only usable with a special
header is that it makes it unusable by a versioning unaware clients.
Since this was the use case that most concerned JimW, I doubt he would
find this approach satisfactory.
Wouldn't the use of "virtual hosts" suffice for those servers
that wish to give a client complete control of the namespace at a
particular host?
For example, a server could store the stable URL's for a host named
"my.foo.com" at a virtual host named "metadata.my.foo.com". 
	   - Methods have the same effect if applied to a resource via its
dynamic
	or
	   stable URL.
	I don't agree with the last axiom.  There will be some methods (such
as
	MOVE) which will fail for a stable URL but succeed for a dynamic
URL.
	There are other methods (such as depth:infinity PROPFIND) that will
have
	a different effect in stable and dynamic URL space.
	<tim/>Methods such as MOVE would allow the source to be given as a
stable
	URL, I agree that the destination may not be stable.
	I don't see why depth:infinity would have a different effect, since
it
	means go to the (collection) resource with the given stable URL,
then
	follow its members deep.  How you got to the resource is immaterial.
A MOVE has to take the resource out of the current collection and add it to
the Destination collection.  The key semantic of a stable URL is that any
MOVE on that URL will fail.  Whether or not the Destination is stable is not
the issue.
As for depth:infinity, suppose you applied the PROPFIND to a revision of
a versioned collection.  In dynamic space, it will return you whatever 
resources are currently selected by the workspace as members of that
revision.
In stable space, it returns the set of versioned resources bound into that
collection revision.  My point is just that the effect of a method on a
stable URL to a resource can be different from the effect of a method on a
dynamic URL to that same resource.
	If you make the stable namespace a consistent WebDAV namespace, then
	PROPFIND will return reasonable member names which will give you the
	information you want ... why didn't you want the stable namespace to
	be a consistent WebDAV namespace?
	<tim/>How will the client/server know which parts of the URL are
stable,
	and which are not?
The server certainly knows what parts of the namespace are stable ... it
just
picks certain URL's and says "everything under this URL is stable".  I'm not
sure what scenarios require a client to know what parts of the namespace are
stable, but there probably are some.  Probably the most natural thing to do
is
to have the DAV:default-workspace report return a special value when applied
to stable namespace.
	<tim/>     http://foo.com/RID:9/REV:12/bar
	is this a RID:9 member in collection '/' or the start of a stable
URL?
	is REV:12 a member of the revision selected for the (collection)
resource
	'/RID:9/' or a continuation of the stable URL?
	Making the name a consistent namespace means that the client can
	'interpret' or 'decode' the resource URN -- I don't think this makes
sense.
I maintain that there should be collections in the stable namespace.  In
particular,
the spec currently states that there can be specific collections in the
stable namespace
in which servers may require that all versioning metadata (such as
activities and
baselines) be placed.  So in your example, suppose /RID:9 is a stable URL.
For there
to be a resource /RID:9/REV:12, /RID:9 MUST identify a collection.
Similarly, for
/RID:9/REV:12/bar to identify a resource, /RID:9/REV:12 MUST identify a
collection.
Now if you want the binding name to contain a "/", you just encode it with
standard
URL escaping mechanisms.
So the bottom line is that I agree with most of your description, except for
requiring
a special header be used to access stable URL's, and that the effect of a
method on
a stable URL to a resource will always be the same as the operation on a
dynamic URL
to a resource. 
Cheers,
Geoff