Re: Versioning spec review - 02.3

Geoffrey M. Clemm (geoffrey.clemm@rational.com)
Mon, 25 Oct 1999 18:31:53 -0400


Date: Mon, 25 Oct 1999 18:31:53 -0400
Message-Id: <9910252231.AA24983@tantalum>
From: "Geoffrey M. Clemm" <geoffrey.clemm@rational.com>
To: ietf-dav-versioning@w3.org
In-Reply-To: <F3B2A0DB2FC1D211A511006097FFDDF53438BD@BEAVMAIL> (message from
Subject: Re: Versioning spec review - 02.3

   From: Bradley Sergeant <Bradley.Sergeant@merant.com>

   QUESTIONS: Given the URIs for a versioned resource and a workspace how does
   one obtain the URI of the associated working resource. Rather than the
   revision maintaining a list of working-resources you have it maintain the
   associated workspaces instead (DAV:workspaces).  This seems to make it much
   more difficult to get at the working resources of a particular revision.
   What's the reason for the indirection?

The intent was to not force an implementor to have a URL that would
identify a working resource.  This was not thought to be a problem,
since users will be referring to working resources with user-meaningful
URL's and a workspace header, not by some obscure server-generated
URL.  On the other hand, a DAV:working-resources property for a
workspace does give the client a convenient way of getting a report
on *all* working resources in a workspace.  So you'll find that the
most recent spec has added the DAV:working-resources property to
a workspace.  Does anybody have a problem with this?

The omission of DAV:working-resources from a revision was for
a more significant reason, namely to allow workspaces to exist
on different servers from the repositories containing the
versioned resources.  I think this will be very important,
and since cross server bindings are unlikely to be implemented,
I've tried to avoid having any collections where the member
of the collection is likely to be on a different server from
the collection.

   6.1 Marshalling.  The Request-URI specifies the specific revision or the
   versioned resource to be checked out.
   6.2 Marshalling.  The Request-URI specifies the specific working resource or
   the versioned resource to be checked in.
   In either case if the Request-URI specifies a versioned resource the
   Target-Selector (or lack there of) will be determine the revision/working
   resource to act upon.

That makes sense.  Does anybody have a problem with this?

   QUESTION: So the current spec now says that you don't choose to make
   individual revisions mutable or not?  The server is simply at liberty to
   allow overwrites of any revisions or to disallow overwrite of any revisions
   as it sees fit (i.e. no per resource properties indicating mutable/immutable
   state).  Is this correct?

Yes.

   QUESTION: If lock on a versioned resource does a checkout (4.9), then how do
   you lock a working resource?  I know, you use the specific working resource
   URI.  Oh, but how do I get that?  Oh, I already asked that question...

A downlevel LOCK (with no Target-Selector) would both CHECKOUT (into the
default workspace) and LOCK.  A versioning LOCK (with a Target-Selector)
would just do a LOCK.

   CONCERN: Looks like this revision of the spec (2.3) has changed the model so
   that there is now a 1-1 relationship between the version graph and the
   versioned resource.  See 3.4.3 DAV:revisions property of versioned resource
   and 3.5.7 DAV:versioned-resource property of revision.

Yup.  I didn't want to, but Jim Amsden twisted my arm (:-).  To be fair,
he twisted my arm to simplify, and I came up with this way of doing so.
So I'm happy to change it back if we've lost any important functionality
as a result.

   Before version 2.3 of
   this spec the versioned resource was more like JimW's Vportal.  You could
   have multiple versioned resources (Vportals) pointing at the same version
   graph.  This is a feature loss.  I can no longer share the same resource in
   different hierarchies.

You can still do that by binding the versioned resource into any collection
in which you'd like to make it visible, so I don't believe you've lost this
functionality.

   While this makes some server implementations easier,
   it makes some applications impossible.  Example, having both a production
   view of a web site as well as having different hierarchies of the same
   versioned resources can simplify some maintenance tasks and simplify some
   development tasks.  In the SCM world it's call sharing and is very popular.
   Why has this gone?  I'm not sure we can live without it.

I agree all these are important.  I believe we can do all this by just
binding the versioned resource(s) into multiple places (which is what
the BIND protocol is all about).  One of the reasons I've been active
in the advanced collection group is to ensure that this functionality
would be available for use by the versioning group.

   QUESTION/OPINION: If workspaces are requred (and they are in the current
   spec) and the RSR property is required (and it is), then why do we need to
   support version-aware clients that don't grok RSRs?  I guess this is the
   checkout token thing.  I'm not really saying I'm against it.  What I am
   saying is that I think it needs to be explained (and maybe even justified)
   in the spec.

I wouldn't want to spend too much time in the protocol spec on this issue,
since it is a server implementation thing, but I agree a few choice words
would be worthwhile.

Cheers,
Geoff