From: jamsden@us.ibm.com To: ietf-dav-versioning@w3.org Message-ID: <85256817.004E2D09.00@d54mta03.raleigh.ibm.com> Date: Wed, 27 Oct 1999 10:13:04 -0400 Subject: Re: Versioning spec review - 02.3 "Geoffrey M. Clemm" <geoffrey.clemm@rational.com> on 10/27/99 01:22:29 AM To: ietf-dav-versioning@w3.org cc: Subject: Re: Versioning spec review - 02.3 From: jamsden@us.ibm.com <jra> We went to a lot of trouble trying to establish levels only to eliminate the concept in Concord. It seems too bad to reintroduce them now. I hope we don't go over that same ground again. I wasn't helpful getting the versioning semantics down. </jra> I assume you meant "It wasn't helpful ..." (:-). I believe the reasons why levels are preferable to options still are valid. If the protocol now displays some natural leveling after recent iterations, I think it is important that we recognize and take advantage of it. <jra> No, I meant I wasn't helpful! Boy the things that slip by when you're in a hurry... </jra> <jra> ... we need to say that the server can fail the operation or overwrite the revision. I don't remember seeing this in the postconditions of CHECKIN. </jra> The postconditions are the state you reach after successful completion of the operation. If the operation is aborted, then the postconditions will not hold. This is true for all the postconditions, not just the DAV:overwrite one. <jra> Ok, I didn't see it in the preconditions either. </jra> <jra> So baselines don't have human meaningful names or labels? How will a user distinguish one fron another? </jra> A client is free to give them various properties to identify them. We could standardize on some of these, but I tend to dislike enumerating dead properties (even interesting ones) in the protocol. Perhaps we could have some companion document (and move DAV:comment and DAV:author into it)? <jra> This sounds too ugly. I wouldn't use baselines. Instead, I would create a configuration with a name I know in a collection I createds, and put the versioned collection and all it members into the configuration. That's the same thing as a baseline, but it has a name I recognize and has something to do the the project/release/deployment I'm doing. The only thing missing that baselines provide is a way for the collection to keep a list of such configurations. I claim that clients are free to add properties to collections as they wish, and these configurations could be added as hrefs if the client wants them. To achieve interoperability, we might want to specify a DAV:baselines property as the recommended place to put such configurations, but I'd like to see the use cases that require this. So, I think I'm back to our original discussion over lunch in Cary, do we really need baselines? Will configurations do? </jra> So you now just create baselines with the MKRESOURCE command. There's a ToDo note in the draft saying this should be explicitly mentioned in the MKRESOURCE method description. <jra> I don't recall MKRESOURCE mentioning creating baselines, or the semantics of how one was created. That's why it's a "ToDo" note (:-). Does the collection have to be checked in? Can it have working resources in this or any other workspace? <jra> This is another example of method overload. There are a lot of semantics that must be checked to create a baseline. Its not just initializing some properties of a new resource type. MKRESOURCE will get pretty complicated if each new resource type it creates has to describe a bunch of special case additional semantics. I vote for a new method. </jra> <jra> So the human meaningful name (its human URL and revision id) for a revision can't be used in the RSR? That's my vote. As fun as RSR's are (:-), I see them as a client artifact, not a user artifact. <jra> I think human meaningful names should be the rule, not server generated URLs. It is the server's responsibility to map URLs to resources, not the client. </jra> <jra> If you have a bunch of versioned collections in a hierarchy, and you want to access a specific revision of a member of one of them, then you need two things: the workspace to use to select the righ revisions of versioned collections along the path, and a revision name to select the specific revision of the member versioned resource. We don't want to require users to us repository and server implemented URLs for this. </jra> You use a PROPFIND with the workspace as the target selector to get the DAV:revisions property of the DAV:versioned-resource property of the revision. With the DAV:revisions collection, you can select any revision of that versioned resource that you want. <jra> Completely unacceptible. Again, it is the server's responsibility to do this name mapping, not the client. That's why we have human meaningful names. </jra> The DAV:revision-labels collection is there to give clients easy access to any revision by using a label. No need for a specific header, and suitable for use in any context where a URL can be specified (as opposed to the Target-Selector, which just works for a Request-URL). <jra> It is not acceptible to require clients to translate URL and revision names into server generated revision URLs for this operation. The client should always be able to use the name they know a revision by to access that revision. </jra> I'm not sure what you mean by "translate URL and revision names into server generated revision URL's". If you mean, concatenate the DAV:labeled-revisions URL with a "/" and a label, then I find that totally acceptable. That's exactly what a client does for a user whenever a specific member of a collection is requested. <jra> What I'm saying is that it is unacceptible for the client to have to do a PROPFIND, get a server URL and hand it back. So what I want to do is have the client give the server a workspace for resolving URL path segments, with an option to provide a revision name to override the selection of the last item in the path. But I see how your approach would work too. </jra>