Getting rid of "delete" semantics for checkout/checkin

From: Geoffrey M. Clemm (geoffrey.clemm@rational.com)
Date: Sat, Jun 03 2000

  • Next message: Clemm, Geoff: "Versioning TeleConf Agenda, 6/5/00 (Monday) 2pm-3pm EST"

    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