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