Configurations: A Compromise Proposal
Geoffrey M. Clemm (gclemm@tantalum.atria.com)
Fri, 7 May 1999 06:23:12 -0400
Date: Fri, 7 May 1999 06:23:12 -0400
Message-Id: <9905071023.AA08418@tantalum>
From: "Geoffrey M. Clemm" <gclemm@tantalum.atria.com>
To: ietf-dav-versioning@w3.org
Subject: Configurations: A Compromise Proposal
Jim, Sankar, Chris, and others have made a good case for having a simple
"collection" style configuration, where revisions are explicitly
added and removed by a client. Jeff and I are firm believers in
"a deep revision of a collection" as the approach that is also
simple (in a different way) and scales up to handle large configurations.
I think this is a case where "we're both right". These are two distinct
approaches with different advantages, and our current attempt to force
them into a single resource-type may be a mistake. So I'd like
to propose the following:
----------------------------------------------------------------------
A "configuration" is just a "a collection of revisions". The user
uses standard advanced collection protocol to add and remove revisions
from this collection. The name of a member of a configuration is the
"versioned-resource-id" of that revision. This guarantees that at
most one revision of a versioned-resource can be a member of a given
configuration. (Note: there is no "recursively adding members of a
collection" semantics -- the only constraint on the revision set is
one revision per versioned-resource).
A "baselined-collection" is a special kind of "versioned-collection"
which has a "baselines" property in addition to the "revisions"
property that all versioned-resources have. The "baselines" are the
"deep revisions" of the collection, while the "revisions" are the
standard "shallow revisions". A new revision of a baselined-collectin
is created in the standard way with a CHECKIN operation. A new
baseline of a baselined-collection is created by adding a "Baseline"
(or perhaps "Deep") header to the CHECKIN request. A
"Baseline CHECKIN" creates a new baseline of a baselined-collection
that contains the revisions of the members of the baselined-collection
that are currently selected by the Workspace.
----------------------------------------------------------------------
A configuration is then the simple "set of revisions" that Jim, Sankar,
Chris, et. al. have advocated. A baselined-collection provides the
deep-revision semantics Jeff and I have advocated. These two concepts
fit nicely together, in that adding a baseline of a collection into
a configuration lets you mix and match deep revisions just as you would
mix and match shallow revisions.
This also gets back to a question that was raised in the design meeting
about 7 months ago about whether a revision of a collection was deep
or shallow ... the answer would now be "we support both".
How does this sound?
Cheers,
Geoff