- From: Jim Amsden <jamsden@us.ibm.com>
- Date: Mon, 20 Aug 2001 10:53:08 -0400
- To: ietf-dav-versioning@w3.org
Lisa,
There did not seem to be sufficient support from the working group to
warrant introducing an unversion method at this time. I can see you
concerns though, and suggest this would be an appropriate topic to bring
up again when we move DeltaV from Proposed to Draft standard after there
has been more implement experience for both clients and servers. In the
meantime, see the additional comments below where I've attempted to
address some workarounds for your concerns based on the current protocol.
"Lisa Dusseault" <lisa@xythos.com>
Sent by: ietf-dav-versioning-request@w3.org
08/18/2001 01:27 AM
To: "DeltaV" <ietf-dav-versioning@w3.org>
cc:
Subject: Making resources unversioned
At the DeltaV meeting in London, we discussed how to make a resource
unversioned. We determined that the current method currently proposed in
section 2.2.1 of draft 16 (COPY the latest version of the resource to a
new
location, then DELETE the old versioned resource, then MOVE to rename the
new unversioned resource to the old name) is broken, for the following
reasons:
- It's not guaranteed to work, but not guaranteed to fail if it doesn't
work.
E.g. the server might automatically create a new versioned resource. No
way for the client to tell in advance.
<jra>
True, but it might not be as bad as it at first seams. If the copy fails,
then the system state isn't changed. Note that using a copy explicitly
allows the user to select which version is to be the unversioned resource,
not just the latest version.
If the delete of the history resource fails, then the copy is still there
creating the new unversioned resource. The move to rename can still be
done since any VCR that has the same name can be deleted even if the
history resource wasn't deleted.
If the server automatically creates a new versioned resource, then its a
server that does not support unversioned resources, or has been configured
as such. This sounds like the correct behavior.
So the user gets what they wanted, and chances are if a delete of the
history resource fails, so would an unversion which would have to at a
minimum do the delete.
</jra>
- Log files, permissions, etc. are lost in this series of moves
<jra>
Don't know what log files you are referring to, but they would have to be
server or application dependent anyway. Your server would have to handle
its own extensions, and clients can easily deal with the permissions given
the ACL spec.
</jra>
- Permissions could prevent the completion of this sequence of events and
leave the documents in a poor intermediate state. With a single request,
a
permissions failure leaves the client in the same state as it was before
it
started.
<jra>
Same as the first issue with the same comments.
</jra>
- basically, it's a side-effect, not a designed behaviour, and relies on
several non-atomic operations working together
We discussed replacing that with the recommendation "delete the VHR to
remove a resource from version control". This has fewer problems because
it's at least a single atomic request. However it also has weaknesses,
some
of which I didn't remember quickly enough to bring up in the meeting:
- it could break situations where more than one VCR points to the same
VHR,
a scenario which has specifically been discussed as being permitted by
DeltaV. Would it make all those VCRs no longer versioned?
- it requires clients and particularly servers to support an entire
optional chapter of DeltaV, and a new resource type with all its live
properties, just to get the ability to remove a resource from version
control.
<jra>
In reality, clients already have to support history resources in order to
support DeltaV semantics. The only thing that's optional is to provide a
server generated URL for them, and expose their properties. This option
was included because of one vendor who did not want to have to generate
the URLs. However, all DeltaV servers have to support generated URLs at
least for versions, have to be able to support live and protected DeltaV
properties, and have to provide information on the history of versioned
resources for the reports. So I don't think support for a history resource
is adding much burden to a DeltaV server, and the notion of a history
resource is so fundamental to versioning that I think it should be
required.
</jra>
- the spec would have to deal with the order of delete operations. To
delete a resource and all its versions, must the client delete the VHR
first
then the now-recently-unversioned resource? Is deleting the VCR when the
VHR still exists forbidden?
A specific syntax for making something unversioned is still the cleanest
way
to go, because when you design a specific syntax for a specific job you're
more likely to be able to make it work. But in the absence of that, the
draft should at least be brought up-to-date with the most current
VHR-deleting recommendation.
<jra>
The delete semantics of history resources may not be something the
protocol should define. Servers implementations may make it impossible to
remove all working resources and/or VCRs. Some may not be able to handle
dangling references in VCRs. Some may choose to disallow the operation
altogether. This looks like something that will require some
implementation experience. Since unversion would have to address the same
issues, we probably should wait to get this implementation experience.
</jra>
lisa
Received on Monday, 20 August 2001 10:53:58 UTC