Date: Sun, 31 Jan 1999 00:28:44 -0500 Message-Id: <9901310528.AA23157@tantalum> From: "Geoffrey M. Clemm" <gclemm@tantalum.atria.com> To: sv@crystaliz.com Cc: ietf-dav-versioning@w3.org In-Reply-To: <005201be4cbc$f3cb4460$944406d1@honey-bee> (sv@crystaliz.com) Subject: Re: Fw: Discussion Topic: Simple Version Selection and Checkout I think that Sankar, Jim, and I all agree on the key point, namely that users (and tools) want to deal with normal understandable URL's, not URL's that have been munged and mangled with labels or server-defined transformations. So both Jim and I have proposed that all mapping be done by headers and resource properties, not by URL-munging. I had proposed that Document Management have one property and header (namely, a Mutable-Revision-Name) and Configuration Management have another (a Workspace). Jim proposed that we simplify the protocol and just use a Workspace in both cases. (And I like Jim's proposal better than mine.) So these "labels" that Jim and I talk about are just something that the client uses to tell the server what the user wants to see in a given workspace, *not* something the user needs to explicitly manage. To confirm we're all on the same page (or at least, in the same book :-), I'll go over Sankar's note in detail. From: "Sankar Virdhagriswaran" <sv@crystaliz.com> >What other "manual" selection are you suggesting that would not involve >something like labels. A URI is a name of a resource. A label is just a >name of a particular revision of that resource. It appears that you and Geoff are actually in disagreement about the above statement (correct me if I am wrong). In preceding protocol proposals, a label has always been a name, while in my recent proposal, I have suggested we make it a URL. This change has the very limited purpose of making label updating more reliable. In my proposal, you cannot use a label URL to see the body of a resource, (you would have to use a vportal in a workspace to do that), so Jim and I agree on the functionality that a label should (and should not) provide. Anyhow, I have a specific use case point and a broader architecture point. 1) Architecture point Let me start with the architecture point. Configurations, IMHO, define an alternate namespace. The objects associated with the names could be 'bound' using a one to one mapping between names and objects and using a selection rule based on attributes of the object. In my proposal, I was using the term "configuration" to refer to an immutable resource that does the first kind of mapping (i.e. 1-1 mapping between names and immutable-revisions), and the term "workspace" to refer to a resource that defines a mutable mapping via a revision selection rule. The labeling scheme I thought was the second kind Yes. and the explicit naming as seen in traditional version control system I thought was the first kind. You find both concepts in most traditional version control systems. In particular, you find some persistent mapping of names to immutable revisions (e.g. a file containing an "S-List" in traditional SCCS systems), and a workspace or "sandbox" where a mutable mapping is located. I would like to see the architecture of the configuration namespace mechanism to be similar to other namespace mechanisms inside DAV and outside so that one could leverage implementations and implementation experience. In particular, if you look at the ADSI spec. from Microsoft or JNDI spec. from Javasoft, they provide two ways of resolving names to objects - explicit naming and selection by attribute. The collection mechanism in DAV (should) also provides similar mechanisms. If our scheme is similar in nature, we could use leverage implementations and expertise across different types of namespaces, but using the same type of framework. We need to be a little careful about where we look for analogues. The problems faced by parallel development, with branching and merging, introduces complexities that are often ignored by general namespace mapping mechanisms. In particular, the notion of a set of changes that need to be applied together is a key notion underlying effective version management, which makes it more akin to database transactions, than to namespace management. But we *also* want to manage the namespace, which is what makes the problem so "interesting" (:-). 2) Use case point ..., in authoring documents, it makes it much easier if explicit names are used to do link checking and deployment. Yes, I (and I'm sure, Jim) completely agree, as long as the explicit names are not to specific revisions, but rather to "what your workspace is currently selecting at this URL". If instead you try to store explicit revision URL's in your documents, (not that you were suggesting this, but just to emphasize the point) any update to a document requires finding and updating all other documents that pointed explicitly to the previous revision of that document. Since all those other documents are under version control, they need to be checked out and a new revision created for them as well, which means all references to *them* must then be checked out and revised, which means ... any change pretty soon requires a modification most documents in your web site (not to mention all documents outside your web site that stored explicit revision references). It's this scenario that makes us pretty devoted to the "everything goes through a workspace" approach. I have sense that you folks think of a configuration or workspace in the software development sense of the word. One could think of an HTML document itself as a configuration. In this case, an author will not typically be referring to (i.e., linking to) multiple versions of the same document. The author would like to refer to a linked document with an explicit URL reference. In this kind of authoring mode, selecting a URL of a linked document using labels is foreign to the author and more importantly to the authoring tool. We need to carefully separate what the user sees and does (which is defined by his GUI) from what protocol the client uses to communicate this to the server. The user can say "I want a new revision of this URL". The client then can ask the server to create a new revision (CHECKOUT-NEW), and then ask the server to place a label on this revision so that it will appear in the user's current workspace. The user gets to see the desired new revision, and never has to know anything about labels. I am making several points here: a) That document authors would prefer to use direct and explicit references ( use case style point), and Agreed, with the caveat above that these are direct and explicit references to workspace URL's (what the protocol calls "vportals"), not to specific revisions. b) Tools such as link checkers and deployers can deal with explicit references much more easily than resolved names based on attributes (i.e., labels) Yes. (The server does all the workspace name-mapping for those tools). c) If one were to consider an HTML (or XML + XML Link) document itself as a configuration, then label based selection involves cooperation by authoring clients. I believe that this would be harder to achieve as compared to browsers/DAV clients providing the same functionality. I didn't follow the point being made in c). Does this all make sense to you folks? Bottom line: I am arguing for providing explicit names and attribute based selection. I am also arguing that the specification of this part of the protocol should be similar to DAV collections and other namespace/directory mechanisms out there. Explicit names: Yes, but not to specific revisions. Attribute based selection: Yes, in a workspace revision-selection-rule. Similar to DAV collections: Yes, in that it is based on DAV collections (i.e. a DAV collection provides a single segment in the URL path). Simiilar to other namespace/directory mechanisms out there: Well, depends on which other mechanisms, and what you mean by "similar". Cheers, Geoff