Re: Configurations: A Compromise Proposa

Geoffrey M. Clemm (gclemm@tantalum.atria.com)
Fri, 7 May 1999 17:38:49 -0400


Date: Fri, 7 May 1999 17:38:49 -0400
Message-Id: <9905072138.AA08911@tantalum>
From: "Geoffrey M. Clemm" <gclemm@tantalum.atria.com>
To: Jeff_McAffer@oti.com
Cc: ietf-dav-versioning@w3.org
In-Reply-To: <1999May07.155400.1250.1172615@otismtp.ott.oti.com>
Subject: Re: Configurations: A Compromise Proposa

   From: Jeff_McAffer@oti.com (Jeff McAffer OTT)

   I believe you have struck a chord here.   We have been trying to do too   
   many things with one concept (configurations).  Your proposal splits the   
   two in a useful way.  I agree with this in general and have a few   
   observations/questions.

    - Just to clarify, I can put a deep or shallow revision of a resource   
   into a configuration?  Putting a deep revision in is basically shorthand   
   for explicitly adding each of the shallow revisions spec'd in the deep   
   revision?

Yes.

    - Again, clarification.  Baselines/deep-revisions are not   
   versioned/able-resources, they are a kind of revision of a   
   versioned-resource.  How are deep-revisions identified relative to   
   shallow-revisions?  Do they just have different revision-ids?  How do I   
   (a client) tell if a revision is deep or shallow?

From a property of the revision.  I don't at the moment see a need to
require that the deep-revisions have different revision-id's from the
shallow revisions, but I'm not averse to making that requirement if
it buys us something.

    - Nesting of deep-revisions is implicit in that a versioned-colleciton   
   could (indirectly) "contain" some versioned-resource which could have a   
   deep-revision.  The job of the server when doing a deep checkin is to   
   ensure that any such nested deep-revisions are valid in the current   
   workspace.  If it is, it can be reused. 

Correct.

   If not, what?  Automatically   
   create a new deep-revision for that versioned-resource?  fail?

Automatically create a new deep-revision.  We could have a "fail" header,
but I currently see no benefit in providing that behavior.

    - I like the idea of being able to control the content of the deep   
   revision.  I also like being able to deep checkin a collection and get a   
   depth infinity revision.

By "control the content", do you mean "control the depth"?  We could
certainly provide a depth header, but I doubt that the "depth" will
have sufficient semantic content for it to be useful in many cases.

For anything but a shallow or deep (infinity) revision, I'd just recommend
using a configuration.

    - It appears that the "snapshot" operation for creating configurations   
   goes away? 

Correct.

   Just so I understand, one creates configurations then by   
   adding, for example, deep-revisions of versioned-resources (exactly one   
   per resource) to a configuration?

Correct.

    - I am not particularly happy with the use of the versioned-resource-id   
   as the member name for revisions explicitly added to a configuration.  I   
   don't know how to fix it 

Well, if you can think of an alternative, just let me know (:-).  The only
reliable information we have about the revisions is that there is only
one per versioned-resource, which means that the only id which will be
unique is the versioned-resource-id.

   but this is the problem I have talked about   
   previously where we lose the names of the roots.  This seems unnatural to   
   me.  All other resource manipulation metaphors I can think of do not do   
   this. For example, you don't lose the name of your file when you copy it   
   to a floppy.  The floppy provides a namesapce '/' for retaining the names   
   of the top level resources.  Same in zip files.

You need to think "Web" here, not floppy disk drive.  When you add to
your server configuration file an association between a particular URL
and a particular resource (perhaps, some file system file), the name of
of the "root" is not derived from the resource, but from the string you
specify in a the configuration file.

As another way of thinking about it, you should be able to "mount" any
baseline at any point in your URL tree, including "/".  If you somehow
"embedded" the name of the root of your baseline, then it could never
be mounted at "/", and it could never be mounted at any other name than
the one you embedded in your baseline.  This would be a bad thing.

Or just think of normal file system mounts.  Does a file system have
embedded in it the name by which the root of that file system *must*
be known, whenver it is ever mounted?

    - I would propose "deep-revisions" as the property name rather than   
   "baselines".

I'm flexible on what we call them, as long as the semantics are right (:-).

Cheers,
Geoff