Date: Mon, 25 Oct 1999 18:31:53 -0400 Message-Id: <9910252231.AA24983@tantalum> From: "Geoffrey M. Clemm" <geoffrey.clemm@rational.com> To: ietf-dav-versioning@w3.org In-Reply-To: <F3B2A0DB2FC1D211A511006097FFDDF53438BD@BEAVMAIL> (message from Subject: Re: Versioning spec review - 02.3 From: Bradley Sergeant <Bradley.Sergeant@merant.com> 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? The intent was to not force an implementor to have a URL that would identify a working resource. This was not thought to be a problem, since users will be referring to working resources with user-meaningful URL's and a workspace header, not by some obscure server-generated URL. On the other hand, a DAV:working-resources property for a workspace does give the client a convenient way of getting a report on *all* working resources in a workspace. So you'll find that the most recent spec has added the DAV:working-resources property to a workspace. Does anybody have a problem with this? The omission of DAV:working-resources from a revision was for a more significant reason, namely to allow workspaces to exist on different servers from the repositories containing the versioned resources. I think this will be very important, and since cross server bindings are unlikely to be implemented, I've tried to avoid having any collections where the member of the collection is likely to be on a different server from the collection. 6.1 Marshalling. The Request-URI specifies the specific revision or the versioned resource to be checked out. 6.2 Marshalling. The Request-URI specifies the specific working resource or the versioned resource to be checked in. In either case if the Request-URI specifies a versioned resource the Target-Selector (or lack there of) will be determine the revision/working resource to act upon. That makes sense. Does anybody have a problem with this? 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? Yes. 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... A downlevel LOCK (with no Target-Selector) would both CHECKOUT (into the default workspace) and LOCK. A versioning LOCK (with a Target-Selector) would just do a LOCK. 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. Yup. I didn't want to, but Jim Amsden twisted my arm (:-). To be fair, he twisted my arm to simplify, and I came up with this way of doing so. So I'm happy to change it back if we've lost any important functionality as a result. 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. You can still do that by binding the versioned resource into any collection in which you'd like to make it visible, so I don't believe you've lost this functionality. 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. I agree all these are important. I believe we can do all this by just binding the versioned resource(s) into multiple places (which is what the BIND protocol is all about). One of the reasons I've been active in the advanced collection group is to ensure that this functionality would be available for use by the versioning group. 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. I wouldn't want to spend too much time in the protocol spec on this issue, since it is a server implementation thing, but I agree a few choice words would be worthwhile. Cheers, Geoff