- From: <Bradley_Sergeant@intersolv.com>
- Date: Thu, 6 Aug 1998 17:31:27 -0400
- To: Bruce Cragun <Cragun.Bruce@gw.novell.com>, Chris Kaler <ckaler@microsoft.com>, David Durand <dgd@cs.bu.edu>, John Stracke <francis@netscape.com>, Sam Ruby <rubys@us.ibm.com>, Alan Babich <ABabich@filenet.com>, Sridhar Iyengar <sridhar.iyengar@mv.unisys.com>, Jim Whitehead <ejw@ics.uci.edu>, WEBDAV WG <w3c-dist-auth@w3.org>
In the following is a quick outline of a high-level approach to doing parallel development. I'm offering this as an example to see how WebDAV versioning can support it. A second issue is whether we can support it efficiently. By this I mean that the work that can be done on the server is actually done on the server. To what extent can WebDAV servers overload the functioning of CHECKOUT and CHECKIN with additional semantics? It is not my intention to suggest that we build in, let alone require, such high-level semantics in the WebDAV versioning model. --Sarge Versioning example: Parallel development for dummies: As an example, imagine a dispersed team is developing and maintaining a web site (or anything else). Each team member is responsible for a different aspect of the site. Most are content experts and not web developers per se. Normally each developer's changes are in different files or different parts of common files. The team works in collaborative mode most of the time. When close to a release date they switch to the end-game mode. The purpose of this scenario is to illustrate these two modes of development. Collaborative Mode This is a parallel development style of the simplest kind. Simple for the users that is. The check in and checkout commands are overloaded and perform higher level functions than in a typical serial development model. Each developer does a checkout of the files they want with a lock. This always succeeds. They modify the files and check them in as a unit (a set of changed files). If there are no conflicting parallel changes then all files are checked in, comments applied, labels set or moved, etc. If there are conflicts, say one file of five, the non-conflicting files are not checked in. The one conflicting file is automatically checked in on a branch (for safe keeping), and then automatically checked out with a lock on the tip (latest revision of the original line of decent). Then this tip revision of the file is automatically merged with the branched revision in the working area, but not checked in. At this point the developer, having been told that conflicts existed and need resolving, is free to examine the conflicts and the merge hints that the system may have suggested. More editing and testing may be in order. When the developer has resolved the conflicts the check in is performed again. If the merge step is also done with non-exclusive locks then this step may need to be repeated. Optionally, if exclusive locks are used for the merge step, then the auto-merge step will fail if another user is already doing an exclusive merge on the tip. Notes on Collaborative Mode: 1. Checkouts are done within the context of a particular line of decent (branch), normally the mainline (trunk). 2. Works well with lots of small changes performed over a short period of time in different parts of the system (with relatively few conflicts). 3. Does not work as well with major changes diverging over a long period (with many or complex conflicts). 4. Very popular with content oriented developers. Reduces the conflicts and blocks with getting files changed. 5. Differs from the usual parallel development style in that users do not normally have to deal with creating and managing branches. The system does this for them. 6. This mode does not provide all capabilities manual branching can accomplish. Rather, it is a way for providing simple support for safer parallel development. 7. The automerge functionality is optional, and can simply provide both copies of the file to be hand merged. It can also do real merging, identify conflicting records, and allow the user to choose. BTW, binary merging can also be done in a general way, as long as there is a general way of specifying the record boundaries. But I think this is beyond the scope of what WebDAV needs to worry about. End Game Mode. When approaching a release it becomes important for the development team to stabilize the system. Exclusive locks are used to prevent conflicts in individual files. Fixed labels are applied to all files as part of a process to create baseline configurations of the system for evaluation. Essentially, during the end game the development style becomes more sequential, less parallel. Both styles of development can be used on the same project at the same time. The assumption being that one group is in process of releasing, while the other is pushing forward with new development. However, if the end game mode developers hit conflicts from the collaborators they will end up creating branches. These branches generally turn into dead-ends, with selective merging back to the mainline.
Received on Thursday, 6 August 1998 20:54:21 UTC