Subject: Overwrite:T behavior for COPY

From: "Geoffrey M. Clemm" <[email-masked]>
Date: Thu, 21 Dec 2000 11:55:55 -0500 (EST)

In the versioning protocol, it is very important to give a client the
ability to update an existing resource via a COPY.  Unfortunately,
2518 currently says that a COPY with Overwrite:T MUST delete the
destination resource first, which means you are not updating the
resource, but rather are creating a new resource.

For versioning, this means that a COPY whose Destination is a 
version-controlled resource creates a new non-version-controlled
resource at the Destination, rather than adding a new version to
the version history of the version-controlled resource.  This
"delete" behavior has similar bad interactions with access control,
since someone that is allowed to update a resource, but not allowed
to delete that resource, would not be allowed to execute the COPY.

In earlier versions of the versioning protocol, a new value, "update"
was proposed for the Overwrite header (in addition to "T" and "F"),
to support this update behavior of COPY.

Alternatively, one could introduce an "Update" header.

A third alternative was suggested at the recent IETF meeting
by Roy Fielding, namely, that the "update" behavior was actually
the behavior intended for COPY with Overwrite:T, so the
right thing to do is to make this clarification in the
versioning protocol, rather than introducing a new "update" value
for Overwrite or a new Update header.

The consensus of the attendees of the WebDAV working group meeting
was to follow Roy's suggestion, and use this third alternative,
so this is what now appears in the latest versioning draft (10.11).

Does anyone object to this third alternative?

In particular, note that this does result in different behavior when a
collection is being copied.  In particular, the "delete" semantics
removes members that are currently in the destination but do not have
corresponding members in the source, while the "update" semantics does
not remove any members, but only updates existing members and adds new
members.

Note: Please comment on this soon, since the current plan is to submit
the versioning protocol to the IESG in January.

Cheers,
Geoff

---

From: John Stracke <[email-masked]>
Date: Thu, 21 Dec 2000 12:18:09 -0500

> for Overwrite or a new Update header.

Should this be in the versioning protocol, or in an update to 2518? (Or
is it intended that the versioning RFC update 2518?)

--
/==============================================================\
|John Stracke    | http://www.ecal.com |My opinions are my own.|
|Chief Scientist |=============================================|
|eCal Corp.      |Belief is not relevant to truth.             |
[email-masked]|                                             |
\==============================================================/

---

From: "Geoffrey M. Clemm" <[email-masked]>
Date: Thu, 21 Dec 2000 17:12:17 -0500 (EST)

From: John Stracke <[email-masked]>

This is something that is needed by the versioning protocol, but which
is of sufficient generality as to be a reasonable candidate for
inclusion in an update to 2518.  So it MUST appear in the versioning
protocol (since we don't want to delay the versioning protocol until
an update to 2518 is completed), and they SHOULD appear in the update
to 2518.

Cheers,
Geoff

---

From: Greg Stein <[email-masked]>
Date: Fri, 22 Dec 2000 01:53:40 -0800

On Thu, Dec 21, 2000 at 11:55:55AM -0500, Geoffrey M. Clemm wrote:
>...

I've always viewed it this way, and consider the whole "DELETE first" thing
to be awfully pedantic.

>...

Not me.

> not remove any members, but only updates existing members and adds new

Not at all. If I want directory DA to overwrite directory DB, then the
result should look like directory DA. That means deleting the stuff that
wasn't in DA.

And to throw back some of your semantics :-) ... DA is a set of bindings.
That set overwrites the set in DB. Bang! There goes the spurious stuff that
was in DB. Theoretically, you don't even have to copy resources... just
adjust the bindings to the resources. :-)

[ yes, I tend to avoid the whole "directories are sets of bindings" view
  because it is a rather awkward viewpoint sometimes. but it is oh-so-fun to
  throw that back at people when they suggest a semantic that is
  non-intuitive :-) ]

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

---

From: "Geoffrey M. Clemm" <[email-masked]>
Date: Sat, 23 Dec 2000 00:15:38 -0500 (EST)

From: Greg Stein <[email-masked]>

That would be fine with me.  I'll make that change if nobody objects
(it has the *major* benefit that it then is virtually identical to
what 2518 says today, except you don't delete unless you have to).

   And to throw back some of your semantics :-) ...

Oh, please don't toss me into that briar patch Brer Fox! (:-)

   DA is a set of bindings.

Yes, I'd much rather go with the bindings-style semantics (for one
thing, that's how versioned collections and baseline UPDATE's are
defined, so this would make the versioning protocol more consistent).

Cheers,
Geoff