Message-ID: <F3B2A0DB2FC1D211A511006097FFDDF53438BF@BEAVMAIL> From: Bradley Sergeant <Bradley.Sergeant@merant.com> To: ietf-dav-versioning@w3.org Date: Wed, 20 Oct 1999 12:12:49 -0700 Subject: RE: Versioning spec review - 02.3 See if you can parse <sarge2> below. -Sarge2 -----Original Message----- From: jamsden@us.ibm.com [mailto:jamsden@us.ibm.com] Sent: Wednesday, October 20, 1999 6:46 AM To: ietf-dav-versioning@w3.org Subject: RE: Versioning spec review - 02.3 <sarge> QUESTIONS: Given the URIs for a versioned resource and a workspace how does one obtain the URI of the associated working resource. Rather than the revision maintaining a list of working-resources you have it maintain the associated workspaces instead (DAV:workspaces). This seems to make it much more difficult to get at the working resources of a particular revision. What's the reason for the indirection? </sarge> <jra> I think this mapping is up to the server and is part of its implementation. I don't think it needs to be specified in the protocol. The purpose for having the workspaces is to know what what workspace the revision is checked out in. That's what you need to know to get the working resource. </jra> <sarge2> I don't think we are communicating. All I'm saying is that as a client I want to be able to obtain the URI of the working resource. In the current spec I see no way to do this. This seems wrong to me. </sarge2> <sarge> OPINION: If we are allowing generalized property assignment as part of CHECKOUT and/or CHECKIN then using D:propertyupdate and D:propstat seem justified. However, if we are only passing method specific arguments to, and results from these methods then perhaps we should use new XML elements with specific semantics. </sarge> <jra> Agree completely. I think using propertyupdate is an unnecessary protocol optimization that creates overlap between methods and extra rules. </jra> <sarge> Seems to me that 6.2 should at least mention the affect of DAV:overwrite on mutable revisions. It's a little too subtle to leave it to the DAV:checkin-policy property definition to provide this information. </sarge> <jra> Yes, I thought this was missing too, but didn't notice it in my first pass. </jra> <sarge> QUESTION: So the current spec now says that you don't choose to make individual revisions mutable or not? The server is simply at liberty to allow overwrites of any revisions or to disallow overwrite of any revisions as it sees fit (i.e. no per resource properties indicating mutable/immutable state). Is this correct? </sarge> <jra> I think we should add this. The information will be useful for determining the quality of merge operations. It also provides a very simple way for DMS servers to support immutable revisions. </jra> <sarge> QUESTION: If lock on a versioned resource does a checkout (4.9), then how do you lock a working resource? I know, you use the specific working resource URI. Oh, but how do I get that? Oh, I already asked that question... </sarge> <jra> I don't think a lock should be a checkout. See the note I sent out on locking semantics. </jra> <sarge2> I saw your note, but this was just put on the issues list as something to discuss. I'm saying that the current spec has a hole in it. Perhaps we'll decide to fix it your way, but regardless it needs to be changed so that you can issue a lock on a working resource. I'd like Geoff to respond as to whether there is a way to lock a working resource given the current spec. I've suggested it could be done with the URI of the working resource, but as I've said, I don't see how to get at this URI in the protocol. </sarge2> <jra> CONCERN: Looks like this revision of the spec (2.3) has changed the model so that there is now a 1-1 relationship between the version graph and the versioned resource. See 3.4.3 DAV:revisions property of versioned resource and 3.5.7 DAV:versioned-resource property of revision. Before version 2.3 of this spec the versioned resource was more like JimW's Vportal. You could have multiple versioned resources (Vportals) pointing at the same version graph. This is a feature loss. I can no longer share the same resource in different hierarchies. While this makes some server implementations easier, it makes some applications impossible. Example, having both a production view of a web site as well as having different hierarchies of the same versioned resources can simplify some maintenance tasks and simplify some development tasks. In the SCM world it's call sharing and is very popular. Why has this gone? I'm not sure we can live without it. </sarge> <jra> Can't this requirement be met with BIND? This doesn't seem like a versioning issue. Given multiple bindings to the same resource, different workspaces can pick up different revisions of the bindings giving different views of the same versioned resources. So I think we still have the functionality, and its more flexible than before. </jra> <sarge2> So you're saying we can use advanced collections to restructure a versioned resource tree and achieve the same thing. Perhaps this will work, but I don't think so. My concern is that it means you have to have one primary structure for your versioned resources which you can never delete or restructure because you've got bindings that reference it. It's one thing to say that the history resource URI (which the server generates) must not change, but saying that a publicly used versioned resource URI (that the user invents) can't change I see as a big problem. My experience in this area tells me that we need an invariant URI or ID of some sort that allows you to always get at the same revision graph. I don't think the versioned resource itself can play this role because the client needs/wants to be able to move and delete these items for specific project needs, without affecting other structures used for other purposes that reference the same revision graphs. See the point? As I've posted in earlier mail on this topic, I'd rather see: * the revision reference the working resources, * the working resources reference the workspace (which they do) and also the associated versioned resource (which they don't), * the workspace reference the working resource (which they don't). I don't want: * the revision referencing the versioned resource (which it currently does), * the workspace referencing the versioned resource (which it currently does). I'd rather let the client go to the working resource to get this information if required. That is the model I think works best, but it requires a history resource, or a two level lookup on a repository resource. We had the history resource before, but it suddenly vanished. </sarge2> <sarge> QUESTION/OPINION: If workspaces are requred (and they are in the current spec) and the RSR property is required (and it is), then why do we need to support version-aware clients that don't grok RSRs? I guess this is the checkout token thing. I'm not really saying I'm against it. What I am saying is that I think it needs to be explained (and maybe even justified) in the spec. </sarge> <jra> I didn't think the RSR was required. The spec distinguishes simple and extended workspaces. Simple workspaces don't have an RSR, so they can only be used to access checked out resources. The purpose of this is to allow client applications to manage their "workspaces" locally without server involvement. </jra> <sarge2> The RSR property is part of the CORE. The spec talks about Basic and Extended Workspaces, but does not indicate the Extended Workspace is optional for a server. I get the feeling we are in fact trying to support servers and clients that do not know about RSRs (i.e. only use Basic Workspaces). I just think this needs to be more clearly explained and motivated. </sarge2>