Date: Tue, 19 Oct 1999 23:15:01 -0400 Message-Id: <9910200315.AA22016@tantalum> From: "Geoffrey M. Clemm" <gclemm@tantalum.atria.com> To: ietf-dav-versioning@w3.org In-Reply-To: <F3B2A0DB2FC1D211A511006097FFDDF53438BC@BEAVMAIL> (message from Subject: Re: CHECKIN/OUT Protocol Review From: Bradley Sergeant <Bradley.Sergeant@merant.com> There is a use case for recursive CHECKOUT and CHECKIN. If a widespread change needs to be made through out a web site it can be much more efficient to do so on the server without the round trips needed for each resource. This is not the case if you are doing individual edits. It is the case if you are updating properties across a web site. With recursive CHECKOUT/CHECKIN you can then do: CHECKOUT PROPFIND CHECKIN to, for example, change a property value containing the name of the company that has changed names. Because PROPFIND is recursive you only need three round trips to get this done. This is efficient if you know that all or most of the resources selected really need the update. I assume you meant "PROPPATCH"? But PROPPATCH is not recursive. It only affects a single resource (multiple properties, but on the same resource). Since you need to do a separate PROPPATCH or PUT to update the resource, doing a CHECKOUT/PROPPATCH/CHECKIN is only a constant factor more expensive than just doing a PROPPATCH. On the other hand, the cost of unnecessary CHECKOUT's and UNCHECKOUT's can be very significant. But more significantly, if you do the batch CHECKOUT first, you are blocking everyone from doing any work (e.g. on a totally different property) on any of these resources until you are done. This significantly increases work interference, which is very much not something we want to encourage. Supporting recursive CHECKOUT/CHECKIN does add complexity to the protocol. It's a trade-off. Let's see if there's any demand for it as the spec is reviewed. Fair enough. We have to make sure that the benefit/demand exceeds both the protocol complexity cost and the client penalty (i.e. with increased lockout).