Re: Versioning TeleConf Agenda, 4/10/00 (Monday) 2-3pmEST

From: Geoffrey M. Clemm (geoffrey.clemm@rational.com)
Date: Tue, Apr 11 2000

  • Next message: jamsden@us.ibm.com: "Re: Questions on activities"

    Date: Tue, 11 Apr 2000 00:40:04 -0400 (EDT)
    Message-Id: <200004110440.AAA10338@tantalum.atria.com>
    From: "Geoffrey M. Clemm" <geoffrey.clemm@rational.com>
    To: ietf-dav-versioning@w3.org
    Subject: Re: Versioning TeleConf Agenda, 4/10/00 (Monday) 2-3pmEST
    
    
    In the conference call, we spent most of the time going over the
    points JimA raised in his recent "Re: Versioning 4.0 review"
    message, so I'll use that message as an outline for the minutes.
    
       From: jamsden@us.ibm.com
    
       <jra> If the server reused workspaces when one wasn't provided,
       there would be the possibility of collisions from multiple users. I
       don't think this would work.  </jra>
    
    This appears to be a misunderstanding.  "Reusing a workspace" was
    intended to mean that a server could reuse a workspace after it was no
    longer in use, because the working resource that previously was
    identified by that workspace was deleted because of a CHECKIN or
    UNCHECKOUT.
    
       But note that a core versioning server is only required to support
       the "server allocates the checkout workspace" mechanism.  Chris has
       requested this, and I believe we agreed to it. An advanced
       versioning server may optionally support a user creating a
       workspace resource and specifying that with the CHECKOUT request.
    
       <jra> I think core versioning will want to do this too. Then Chris
       can reuse the same checkout token for lots of resources having
       related changes. That is, the server should only allocate a
       workspace checkout token if no workspace was specified on
       checkout. If one was provided, then it can be reused.  This should
       be in core versioning. It has no implications about workspaces
       being used for anything but identification of working
       resources. Note there is no implication that creation of workspaces
       needs to be in core versioning, only their use on checkout.  </jra>
    
    Chris wanted to review the 04.2 proposal before commenting on whether
    he wants this functionality in core versioning or not.  My comment
    here is that if a server is going to let you specify the working
    resource id, it is likely that you can't just pick an arbitrary
    string, but rather one that the server allows.  You therefore need a
    way to ask the server for a "legal" working resource id.  I believe
    the advanced versioning "make workspace" and "workspace" header pretty
    much handle this.  If such a server didn't want to also let you select
    revisions in such a workspace, it would just refuse a
    SET-DEFAULT-REVISION request that included a Workspace header.
    But I don't think this needs to be required for core versioning.
    
       Is the approach of "core versioning uses a SET-DEFAULT-REVISION and
       advanced versioning allows the use of MERGE for activities and
       baselines" acceptable (it certainly is much simpler and more
       consistent).
    
       <jra> I don't think so. Let's devote a call on the subject of
       default revision selection after we've settled some of the
       non-default behavior of workspaces.  </jra>
    
    Jim proposed that "set RSR" and "update" are a better alternative.
    Geoff believes that a simple versioning client will not want to
    deal with an RSR and periodic "update" calls, but will want to
    just say "I want this revision to appear by default" (in particular,
    to all versioning-unaware clients).  Jim still prefers "set RSR"
    and "update" (to be continued :-)
    
       I'll let you and Jim Whitehead hash this out ... he didn't like
       DAV:revision and DAV:revisions because they'd be easy to confuse.
    
       <jra> Then English is too easy to confuse. In any case, end users
       are not going to be setting these headers anyway, only client
       applications. I say keep them short, keep them to single words when
       possible, avoid abreviations, and use commonly used language and
       domain terms and grammar.  </jra>
    
    This topic didn't come up in the call today, but if I were JimW,
    I'd probably say "English can be easy to confuse, and if we are
    going to use some criterion for chosing terminology, avoiding
    potential for confusion is an important one, more important than
    using colloquial English".  But speaking for myself, I don't care (:-).
    
        - 10.5.1 Perhaps there should be a way to list all the members of
        a workspace, not just the working resources.
    
    My concern here is that a server might want to implement a
    workspace by laying down a label on each revision that is to be
    selected by that workspace.  In that case, although the workspace
    can always say what revision (if any) of a particular versioned
    resource is selected by that workspace, it could not say what
    all its members are (since it might have no way of enumerating all
    the versioned resoures it has labeled).
    
    And that's about as far as we got in the call.
    
    Jim then ended by asking everyone to think through the use cases
    and scenarios as they applied to these issues.
    
    Geoff then asked everyone to read over the 04.2 draft.
    
    And now for my response to the rest of Jim's response to my response
    to his review of 4.0 (:-).
    
       <jra> 11 Why can't a versioned collection contain a member denoting a
       binding to an unversioned resource? Its the collection that doesn't
       change, not the resource the collection member refers to. </jra>
    
       This would mean that a workspace containing such a collection
       revision cannot make a copy of that collection for use by the
       workspace, but instead needs to have every workspace with that
       revision share a common (mutable) unversioned resource. This
       removes the essential characteristic that allows one to implement
       large numbers of workspaces working against a common set of
       versioned resources.
    
       <jra> I don't completely understand. The
       server could copy the contents of the versioned collection to cache
       the contents of a static workspace that references it. In this
       case, the bindings to the collection members are cached, and it
       doesn't seem to matter what they reference - versioned resource or
       not, mutable or not, shared by other workspaces or not.  </jra>
    
    The semantics of an unversioned resource is that a PUT to that
    resource is seen by the next GET to that resource.  This means that
    two workspaces cannot have their own copies of that resource, but must
    share a common resource.  In contrast, each workspace can have its own
    copy of a revision, since it is immutable.
    
        <jra> DAV:current-activity should be removed.  Activities should be
        specified as part of checkin. So this section isn't needed,
        advanced versioning doesn't add anything.
    
       Needed to allow versioning aware clients to set up activity-based
       workspaces for use by versioning unaware clients.
    
       <jra> This is a stretch. We're adding complexity to the protocol to
       support versioning unaware clients to access functionality in
       advanced versioning?  This doesn't seem necessary.  </jra>
    
    It is essential that versioning unaware clients be able to author
    resources on a versioning server (that's what DAV:auto-version is
    all about).  This is true for an advanced server that requires
    an activity to be associated with each revision, but without
    DAV:current-activity, a versioning unaware client would not be able
    to author in an advanced workspace that requires activities.
    
    Cheers,
    Geoff