Date: Mon, 5 Apr 1999 23:48:01 -0400 Message-Id: <9904060348.AA27496@tantalum> From: "Geoffrey M. Clemm" <gclemm@tantalum.atria.com> To: sv@crystaliz.com Cc: ietf-dav-versioning@w3.org In-Reply-To: <025c01be7fcd$3c9e8ec0$e6ea7392@honeybee> (sv@crystaliz.com) Subject: Re: nested configurations From: "Sankar Virdhagriswaran" <sv@crystaliz.com> Could you folks summarize the result of the discussion (and the tele conference) on configurations and snapshots to the versioning mailing list and conduct all your discussions here. First we tried to identify some common ground. The first area of commonality was the existence of a "snapshot" or "create-revision-map" or "checkin-configuration" operation (terminology was *not* an area of common ground :-). In order to describe this operation, we needed to distinguish two kinds of URL's: a "user-URL" which is the kind of URL a user would remember and use to locate a resource, and a "revision-URL" which is a URL that reliably identifies a particular revision of a particular versioned-resource. A workspace defines a mutable mapping from user-URL's to revision-URL's by means of its "revision-selection-rule" property. A "configuration revision" or "snapshot" or "revision-map" defines an immutable mapping from user-URL's to revision-URL's (I'll use the term "snapshot" from now on, but there is no consensus on the use of that term). So two of the ways a snapshot is different from a workspace is: first, it cannot select working-resources, and second, it is an immutable mapping. One possibly illuminating analogy is: a working-resource is to a revision as: a workspace is to a snapshot Another difference between a workspace and a snapshot is that a snapshot might only want to contain a *subset* of the mappings defined by a workspace. The description of how to define this subset was the next topic of discussion. Here we actually reached agreement on the semantics surprisingly quickly, although we did end up with three proposals for terminology. The semantics were just that you identify a set of user-URL's. Some suggestions for the names of this property were: "members", "roots", and "scope" of the snapshot (I'll use the term "scope", but there was no consensus on the use of that term). There was general agreement that if a user-URL identified a collection revision in the workspace, then a mapping from all the members of that collection to the revision selected by the workspace would also appear in the snapshot mapping. There was a discussion about whether all the members of that collection must appear explicitly in the DAV:scope property, but our conclusion (and I believe there was consensus here) was that that would lead to unacceptably and unneccessarily large and burdensome DAV:scope property values. So the presence of a URL in the DAV:scope that identifies a collection revision would imply the creation of all the member mappings. There also was a discussion about whether it is an error for the scope to contain a user-URL for which there was no mapping in the workspace. The conclusion was that although it might be reasonable for us to define some mechanism by which a server could warn a client of this occurrence, that in order to have stability in the DAV:scope property over time, it would be better to *not* make it an error. Next there was a brief discussion about whether all the parent collections of a user-URL needed a mapping in a snapshot. Jim Whitehead volunteered to post a message about this issue to the mailing list (which I notice he has already done), and Jim Amsden has already responded with an explanation of why these parent mappings are thought to be needed. The final topic (and one that remains open) is the question of whether the *only* way to create a snapshot is by snapshotting the current state of a workspace, or whether you can create a "mutable" snapshot, and explicitly change the revisions that it selects. One viewpoint was that explicitly adding and deleting revisions from a snapshot would cause inconsistencies between the DAV:scope of the snapshot and the revision mappings of the snapshot. A response to this concern was that this could be avoided by only allowing *changing* the revision mappings of leaf (i.e. non-collection) URL's. A counter to this response was that this now becomes a fairly constrained process, while revision selection rules already provide a completely general and extensible mechanism for specifying exactly the revisions you want in a snapshot (in particular, a label rule lets you pick an arbitrary set of revisions). The final response in this thread was that it might be more efficient or more secure to just mutate a snapshot directly, rather than indirectly through revision selection rules. At this point, we agreed to continue the discussion on the mailing list. Those who felt they needed direct manipulation of the snapshot mapping agreed to produce some use cases or scenarios where they felt this would be needed. Those who felt that snapshots of the workspace suffice would then respond by how this could be efficiently/securely handled via workspaces and revision selection rules. I am slightly lost on where things are. I find Chris Kaler's point about no support for sub configurations disturbing Jim Amsden has responded to this in a recent posting. Please post any concerns you still have in this area (note: we didn't get a chance to get into this much during the TeleConf, so we need a posting from Chris to explain his concerns here). and Jeff McAffer's points quite interesting and could not find in the list of forwarded messages a response. I'll be posting one, hopefully later tonight. Cheers, Geoff