From: jamsden@us.ibm.com To: ietf-dav-versioning@w3.org cc: minutes@ietf.org, Patrik Fältström <paf@swip.net>, ned@innosoft.com Message-ID: <852568BA.004B981D.00@d54mta03.raleigh.ibm.com> Date: Fri, 7 Apr 2000 09:45:31 -0400 Subject: IETF 47 Delta-V Working Group Notes Notes from the Delta-V working group meeting at IETF 47 in Adelaide. Jim Amsden jamsden@us.ibm.com Mailing List: ietf-dav-versioning@w3.org Send a subscribe to ietf-dav-versioning-request@w3.org 2nd WG Meeting, 1st at December IETF. Has been going on a while, "informally". Put together a charter, got WG status last year. Approximately 20 participants present Special thanks to Kelly Morse Johnson for taking notes! Review of Working Group Status/Charter Review Versioning Scenarios * explore common use cases * understand versioning mode/semantics * see how the protocol supports the versioning mode Explore Issues * locking * static vs. dynamic workspaces * repository and down-level clients * handling default revision selection * configurations vs. baselines -=-=- Where we're at: There is a charter, it has a schedule. Go look at it. We are on or slightly ahead of that charter. Have a design team - no membership requirements. Want to hold DT meetings between WG meetings and during IETF. DT is smaller group of dedicated folks doing the bulk of the work. Focus has been to make sure we are supporting entry level capabilities. 2 sections, basic/core and advanced. WebDAV Implementations, see: mod_dav <www.webdav.org> (Apache module in C) DAV4J <www.alphaworks.ibm.com> (protocol agnostic, supports backends) (a Java servlet) others listed at www.webdav.org Experience so far: has been some controversy: Feb DT meeting was interpreted as an interim meeting - misunderstanding - it was a design team meeting that was not intended to substitute for a WG meeting. WebDAV trying to finish the advanced collections specs. Versioning is dependent upon Binding. Access Control: In WebDAV. Had a BOF at December 98, kind of a disaster. A lot of poor communication. Left a negative feeling in a lot of participants. Pretty much dropped until very recently. The spec that was supposed to have been reviewed, is now being reviewed. Spec hasn't been updated, tho. Jeff Clemm now involved. ACLS is probably going to re-surface. JAVA2, ACLS model in Windows, SecureWay from IBM, any commonality that WebDAV can map? Interop between servers the goal. Lots of activity on the webdav mailing list. *** Need to correct the examples and scenarios to correspond to the updated versioning spec. Important to keep these in sync as protocol implementors sometimes implement to the examples when the spec is unclear or ambiguous. Walk through the scenarios: Assume there's a WebDAV server with no resources on it currently. 1st thing to do is create some resources. Then update a resource. Put the resource under version control (WebDAV version extension). Now that it is versioned, you can no longer PUT to it, but you must work within the versioning framework. Check out a versioned resource to permit updates. Once you have a versioned resource, you must specify which revision you want to use, not just the URL. Workspaces. Everyone wants to be able to work in an independent space with some common team integration area. This is a workspace. It is a resource on the web, and specify what resources and revisions of resources you want to see. Revision can depend on your workspace. <method> <target> For example: GET /foo.html Host: a.b.com Workspace: /workspaces/jim.wks - or - Revision-Selector: beta2 (specify workspace which specifies the interesting revisions, or specify a revision label, or the server can specify a default workspace and return the version in that WS (could be "latest" revision)) It would have been nice to have a combined URL with a revision specifier munged together. Told by someone? that clients can munge URLs, but servers can't. Issues with down-level client? Workspaces are the identifiers for a Working Resource. A token that identifies a WR. WS really can be a very lightweight concept. Do a PUT to save your changes, but your changes won't get put into the repository until you actually check the resource back in (CHECKIN). Can do many PUTs, but must use CHECKIN to create the new revision with your changes. Put human-meaningful labels onto a revision (LABEL). UTF8 charset. Can use labels to get old revisions, labeled revisions, define a label for your workspace. Static and Dynamic workspaces: A dynamic WS has a revision selection rule to specify a set of revision selectors. Dynamic WS automatically update the selection revision if it changes (label moved, etc.) Static WSs are just like CVS directories. (Supports "team stream" model) Dynamic WSs is like Clearcase. Can use merge or compare - will actually do the merge, or just tell you what has changed, been added, or removed. *** WG: Dynamic WSs may be dropped in the short term, or simply not be precluded. Default WS must be dynamic, else who would refresh it? Make it so that WSs remember what you put into them. When you check in something, the workspace remembers and keeps the resource in your WS. The resource just becomes immutable, but still remains in your WS after checkin (a good thing IMO). *** Don't use 404 if resource revision isn't found? When you do a CHECKIN, there is a checkin policy which specifies how the checkin should be done in order to be successful. When you check in an item, it provides a bunch of properties. If the properties can't be set, or the server can't do what the properties specify, the checkin won't succeed. Interim checkins (check this in, but I want to keep on working on this resource). ***Should be inforced on both CHECKOUT and CHECKIN. Advanced Versioning: * Activity - some unit of work that you are doing (label of a line of descent), multiple resources all associated with a change set. * Workspace with RSR (Revision Selection Rule) (mutable set of revisions) * Configuration - immutable set of revisions, like a product. Reproducable set of revisions. Can version it, check it in. * Merge - munge together 2 versions of a resource with different lines of descent and bring the lines of descent back together until there's no more conflicts. Can merge 2 workspaces together (catchup/release cycle). * Versioned Collections Activities: MKRESOURCE explicit resource creation method (as opposed to a side effect of a PUT). Create a resource and set its properties in one atomic operation. *** Eliminate idea of current activity and current label? Unnecessary with static workspaces? *** Activities are not really coupled to workspaces anymore. Check out a number of resources within the context of the same activity. Can create a "labeled configuration". Just add the same label to all the desired revisions. (Can then move the label, thus no longer conforming exactly to the configuration...) Can add member revisions to a configuration. public prototypes: mod_dav is open source. doesn't do anything with versioning at the moment. written in C. dav4j will be available as source soon. platform for exploration of webdav.