RE: Comments on versioning-03

From: Clemm, Geoff (gclemm@Rational.Com)
Date: Wed, Feb 23 2000

  • Next message: Tim Ellison OTT: "Re: Labels"

    Message-ID: <65B141FB11CCD211825700A0C9D609BC01FA6038@chef.lex.rational.com>
    From: "Clemm, Geoff" <gclemm@Rational.Com>
    To: ietf-dav-versioning@w3.org
    Date: Wed, 23 Feb 2000 00:06:57 -0500
    Subject: RE: Comments on versioning-03
    
    > From: Jim Whitehead [mailto:ejw@ics.uci.edu]
    > 
    > * Introduction.  I think it would be really helpful to have a 
    > roadmap of the
    > spec. at the end of the introduction, especially since there 
    > is a major
    > organizational theme of having the basic versioning first, 
    > followed by the
    > advanced versioning (BTW, so far, I'm liking this split).  
    > Section numbers
    > can be left as TBDs, but readers at this point should be made 
    > aware of the
    > basic/advanced split.
    
    I've added some words along these lines.  Let me know if they are
    sufficient.
    
    > * Definition of revision: A "revision" of a versioned 
    > resource is *a* write
    > protected...
    
    Done.
    
    > * Definition of workspace: In my mind, this definition doesn't really
    > capture the essence of what a workspace is.  A workspace is 
    > used to create
    > separate, isolated work areas for individuals or groups to 
    > work within.
    > That is never said.  As the definition now stands, it says a 
    > workspace is a
    > string, and "workspace" is a pretty loaded term just for a string :-)
    
    This is done to provide compatibility between basic and advanced
    versioning.  In advanced versioning, where a workspace is a resource,
    the definition is as you describe.  In basic versioning, the proposal
    is that a workspace just be a server defined string that is used
    to identify one working resource of a versioned resource
     from another working resource of that versioned
    resource (i.e. a checkout token).  A workspace identifies a working
    resource in both basic and advanced versioning.  It is "reified" as
    a resource in advanced versioning, at which time it provides the
    more sophisticated functionality that we commonly associate with the
    term "workspace".
    
    > * Definition of target:  I think this definition, or 
    > someplace in the spec.,
    > needs to provide some explanation as to why we're always 
    > working on the
    > target.  The basic reason is that we want to preserve the 
    > pre-versioning URL
    > namespace for operations when the resources are now under 
    > version control
    > (for correct handling of relative URLs, among other reasons). 
    >  Since there
    > are many revisions, we need to map the multiple revisions into the one
    > single pre-versioning URL.
    
    I added the sentence:
    
    "This allows a client to largely ignore the fact that a resource has been
    placed under version control."
    
    Let me know if you'd like more (and what exactly you'd like it to say :-).
    
    > * Notational conventions:  This spec. actually does introduce some new
    > notational conventions above and beyond those defined in 
    > WebDAV and HTTP,
    > specifically the "(protected)", "<Activity>",  
    > "<Versioned-Collection>", and
    > "(readonly)" tags that appear in section headings.  What do 
    > these all mean
    > (and are they somehow normative)?  It's never explained.
    
    I added a description of "(protected)" to the notational conventions
    section.  The angle bracket terminology was a remnant of not
    separating the document into "basic" and "advanced".  With the
    document separated, I'll just delete these annotations (they were
    really too coarse-grained anyway, since a server could implement
    only part of one of these "categories", e.g. could implement
    configurations but not activities, or vica versa).
     
    > * Section 2.2, "Naming Working Resources": I think this text 
    > might be more
    > clear if we distinguish between the workspace abstraction (an 
    > isolated work
    > area for a person or workgroup) and a workspace identifier 
    > (the string).
    
    The proposal is that only the use of a workspace to identify a
    working resource appear in basic versioning, so there is no need
    to discuss the workspace abstraction until advanced versioning.
    
    > * Section 2.3, third paragraph: I'd like to recommend the 
    > paragraph begin
    > with the sentence: "Revision identifiers and revision labels 
    > are unique only
    > across a single versioned resource.  That is, a revision id 
    > or revision
    > label...."
    
    Done.
    
    > * Section 3.1.5, stable-href:  I really don't see any value 
    > in introducing
    > this, and it causes problems.  For example, the way that it is used in
    > ELEMENT definitions in DTD language is not right.  For example:
    > 
    > <!ELEMENT initial-revision (stable-href)>
    > 
    > This indicates there is an XML element called stable-href.  But, the
    > definition of stable-href is that it is just an HREF element, 
    > thus implying
    > that stable-href is some kind of macro-substitution.  But, in XML
    > processing, there is no preprocessor, and so this kind of 
    > substitution isn't
    > allowed.  There are XML macro facilities, but I really don't 
    > think they're
    > called for here.  Just use href.
    
    It is important for clients and servers to know which properties
    contain stable href's, but I agree that it doesn't require its own
    XML element.  I'll just move the "stable" descriptor into the body
    of the property definition.
     
    > * What does "(protected)" mean in a section heading (e.g., 
    > section 3.3.1).
    > It's never defined.
    
    It means that the property cannot be modified by a PROPPATCH.
    I've added this definition in the "Notational Conventions" section.
    
    > * The auto-version semantics described in section 3.3.4 
    > really need to be
    > pulled-out of the property description, and placed in a 
    > separate section.
    > There are a lot of subtle issues that need to be dealt with for
    > auto-versioning (like, error handling -- what happens if the automatic
    > CHECKOUT succeeds, but the PUT fails?), and having a separate 
    > section will
    > allow them to be better addressed.
    
    There is such a section (paragraph 2 of section 4: Versioning and
    Existing methods).  I'll give it its own title to highlight this
    feature.  This section does need to be expanded to handle the
    error conditions (after we figure out what those error conditions
    are :-).  I'll add this to the "Open Issues" section.
     
    > * DAV:revision property.  I think having a DAV:revision and a 
    > DAV:revisions
    > (plural) property is just asking for trouble.  Let's call DAV:revision
    > something like DAV:revision-href instead.
    
    We also have a DAV:activities, DAV:versioned-resources, and
    DAV:workspaces.  Does this mean we want DAV:activity to be
    DAV:activity-href, DAV:versioned-resource to be
    DAV:versioned-resource-href, and DAV:workspace to be
    DAV:workspace-href?  What about when something that used to only
    have a singular form gets a plural form?  If you really think this
    is an issue, I'd probably go the other way, and change the plural
    to be DAV:revision-set, DAV:activity-set, etc.  Tim: This means 
    you will need to update the scenario document with the new
    property names (for which you can thank Jim ... :-).
    
    > * 3.4.5, DAV:labels.  Any string that appears in the protocol that is
    > displayed to the user MUST be internationalized, or you 
    > violate IETF i18n
    > policy.  Since this section states that revision labels are 
    > exposed to the
    > user, then the strings must be tagged with language, and charset.
    
    I agree with those on the mailing list who have argued that it is
    sufficient to internationalize labels to the extent that URL's are
    internationalized, which does not include tagging with language and
    charset.
     
    > * 3.4.6 DAV:checkin-date:  This needs to state that it is the time,
    > according to the versioned resource (that is, the origin 
    > server), and not
    > according to the client.
    
    Since this is a protected property (i.e. set by the server), this
    issue should not arise.
    
    > * 3.4.7 DAV:workspaces.  Wording suggestion.  "This property 
    > identifies the
    > workspace for the working-resources derived from this 
    > revision (i.e., whose
    > DAV:predecessors..."
    
    Done.
     
    > * Section 3.4.9 DAV:versioned-resource.  Wording suggestion.  
    > "This property
    > identifies the versioned resource that contains this revision 
    > (i.e., whose
    > DAV:revisions..."
    
    Done.
     
    > * Section 5.1: MKRESOURCE should return a 201 (Created) when 
    > it successfully
    > creates a new resource, instead of 200 OK.
    
    Done.
    
    > * Section 5.2: This section should describe at a high level 
    > what each of the
    > reports provides, and should also have forward references to 
    > the sections
    > (specifically, section 12) that define each of the reports, 
    > if they're not
    > defined in section 5.2
    
    I can see putting in a forward reference to section 12, but why
    would we want a high level definition of what each of the reports
    provide?  Wouldn't it just needlessly confuse readers that are only
    interested in basic versioning, while those interested in advanced
    versioning could skip ahead to section 12?
    
    > I couldn't find any description of 
    > the lock report,
    > and I recommend deleting it.
    
    Done.
    
    > Towards the end of Section 5.2, 
    > there is a
    > cut-and-paste error: "The following status codes are used to transmit
    > *REPORT* results..."
    
    Done.
    
    > * Section 5.4, Property report. Those are some pretty funky 
    > semantics for
    > the property report.  I'm starting to think it might just be 
    > better to have
    > specific reports, rather than this general, albeit funky, 
    > mechanism.  I
    > could be convinced otherwise, though.  But, the spec. would need much
    > stronger rationale to convince me (or any other reader, I imagine).
    
    We'd have to have a combinatorially explosive number of individual
    reports to cover any reasonable set of client scenarios, so I'm
    strongly against that, but I agree that this report needs to be
    both motivated and exemplified (not what the dictionary would define
    "exemplify" to be, but you can probably guess what I mean :-).
    
    > * Section 6.1, VERSION.  The list of postconditions doesn't 
    > list the values
    > of all the properties that are set on the versioned resource 
    > and on the
    > initial revision.  I'd expect a list that contains just about 
    > every property
    > from section 3.3 and 3.4, explaining what its value will be 
    > at the end of
    > the method's execution.
    
    Yeah, I just stuck this in at the last minute to match up with
    the scenario document.  I'll add this to the To-Do section.
    
    > * Section 6.1.1. The example can drop the Content-type 
    > headers, but needs to
    > add the Host header and the Request-URI needs to have the scheme, and
    > hostname removed to be HTTP/1.1 compliant (this was mentioned during a
    > previous teleconference).
    
    Done.
    
    > * Section 6.2. In the postconditions, the property is DAV:predecessors
    > (plural) rather than DAV:predecessor.
    
    Done.
     
    > * Section 6.2.  I think there needs to be another status 
    > code, 4xx (Already
    > Checked Out).
    
    Currently this is a 409.  We would like to give additional
    information.  Like Yaron, I'd rather put this in some extensible
    XML value, rather than enumerating the set of "interesting"
    cases of the 409.  But like Jim, I'm hesitant about biting off
    this issue in the versioning protocol.  So I'm inclined to just
    keep it as a 409, and require that the client query the state
    on the server to see what went wrong.
     
    > * Section 6.2.1. The example needs a Content-Length header in 
    > the response.
    > The request does not need a Content-type header.
    
    Done.
    
    > * Section 6.4, CHECKIN.  Same as for VERSION, the effect on 
    > properties needs
    > to be better described.  For example, DAV:checkin-date needs 
    > to be set, as
    > does DAV:versioned-resource.
    
    Yes.  I'll add this to the ToDo section.
     
    > * Section 7.1: The terminal Workspace-URL is never defined.
    
    Done.
    
    > * Section 7.2: The BNF and the examples disagree.  If the example is
    > correct, then the BNF needs to have quote characters around 
    > the "segments".
    
    Done (got rid of the quote characters).
    
    > That's all for now...
    
    Thanks, Jim !!
    
    I'll post a new working draft of the spec based on Jim's comments to
    the usual locations (hopefully, tomorrow).
    
    Cheers,
    Geoff