Date: Wed, 14 Apr 1999 22:36:15 -0400 Message-Id: <9904150236.AA07108@tantalum> From: "Geoffrey M. Clemm" <gclemm@tantalum.atria.com> To: sv@crystaliz.com Cc: jamsden@us.ibm.com, ietf-dav-versioning@w3.org In-Reply-To: <000701be8679$21e56880$e6ea7392@honeybee> (sv@crystaliz.com) Subject: Re: WeDAV Versioning Summary From: "Sankar Virdhagriswaran" <sv@crystaliz.com> You folks a put in a lot of good work and I hope you folks don't get frustrated with these questions. Not a bit! The easy questions are good because they're easy, and the hard questions are good because they make us go back and either fix the design or figure out a way to describe it more clearly. Now for some questions and concerns about the current model: 1. I think workspaces are getting overloaded. In the past, we had talked about workspaces as a view on to the underlying data (versions, configurations, activities). I was happy with this. Now, it appears that workspaces are also the place where merge will happen. Depends what you mean by "where the merge will happen". The workspace is definitely the object that you query for "conflicts". Since it is the object that does dynamic version selection, it's really the only object that could detect and report the presence (and then absence) of conflicts. For servers that support automatic merging, you can "query" for new revisions rather than create them by checkout/checkin, but since that is currently expected/desired by very few clients, we have not put in any protocol support for it. This enforces a workflow model on merge processing. Not sure what you mean by that. Could you expand a bit? Because of this imposition, we have to worry about authority/responsibility implications (e.g., access control, role related views, private/public, etc.) on workspaces. Since the workspace is where you make changes, these issues naturally arise, but providing a "list conflicts" operation on a workspace does not change/increase these issues. The key operation that requires control is "checkin", and that is independent of merge support. Finally, on the face of it, it appears to limit the workflow model to a two level organization - not a many level nested organization of activities. I don't see how that could be. You can have as many workspaces as you need, and organize them in as many levels as is appropriate (i.e. development workspaces delivering changes to integration workspaces delivering changes to testing workspaces delivering changes to release engineering workspaces ...). I'll be proposing a couple of workspace properties that should make this clearer (in fact, I promised them to Jim Amsden about a month ago ... hopefully I'll get to it as soon as we have advanced collections bindings nailed down :-). 2. Are you going to be publishing an object model for this summary as you did before? In particular, I am confused about the relationships between workspaces, activities, configurations. Yes, both Jim and I maintain various Rose models, but getting them into ascii art is always a bit of a hurdle (:-). I'll try to get mine current, and make it available in some form. For example, the text says that a workspace contains 'a current' activity. But, this is not true if the workspace is also going to be used for merging. The "current" activity is the activity that determines what activity your working resources will be associated with (and therefore, with what activity the revision resulting from checking it in will be associated). This is true whether you are just checking out revisions for performing a merge, or for any other reason. The activities that specify existing work that you want to merge are specified in the revision selection rule. At steady state, a workspace may contain many activities that are being merged. Am I confused? Those are the ones in the revision selection rule (and the revision selection rule can specify as many activities as you need). So you can read as many activities as you want, but you can only write to one activity at a time. 3. For the above two reasons I would recommend that we separate the notion of workspace from the notion of where merge processing is done. While the idea of a 'place where work is performed' is common to both of them, the workflow and other implications are different. Since the only support we provide for merge processing is "add activities to the revision selection rule" and "ask the workspace for a conflict report", I don't see how this could be done other than in the context of the workspace (which is responsible for revision selection). 4. Also, I would like to see the object model for 'activity'. I am a little confused about the semantic model for what an activity is. An activity is just a set of revisions. The primary constraint on an activity is that the revisions of a particular versioned resource associated with a particular activity must all be on a single line of descent, so that there is always a unique "latest" revision in that activity for any versioned-resource. When an activity is placed in a revision selection rule of a workspace, that rule selects the latest revision of a versioned-resource that is associated with that activity. Some servers will also support a "date" filter on the activity, which causes the workspace to select "the latest revision before that date" in the versioned resource. In order to guarantee those semantics in a distributed environment, an activity can only be "active" in one workspace at a time. In order to simplify revision selection semantics, a revision can only be associated with a single activity. That's about it! Cheers, Geoff