From: jamsden@us.ibm.com To: ietf-dav-versioning@w3.org Message-ID: <852568AE.0015A7B4.00@d54mta03.raleigh.ibm.com> Date: Sat, 25 Mar 2000 21:42:34 -0500 Subject: WebDAV Versioning Scenarios Thanks again Tim for an extremely valuable piece of work. Here's my review of version 00.1 with additional comments based on our new model for workspaces. Just to summarize, I think there is a real simple way to describe the new workspace semantics that is fully consistent and conpatible with existing semantics. It goes something like this: A workspace describes dynamic or variable a set of revisions. It represents a place where a client or group of clients does work by making changes to resources directed at some desired end result. A workspace has a revision selection rule that describes the revisions that were selected by the workspace creator. A workspace MAY dynamically update its contents based on changes in the revision selection rule, or changes to resources managed by the server, e.g., creation of new versioned resources, labeling revisions, checking in working resources in an activity, updating a configuration, etc. However, a server is not required to support dynamic revision selection. Clients can use the REFRESH method to update the contents of a workspace at any time. On REFRESH, the contents of the workspace is refreshed with revisions as specified by the revision selection rule, except for existing working resources. When a workspace is first created, it MAY be empty. The first REFRESH populates the workspace with selected revisions. On servers that do not support dynamic revision selection, the revision selection rule only documents the revisions that were selected on the last refresh, and cannot be relied upon to accurately reflect the exact revisions that are contained in the workspace. Another refresh may be required to update the revisions selected by the workspace. So we need to make some minor changes to the existing scenarios, and add a few new ones. First, the updates to the existing scenarios, and some questions. - 2.4.2: I think a server has a default workspace, not a revision. Having a default workspace per revision is just too complicated to administer and predict. - So you're proposing that the workspace as a "checkout token" has to be created and used by the client, not automatically created and by the server and returned to the client? I agree with this approach. It's a little more work up front for the client, but it provids a way for the client to specify a context in which subsequent work is done. - 2.4.3, first paragraph: ... request instructs the server uses the default -> to use the default... - 2.4.4 Shouldn't there be a Workspace header for specifying the workspace? Then the Target-Selector header can be used to override the revision selected by (or currently in) the workspace. - 2.4.4 The response has the same content as the header. What's it for? - Why DAV:workspace-resourcetype instead of just DAV:workspace like DAV:collection? <D:resourcetype>D:workspace-resourcetype</D:resourcetype> seems pretty redundant. - 3.2.4 Target-Selector is playing two roles: specify the revision to checkout, and specify the workspace to identify the working resource. These roles should be split into two headers, a Workspace header and a Target-Selector header. There are times when the client wants to checkout a different revision than the one currently in their workspace. For example, if the server doesn't support dynamic revision selection, and the user wants to be sure to checkout the right revision. In any case, the overview should enumerate both roles. - 3.4, 3.5 can delete these sections because of new workspace semantics. There is no need for workspace current-label or current-activity. Revisions can't disappear from a workspace on checkin. Current-activity can now be a parameter of checkout, checkin, or both. - 4.5 Update to show static and dynamic revision selection. - 4.5.3 Add a note that the workspace MAY not contain the revisions indicated by the revision selection rule until a refresh is done. - 5.2 Note that I do not thing a configuration is a checked in workspace. I think there are may reasons to keep these concepts separate. One might be derived from the other, or have a common parent (a collection), but they're not the same thing. - 5.5 Indicate the workspace may need to be refreshed first. - 7. Delete this section. I think baselines are unnecessary additional complexity and their behavior is covered by configurations. New scenarios needed: - Create a new basic workspace without a revision selection rule. In this case, the workspace only acts as a selector for working resources. It plays no other role. - Create a new workspace with a revision selection rule, on a server with NO dynamic revision selection. The workspace contains no revisons. Is really the same as a basic workspace in that it can be used to select checked out working resources. - Refresh a workspace to populate it with the revisions selected by the revision selection rule. - Make changes to resouces that would result in a different revision being selected by a workspace. e.g., move a label that's in the workspace revision selection rule. - Show that the workspace contains a different revision than the newly labeled revision. - Refresh the workspace. - Show that the workspace now contains the newly labeled revision. - Same scenarios with a server that does support dynamic revision selection. Show that the workspace contains the newly labeled revision after the LABEL operation, and the Refresh is a no-op. - Checkout makes the revision in the workspace an editable working resource in that workspace. - Checkin creates a new (potentially) immutable revision, but leaves the revision in the workspace. No need for current label or current activity for this to work. - Merge a workspace into another workspace generating a conflict report using the MERGE method. Show how the merge method on revisions resolves the conflict. - Designate one workspace as the "team", or "integration" workspace. Designate another workspace as a user's "working area". Show how the user's workspace can catch up with the team by merging the team workspace into their workspace. Show how the user can release their changes to the team by merging their workspace into the team workspace. - Show how a server can support many team or integration workspace, and many user working area workspaces. - Need down-level clinet scenarios that use the default workspace and auto versioning. - Create a configuration from a workspace by selecting the revisions currently in the workspace. May want to do a refresh or merge on the workspace first to be sure it has the expected revisions. (This might be the only way to create a configuration. We have to think about this).