- From: Lisa Dusseault <lisa@osafoundation.org>
- Date: Fri, 21 May 2004 13:45:49 -0700
- To: Julian Reschke <julian.reschke@gmx.de>
- Cc: HTTP working group <ietf-http-wg@w3.org>, Jamie Lokier <jamie@shareable.org>, Webdav WG <w3c-dist-auth@w3c.org>
I'd like to see wider input before diverging from what I see as pretty standard practice. Is OPTIONS * dead? Is it useful? Both? I had always seen OPTIONS * to be very useful. At Xythos, we went to a deal of effort to make it work even though the Xythos WFS was a java servlet-based technology. Xythos WFS worked with clients that expected to find useful information in OPTIONS *, including the Xythos WFC (before that, Teamstream behaved the same way, I think). The clients looked for features advertised in OPTIONS *, so that the client would know whether it would be worthwhile querying individual resources for further detail on supported features. Some clients, like Microsoft clients, use OPTIONS '/', which can be just as hard or harder for the server to support than OPTIONS *. And if the server doesn't advertise a major feature in OPTIONS * or OPTIONS /, then the client doesn't bother looking for the feature on individual URLs -- it's probably too prohibitive to do that roundtrip on every resource visited. I think that a server implemented today that didn't put features in OPTIONS * or OPTIONS / would find that some clients failed to enable features that would otherwise be enabled. This may be most true for WebDAV features like locking. I'm now in the position of developing a WebDAV client from the ground up, rather than a server, as I've done before. I assure you that the client would rather have some indication (in OPTIONS * or OPTIONS / or elsewhere) that a feature might be supported somewhere in the repository. This is so that a GUI can show a button as enabled or disabled right away, as the client navigates through a bunch of resources. For example, the "lock" button should be visible on the toolbar when the user is navigating a repository that might support locking somewhere -- but the "lock" button should be at least greyed out, if not absent, when the user is navigating a repository that doesn't support locking at all. Developers hate uncertainty, but users are generally better at dealing with it than we think they are. It's a principle of good user interface to show affordances for things that might be possible. It's OK if the affordance doesn't work once in a while -- it's better than the user not to be allowed, or not to know, that they can even do the function in the first place. That's why I think it's good for OPTIONS * to show that a feature like locking is available somewhere in the repository, even if it's not available everywhere. Perhaps the solution is to fix the tools. Java Servlets could easily have been designed to make OPTIONS * aggregate information from a number of servlets. Reverse proxies could send OPTIONS * requests to the different servers and bundle the answers together, if the set is finite and known. Or we could provide some way of responding to OPTIONS * with a specific advertised caveat that "this response does not have the list of features available in the repository(ies) that can be addressed at this server". In any case, this issue affects PATCH no more than it affects any other HTTP extension. Lisa On May 21, 2004, at 1:04 PM, Julian Reschke wrote: > Lisa Dusseault wrote: > >> ... >>> It also cannot be implemented in general over reverse-proxies which >>> forward requests to different servers depending on the URL. >>> >> OPTIONS * is a difficult problem; I don't really have a solution to >> it, nor do I know of any consensus on "the right thing" to do about >> it. The requirement is only a SHOULD, since obviously some >> implementations can't do this. > > I think it's understood that under many cirumstances, "OPTIONS *" will > simply not work. Making it a "SHOULD" requirement suggests to clients > that they reasonably can expect it to work most of the time; however > the *opposite* is true. > > Clients can not rely on "OPTIONS *" working as described, and it's > also not clear what the value of this feature is. The client can't > rely on PATCH being available on every resource, nor can it rely on > specific delta formats being supported on all resources. > > As such, it should be a "MAY", or even better, the description should > be removed altogether. > > If you disagree, I'd be interested to hear about a use case where the > response from "OPTIONS *" will indeed help the client in any way. > > Best regards, Julian > > -- > <green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760
Received on Friday, 21 May 2004 16:46:21 UTC