From: Jeff_McAffer@oti.com (Jeff McAffer OTT) To: gclemm@tantalum.atria.com (Geoffrey M. Clemm) Cc: ietf-dav-versioning@w3.org (ietf-dav-versioning) Message-ID: <1999May10.114846.1250.1174242@otismtp.ott.oti.com> Date: Mon, 10 May 1999 11:49:50 -0400 Subject: RE: Configurations: A Compromise Propos I don't want Geoff and my disagreement on this issue to cast a pall over the proposal as a whole. This is a minor point in the grand scheme of things and short of this, I restate that I agree with the "compromise" proposal. Having said that, on with the disagreement... > From: Geoffrey M. Clemm [mailto:gclemm@tantalum.atria.com] > > From: Jeff_McAffer@oti.com (Jeff McAffer OTT) > > Configurations are exist primarily to recover known > states. This is similar to copying or archiving (zipping) > files. If I > were to add a directory "foo" to a zip file I get a choice of: > 1) adding just the children of foo in a flat way > 2) adding foo and having its children appear under foo in > the archive > Configurations as proposed are like #2 but you loose the > name "foo". You > > know you have some directory in the archive, you know the > names of the > members in that directory but not the name of the directory. > > The analogy with a zip file is likely to be misleading, since a zip > file creates a copy of a set of data, not a mapping, but lets see > what we can do with it. Actually, I disagree but realize the analogy can only be pushed so far. I disagree because whether or not the data bytes are copied is irrelevant. Imagine that Zip/tar just captured the FAT or inode to block mappings rather than copying ... > When you "zip" a file, you are not only putting your tree onto the > tape, but you are *also* modifying a single collection (named "/") > that already exists on that tape. If you chose to modify > that collection > by adding a member by the name "foo", that's fine, and now the zip > file knows that you want that subtree to be named "foo". > > If you recognize that "/" is itself a resource that must be modified > if you want to have a member called "/foo", things become clearer. > In your examples, (1) is modifying "/" to contain trees whose > names are the same as their binding in "foo", and (2) is modifying > "/" to contain a single tree, which you have named "foo". > In the first case, you are editing "/" and adding baselines of each > internal member of "foo", and in the second case, you are editing "/" > and adding a single baseline. The name you wanted to remember is > captured by your edit of "/". yes. I fully understand how names of resources are captured. The issue is not *how* it is done but *who* does it! Notice in your description you talked about "/" already existing etc. "/" was provided by the system. Users are not forced to create "/". Its just there. Under the covers there are inodes, FATs, blocks ... but users don't care, they just copy "foo" and then see "foo" in the list of contents of "/". I am proposing a somewhat analogous setup for configs. I argued that if you leave it up to the programmer (after all, it is she who has to create the "root" colleciton and then add the real roots) and to convention, that it was 1) too much work (in terms of round trips and coding) 2) open to inconsistency because it is just a convention #2 is the one that bothers me the most. Say I use the convention that I always use a name-capturing-root-collection. All my code is written to take a config and strip off the root to get the list of the real roots (vice versa for creating configs). say you're system doesn't do this because you don't care about root names. Lets assume that my system is resilient to this and (conceptually) can choose names if none exist. How does my system tell what the "real" roots of the config are? My configs have name-capturing-root-collections but yours don't. The issue is not deriving the names but the ambiguity in determining the real roots. The name-capturing-root-collection is not part of my domain. It is a mechanism I was forced to inject to retain the names of my domian roots. As for #1, it is unclear to me what roundtrips would be required to do all this. Here is what I think might be going on. Perhaps one of the protocol gods can write the correct version? 1) MKCOL to create the name-capturing-root-collection. 2) MKREF/BIND (or whatever the current incantation is) to add each "real root" to the naming collection. (can be done with one call for all?) 3) Create configuration 4) add COL #1 to the config 5) snapshot the config Versus 1) Create configuration 2) add the real roots to the config (inherently remembering the root names) 3) snapshot the config I could imagine (and wish for) a protocol which combined the create config, add roots and snapshot into one round trip. In that case, the ratio is even worse! (3:1 rather than 5:3). > You could just as easily have the convention that there is an extra > collection that contains all the top level names. A tool strips off > this top-level collection, but uses it as a hint of what the names > of the children should be. If the tool choses not to use the > old names, > there is no confusion ... they are just part of the stripped > off parent, > not part of the child where they might collide with reality. Exactly! except I am arguing that this be provided by the system in (perhaps) the form of a property on the configuration. The property has this name-capturing-root-collection and is created/maintained for you when you put roots into the configuration. > Having the computer "do some work" (they're really good at that :-) > is much better than leaving incorrect or misleading "naming" > properties > around on resources. If you tell me the protocol will be such that the same number of round-trips will be required then I remove this objection. Otherwise round-trip count rules. > The convention that you have a top level collection that gives a name > to all its internal members is no harder for programs to deal with > than a convention that asks them to look for some "suggested-name" > property when they use a configuration for the first time. > It certainly > isn't ambiguous. If there is no "suggested-name" property (or it is empty) then I know there are no suggested names (unambiguous). With the name-capturing-root-collection *convention* I have no way of knowing if the creator of the config was adhering to the convention or not (ambiguous). Further, with the property approach, I *know* that the roots in the config are the "real" roots as they exist in my domain (again, unambiguous). Jeff BTW, are we imagining that configurations have names?