- From: Tim Ellison <tim@peir.com>
- Date: Wed, 17 Jan 2001 12:06:44 -0500
- To: <ietf-dav-versioning@w3.org>
[freed from spam trap -rrs[ Date: Wed, 17 Jan 2001 12:03:21 -0500 (EST) Message-ID: <004b01c0808f$400434b0$27181409@hursley.ibm.com> From: "Tim Ellison" <tim@peir.com> To: <ietf-dav-versioning@w3.org> I had a thorough read through 11.1 and as I indicated in my earlier message had no significant changes. I'll post these to the list, but they are really only of interest to the authors as they are small editorial changes. I'm sure Geoff will call-out anything that requires wider discussion. Roll-on Friday! Tim -------- General beefs: There are a number of places where the text says a property must contain a version etc. when it means that the property must "contain the URL of" a version etc. In the 'OPTIONS Additional Marshalling' sections there are DTDs for the request and the response without any indication of which is which. Either some text, or a subheading would be useful. Trivia: (Nothing of any significance here, just some things that I thought would add a little more clarity or questions that came to mind as I was reading through the document.) Authors list Check Jim Whitehead's affiliation 1.3 Terms 'This draft' --> 'This document' 'A "version history" is a resource that contains all the versions ...' consider '... that references all the versions ...' 'Root Version Resource' consider renaming the term 'Initial Version Resource' as the term root is used elsewhere in the document, as in a root collection. 1.5.2 Property Value Locking This section is too general as it can be read to mean that requests whose side-effects are a modification of another resource's (computed) property MUST include the lock token of any resources that they affect. I do not believe that this is the intent. 2.1.1 Creating a Version-Controlled Resource para. 1 '... and creates a version in this version history...' consider '...of this version history...' (that 'contains' thing again) para. 3 '... the resource that is now under version control.' consider '... under version control (the 'version-controlled resource).' for clarification and definition of the term. 2.1.2 Modifying a Version-Controlled Resource para. 2 '... with the DAV:auto-version property set' I'm assuming that this has been rewritten based on the value of the property. 2.2.1 DAV:checked-in 'This URL can be used to retrieve this particular state of the version-controlled resource after the version-controlled resource itself has been modified.' Given that this is a property of a checked-in version-controlled resource, I fail to see how the version-controlled resource itself can be modified. 2.2.3 DAV:predecessor-set Should state that the predecessors MUST be part of the same history. 2.2.4 DAV:precursor-set Should state that the predecessors MUST NOT be part of the same history. Why are we required to make this distinction between predecessors and precursors? 2.2.5 DAV:auto-version Assuming that the vallue of the property is being defined rather than saying it is set. As it reads now, having it set to 'false' would cause auto-versioning to take place. Maybe clarify what happens when a write lock expires, presumably the checkin attempt occurs, and errors are never reported to any client. 2.3.5 DAV:checkin-date 'This property contains the date on the server when the version was checked in.' Consider '..when the version was created.' since the initial version is not checked in. 2.5 DAV:version-tree REPORT Marshalling: '...with at most one a DAV:prop...' -> '..with at most one DAV:prop...' <!ELEMENT version-tree (href, prop, version-tree*) Why DAV:prop and not DAV:propstat? -- what about requests for non-existant properties? Why are the DAV:version-tree elements nested? It does not convey "true" structure, especially since 'A server MAY omit the DAV:prop and the successor DAV:version-tree elements ...' I don't see that the nesting is helpful. 2.5.1 Example - DAV:version-tree-report >>REQUEST Last line of the XML has a gratuitous xmlns definition. 2.7 Additional PUT semantics (DAV:cannot-modify-version-controlled-content) & (DAV:auto-checkout) Assume that the DAV:auto-version consideration is being re-written. (DAV:auto-checkout-checkin) Uses the obsolete term 'revision' twice. 2.8 Additional PROPPATCH semantics (DAV:cannot-modify-computed-property) Consider removing this precondition and stating (earlier) that all computed properties are protected. (DAV:auto-checkout) & (DAV:auto-checkout-checkin) Assume that the DAV:auto-version consideration is being re-written. (DAV:auto-checkout-checkin) Uses the obsolete term 'revision' twice. 2.9 Additional DELETE semantics (DAV:cannot-delete-root-version) Why? Consider that the value of DAV:root-version becomes undefined on its deletion. (DAV:no-version-delete) Reads more like a precondition. (DAV:update-predecessor-set) I presume this is to prevent "holes" in the history, but this won't work in the face of merges. 2.10 Additional COPY semantics (DAV:auto-checkout) Assume that the DAV:auto-version consideration is being re-written. Uses the obsolete term 'revision' twice. 3.1 CHECKOUT Method What happened to the text that stated a lock token is required if the resource is write locked? 3.2 CHECKIN Method (DAV:initialize-version-content-and-properties) 'The DAV:checkin-date of the new version MUST be set...' Should state where possible to be consistent with definition of property (2.3.5). 4.1 UPDATE Method Marshalling: '...with at most one DAV:version element.' So what would zero elements mean? (DAV:must-select-version) Consider renaming (DAV:must-select-version-in-same-version-history) 4.1.1 Example - UPDATE 'In this example, the content and dead properties of http://... are copied to the vesion-controlled resource /foo.html, ...' Consider 'In this example, the version-controlled resource /foo.html is updated with the content and dead properties of http://...,' 5.1.2 DAV:root-version Consider renaming to DAV:initial-version 5.2.1 DAV:version-history Consider changing from (computed) to (protected). Consider defining in terms of DAV:version-set (5.1.1). 5.4 Additional OPTIONS Semantics Is it required that the history for the resource reporting the OPTIONS MUST be in the version-history-collection-set? Probably unnecessary since clients can get to the history via properties. Consider an example. 6.1 Working Resource Properties 'The server allocates a distinct new URL for each new working resource.' What does this imply? That the server cannot reuse working resource URLs once the working resource has been checked in or deleted? 6.3 Additional COPY semantics '...a new non-version-controlled resource at the destination...' consider adding 'with the same content and dead properties...' as written elsewhere in the document. 6.5 Additional CHECKOUT Semantics Additional Marshalling: 'The response MAY include a Location header.' How else would you find a working resource URL? Consider MUST. 6.6 Additional CHECKIN Semantics '...new version whose contents and dead properties are those of the working resource.' consider '...and dead properties are the same as those of the..' (DAV:delete-working-resource) '...if DAV:keep-checked-out is not specified, the' consider '...is not specified in the request body' (there are a number of places where it is confusing as to whether the element name given in text is a property name or an element in the request body. 7 Server-Workspace Option para. 4 Unless the URLs are relative, the workspace name will get in the way of testing. 7.2 Additional Resource Properties '...for an HTTP resource.' --> 'for a WebDAV resource.' (it has to support properties<g>). 7.2.1 DAV:workspace 'The DAV:workspace property of any other type of resource MUST be the same as the DAV:workspace of its parent collection.' But only when the immediate parent collection defines a workspace. 7.3 DAV:version-controlled-resource-url REPORT Consider moving this section after 7.4 MKWORKSPACE Method. Marshalling: 'The DAV:version-controlled-resource REPORT response body MUST be a DAV:version-controlled-resource XML element' --> 'The DAV:version-controlled-resource-url ...be a DAV:version-controlled-resource-url ...' (two corrections) What happens if the version-controlled resouce was deleted? 7.3.1 Example - DAV:version-controlled-resource-url REPORT >> RESPONSE xmlns definition should be moved out a level. 7.4 MKWORKSPACE Method (DAV:workspace-location-ok) Consider renaming to (DAV:workspace-lcoation-not-OK) [All other OK's have been caps. ;-] (DAV:initialize-workspace-properties) 'The DAV:resource type...' --> 'The DAV:resourcetype...' (DAV:initialize-workspace-properties) 'The DAV:workspace of the workspace MUST contain the request-URL.' consider 'The DAV:workspace property of the workspace MUST identify the new workspace.' i.e., let servers put some alias in there if they choose. 7.5 Additional OPTIONS Semantics para.2 'If a server support the ...' --> 'If a server supports the ...' Additional Marshalling: How would a server indicate that workspaces can be created anywhere? or here and below? 7.7 Additional VERSION-CONTROL Semantics (DAV:one-version-controlled-resource-per-history-per-workspace) '...there MUST NOT already be a version-controlled member of that workspace ... identifies a different version from the version history...' consider ' ... identifies any version from the version history...' (DAV:version-controlled-resource) '...whose content and dead properties are initialized by those of...' consider '...are the same as those of...' 7.7.1 Example VERSION-CONTROL ... '...the content and deap properties ... are those of the version...' consider '...are the samae as those of...' 8.2 MERGE Method Marshalling: '<!ELEMENT merge ANY>' '..., and at most one of any element that can occur in a DAV:checkout element.' This is too restrictive for future extensions, consider '..., and any legal set of elements that can occur...' (DAV:update-merge-set) '...and if DAV:checked-out version...' --> '..and if the DAV:checked-out version...' Final two postconditions of this method do not have any advanced status element defined. 8.3 DAV:merge-preview REPORT '<!ELEMENT merge-preview (update-preview-set, merge-preview-set, ignore-preview-set)>' Consider adding a '*' so that servers can generate these sets of XML on the fly rather than having to compute the entire set of each before responding. 9 Label Option para. 2 consider a forward reference to 9.3 Label Header para. 3 consider striking this paragraph -- although an interesting footnote it doesn't add anything and may even imply permission to create duplicate labels. 9.2.1 Example - Setting a label >>Request Why the change of XML layout? 9.8 Additional CHECKOUT Semantics postconditions 'If a version-controlled resource was checked out, ... the version-controlled resource MUST remain checked in.' Huh?? 9.9 Additional UPDATE Semantics Presumably the response is Bad Request if a client attempts to specify a contradictory Label and <DAV:apply-to-version/>. 10 Baseline Option The ascii art added nothing for me, consider striking it. 10.1.1 DAV:baseline-controlled-collection Consider (computed) -> (protected) 10.2.2 DAV:subbaseline-set '...a set of other baseline.' --> '...a set of other baselines.' 10.4 BASELINE-CONTROL Method Consider adding some descriptive text regarding creating a new baseline selector on an existing baseline. (DAV:must-have-no-version-controlled-members) Hmm, don't get why this one is required. postconditions: Consider each occurrence of 'the collection' --> 'the target collection' (DAV:select-existing-baseline) '...each version in the baseline, where the version-controlled member...' consider '...the baseline, and the ...' 10.5 DAV:baseline-comparison REPORT Marshalling: Why are the results not reported as sets in keeping with the other reports that respond with multiple URLs. Postconditions: This section still seems to be referring to marshalling rather than postconditions (of the repository) of the method as in other postcondition sections. 10.7 Additional OPTIONS Semantics Additional Preconditions: '... the response body MUST contain a DAV:baseline-controlled-collection-set element identifying which collections are under baseline control.' Eek, why would a client want this "global" information? I think this is too difficult to require all servers to supply, and will potentially make the OPTIONS request very expensive (IMHO clients presently consider OPTIONS to be cheap and send them frequently.) 10.10 Additional CHECKIN Semantics (DAV:create-baseline-version-set) '...the DAV:baseline-version-set of the new baseline contains the ...' consider '... of the new baseline version contains the ...' 10.11 Additional UPDATE Semantics (DAV:set-baseline-controlled-collection-members) last bullet point 'An UPDATE request MUST have been applied to each version-controlled member whose DAV:checkin-set does not identify a version in the DAV:baseline-version-set of the baseline.' consider '... whose DAV:checkin-set does not identify the same version ...' 10.12 Additional MERGE Semantics 'If the merge version is a baseline, the merge target is a baseline selector for the baseline history of that baseline, where the baseline-controlled collection of that baseline selector is a member of the merge destination of the request.' That deserves an award for the greatest use of the word 'baseline' in one sentence. Just read it very slowly. 11 Activity option para. 3 'Activity semantics then ensures that ...' --> 'Activity semantics then ensure that ...' 11.2.1 DAV:activity-set '...indicate to which logical changes this activity contributes, and on what lines of descent this version appears.' Surely '.. this version contributes...' what does 'and on what lines of descent this version appears.' mean? 11.3.1 DAV:unreserved all instances of 'checked-out resource' should read 'checked-out version-controlled resource'. para. 2 '... merge the latest version of that activity...' consider '... of the version-controlled resource in that activity...' 11.3.2 DAV:activity-set '...checked-out resource...' --> '...checked-out version-controlled resource...' Why not allow this property on checked-in and checked-out resources as a convenience? Just an idea. 11.5 MKACTIVITY Method (DAV:activity-lcoation-ok) consider renaming to (DAV:activity-location-not-OK) (DAV:create-activity) & (DAV:initialize-activity-properties) The corresponding postconditions for MKWORKSPACE do not distinguish these as separate advances status codes, this should be consistent. 11.7 Additional OPTIONS Semantics 'An activity collection MAY be the root collection of a tree of collections, all of which may contain activities.' I propose that this is true of all OPTIONS reported locations (e.g., DAV:workspace-collection-set) 11.10 Additional CHECKOUT Semantics Additional Preconditions: (both) 'If there is a request activity set, ...' consider clarifying with 'If the request body contains a DAV:activity-set element,...' 11.10.1 >>RESPONSE Does not contain a cache conrol header as required per 3.1. 11.11 Additional CHECKIN Semantics (DAV:linear-activity) An example of a '...resource MUST be in the DAV:predecessor-set...' (DAV:initialize-activity-version-set) An example of a '...URL for the new version is added to the DAV:activity-version-set...' Should be consistent about describing resources added to properties or URLs added to properties, otherwise the reader may think you are referring to differerent things. 11.(13?) Shouldn't there be Additional UNCHECKOUT Semantics to remove the checked-out version-controlled resource URL from a DAV:activity-checkout-set? If so, this is likely true for more methods that have additional CHECKIN/CHECKOUT semantics. 12.4 Additional PUT Semantics I know that I've been banging this drum for 12+ months. but I don't like the idea of <version URL>/member URLs. 12.9 Additional CHECKIN Semantics (DAV:no-eclipsed-baseline-controlled-collection-members) I don't understand the rationale for this precondition. 13.1.1 DAV:checkout-fork '<!ELEMENT checkout-fork (ok | discouraged | forbidden )>' Consider using ANY for future extensions. 13.1.2 DAV:checkin-fork '<!ELEMENT checkin-fork (ok | discouraged | forbidden )>' Consider using ANY for future extensions. 22 Authors' Addresses Check Jim W's contact details. 23.1.1 DAV:comment Why do we have an extra DAV:string element? Why can you have any number of them (how would a client choose which one to display)? 23.2 Response Bodies ... para. 2 '...each method precondition defined in this document...' --> '...each method precondition and postcondition defined in this document...' Should mention the purpose of the postcondition stati. '...the appropriate XML element MUST be returned in the response body.' --> '... in the response body unless otherwise negotiated by the request.' 23.3 Clarification of COPY ... para. 4. 'Roy Fielding (an author..' consider striking this paragraph (and moving it to the book of why) 23.4 REPORT Method Marshalling: 'The request body of a REPORT request...' --> 'The body of a REPORT request...' Minutae: (This stuff is way below trivia, but caught my eye when reading the document. I'm almost embarrassed to send these in.) Abstract Add comma after 'URL namespace versioning' 2.10 Additional COPY semantics Extra space before the text '(DAV:initialize-precursor)' 5.8 Additional VERSION-CONTROL Semantics (DAV:new-version-history) double space in '..for that version history that MUST NOT...' 5.9 Additional CHECKIN Semantics (DAV:preserve-version-history) the document already uses (DAV:preserve-history) consider consistent naming. 8.2 MERGE method para. 2 double space in '...the DAV:auto-merge-set property of the...' 10.11 Additional UPDATE Semantics (DAV:set-baseline-controlled-collection-members) double space in '... identifies a baseline, then the version-controlled...' 11.11 Additional CHECKIN Semantics (DAV:linear-activity) double space in '...the DAV:predecessor-set of the checked...' 23.5.1 Example - DAV:property-report >>REQUEST last three lines have extra space '</D:property >' --> '</D:property>'
Received on Wednesday, 17 January 2001 12:07:46 UTC