Date: Sat, 3 Jun 2000 16:52:10 -0400 (EDT) Message-Id: <200006032052.QAA00131@tantalum.atria.com> From: "Geoffrey M. Clemm" <geoffrey.clemm@rational.com> To: ietf-dav-versioning@w3.org Subject: Getting rid of "delete" semantics for checkout/checkin One of my "to-do" items from Seattle was to get rid of the "delete" semantics from checkout and checkin (I believe this issue was originally raised by JimW). The protocol currently says that when you CHECKOUT a versioned resource in a workspace, it deletes the versioned resource and replaces it with a working resource for that versioned resource. Then, when you CHECKIN a working resource, it deletes the working resource and replaces it with a versioned resource that selects the new revision created by the CHECKIN. This description has a variety of bad interactions with access control, since you shouldn't have to have add-member and delete-member rights for a collection in order to checkout or checkin a member of that collection. It has analagous bad interactions with versioned collections (you shouldn't have to checkout the versioned collection in order to checkout or checkin a member of that collection). So I propose that we modify the model to say that CHECKOUT and CHECKIN are state changes of the versioned resource, rather than the creation and deletion of a working resource. Therefore a working resource is now just a "checked out versioned resource". This model is consistent with the proposal to allocate a URL for every working resource (a working resource URL). In particular, when the CHECKOUT is not done in place (so you have to allocate a new working resource URL), this does create a new resource at the new working resource URL (in particular, a new checked out versioned resource) which *is* deleted when it is checked in. To verify that this doesn't get us into trouble somewhere else, I made a pass through the protocol to try it out (mostly just replacing the term "working resource" with "checked out versioned resource", and it actually seems to simplify the model overall. Any objections? Note that this doesn't change the protocol (i.e. the methods, headers, and properties stay the same); it just modifies the way we describe it. Cheers, Geoff