From: jamsden@us.ibm.com To: ietf-dav-versioning@w3.org Message-ID: <8525674C.004B963B.00@d54mta03.raleigh.ibm.com> Date: Wed, 7 Apr 1999 09:44:37 -0400 Subject: Re: nested configurations Geoff, I agree with most of this, with the following notes and/or exceptions: Can we use snapshot as the operation that binds member URLs in a configuration to the revisions selected by the current workspace? Can we stick with defining a configuration as an immutable map from user URLs to revision URLs? I don't see a need to define a new term for this. Jumping from term to term seems to be making it difficult to understand the semantics. Identifying a set of user-URLs for a configuration is *exactly* what a collection does. So I continue to believe a configuration is a specialization of a collection with the additional semantics of mapping its members to specific revisions of versioned resources. Like collections, adding a member has implications about its parents and children that we can define. So I vote for sticking with member to denote the things a configuration contains. We can talk about the binding of the member for the role the other URL plays as new configuration behavior. Or the member might be a reference if we just use references to establish both membership in the configuration and the mapping. Recall that the model currently says configurations are a kind of collection whose members are direct references to immutable revisions of versioned resources. Does this provide the functionality and semantics we need introducing the minimum number of new concepts and terms? I believe it is an error for a configuration to contain a member that has no selected revision in the current workspace *when* the configuration snapshot method is invoked. It might not have a mapping at any other time, but that's OK. The effect of the error may not be to remove the member though, so we get the flexibility you want and the notification I think users will expect. Otherwise we run the risk of putting a URL in a configuration expecting to get some revision when we use the configuration in an RSR at some future time. The best case is that you'll get resource not found when you attempt to access this URL using the configuration. The worse case is that the workspace might select some other, inconsistent revision because of some other revision selector in the RSR without you knowing it. This is not in the spirit of how configurations are used and feels a little like mutable configurations as the revision selected might change even though the configuration has the URL as a member. As far as editing the configuration is concerned, I am most interested in being able to support resource reuse by specifying the members of the configuration and getting them mapped to a revision somehow. This is a complex process because of collection namespaces. I'm happy with adding and/or removing members, and doing a configuration snapshot to establish the links from revisions selected by a workspace. It may be possible to provide more flexibility by allowing members to be bound specifically when they are added to the configuration, or by allowing members to be individually re-bound to some other revision. These are nice-to-haves and/or server optimizations, but don't seem absolutely necessary. Perhaps we could do the minimum for now and explore more flexible options when we have some more implementation experience. "Geoffrey M. Clemm" <gclemm@tantalum.atria.com> on 04/05/99 11:48:01 PM To: sv@crystaliz.com cc: ietf-dav-versioning@w3.org (bcc: Jim Amsden/Raleigh/IBM) 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