From: jamsden@us.ibm.com To: ietf-dav-versioning@w3.org Message-ID: <8525684E.007C58A9.00@d54mta03.raleigh.ibm.com> Date: Tue, 21 Dec 1999 16:37:41 -0500 Subject: Re: MKRESOURCE results I agree with Geoff that the initial revision resulting from MKRESOURCE isn't that big a deal. It's not really an empty root though as the properties are initialized. This really brings back up a problem with MKRESOURCE in that it only initializes part of the state of a resource. Ideally it would initialize both the properties and contents. So I can live with c) too. "Geoffrey M. Clemm" <geoffrey.clemm@rational.com>@w3.org on 12/21/99 11:09:19 AM Sent by: ietf-dav-versioning-request@w3.org To: ietf-dav-versioning@w3.org cc: Subject: Re: MKRESOURCE results From: Tim_Ellison@oti.com (Tim Ellison OTT) <geoff> I prefer a third alternative: one revision (with default values for all properties and an empty body) and one working resource (checked out from that revision. It is the working resource that the PUT or MKRESOURCE is applied to. </geoff> This is going to leave lots of clutter in the version history. I'm not sure that an empty "root" revision in a revision history is reasonably classified as "lots of clutter". And as you say below, any client that feels this is "clutter" can just hide the initial empty revision. Essentially, every versionable type that was created in a versioned collection will have a phantom revision that was never intended to be part of the development ancestry. The empty root revision often comes in very useful when you have selected a collection revision that has a particular versioned resource, but you don't want to select any revision of that versioned resource. The empty root revision effectively captures "the state of that object before it had any work done to it". In addition, a variety of operations (such as "compare my contents to my predecessor") are much simpler to write when there is an empty initial revision. Another example is when you are creating a new baseline for an existing versioned collection, but it is not based on any previous baseline. With the empty initial revision, you have a reasonable predecessor. An analogy is that "zero" is a very useful number to have around. I can imagine clients trying to hide that revision when giving users the option to rollback to an earlier state. I agree. Which is one reason I don't see any harm (and do see benefits) in having an empty initial revision. Summary of options thus far, (a) one revision, no working resource, (b) one working resource, no revisions, (c) one revision, one working resource, (d) change the rules for members of versioned collections, (i.e., no longer have to be versions.) I don't like any of them! but I like the spirit of (b). "d" stands for "disaster" (:-). In particular, it would require that workspaces have "coupled" behavior (i.e. changes in one workspace must be made immediately visible to others, thus breaking most distributed workspace performance optimizations). "b" leaves you with "no predecessor of your working resource" and resulting strange behavior for "uncheckout" (does the versioned resource disappear?) "a" leaves you with an initial revision with meaningless content So I'm a big fan of "c" (for "correct choice" :-). Cheers, Geoff