Review of new HTTPbis text for 303 See Other

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 - 3 - 4 - 5 - 6 | Next >

Review of new HTTPbis text for 303 See Other

by Jonathan Rees-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Quoting from http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-06#page-24
:

   A 303 response to a GET request indicates that the requested resource
   does not have a representation of its own that can be transferred by
   the server over HTTP.  ...  Note that answers to
   the questions of what can be represented, what representations are
   adequate, and what might be a useful description are outside the
   scope of HTTP and thus entirely determined by the resource owner(s).

1. I think the first sentence makes too strong a commitment. Some
sites are using 303 for resources that *do* have perfectly good
representations that can be transferred by the server over HTTP; they
just don't want to do so because they consider the 303 redirect to a
description of the resource to be more valuable than providing
representations. Perhaps when LRDD comes on line the need to use 303
to provide metadata will decrease, but I see no reason to restrict 303
to representationless resources. In addition, the TAG's httpRange-14
rule [1] does not restrict the resource in the 303 case in any way at
all, so saying that it does would introduce an incompatibility that
would have to be resolved.

It is easy to imagine other cases where one uses a 303 because one has
a description (e.g. an article abstract) of the resource but the
resource itself, while having perfectly good "representations", is
protected or offline.

I recommend changing this to something weaselly like

   A 303 response to a GET request *may indicate* that the requested resource
   does not have a representation of its own that can be transferred by ...

2. The last sentence is also incorrect - to say that these decisions
are up to the resource's owner is also too strong a commitment. For
example, if I create a URI meant to "identify" my neighbor's car, it
is not necessarily up to my neighbor to determine what a useful
description of it is.

Even if you say that "what representations are adequate" and so on are
up to the URI owner (a term defined not by HTTP but rather by AWWW),
as opposed to the resource owner, you are making a very strong
architectural commitment that is certainly not in the scope of HTTP.

I advise that you simply remove the phrase " and thus entirely
determined by the resource owner(s)".

Best
Jonathan Rees

[1] http://lists.w3.org/Archives/Public/www-tag/2005Jun/0039.html


Re: Review of new HTTPbis text for 303 See Other

by Julian Reschke :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Jonathan Rees wrote:

> Quoting from http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-06#page-24
> :
>
>    A 303 response to a GET request indicates that the requested resource
>    does not have a representation of its own that can be transferred by
>    the server over HTTP.  ...  Note that answers to
>    the questions of what can be represented, what representations are
>    adequate, and what might be a useful description are outside the
>    scope of HTTP and thus entirely determined by the resource owner(s).
>
> 1. I think the first sentence makes too strong a commitment. Some
> sites are using 303 for resources that *do* have perfectly good
> representations that can be transferred by the server over HTTP; they
> just don't want to do so because they consider the 303 redirect to a
> description of the resource to be more valuable than providing

Could you please provide an example for a resource like that? My
understanding of the 303/information resource issue always was that if
the resource can be represented with a bag of bits then it *is* an
information resource.

 > ...
> I recommend changing this to something weaselly like
>
>    A 303 response to a GET request *may indicate* that the requested resource
>    does not have a representation of its own that can be transferred by ...
> ...

Assuming we did want to change it, it would still to be phrased in a way
that explains what 303 means, not what it "may" mean...

> 2. The last sentence is also incorrect - to say that these decisions
> are up to the resource's owner is also too strong a commitment. For
> example, if I create a URI meant to "identify" my neighbor's car, it
> is not necessarily up to my neighbor to determine what a useful
> description of it is.

 From HTTP's point of view, the owner of the URI is the owner of the
resource. It just doesn't care about the case where you use an HTTP URI
to identify somebody's car.

> ...

BR, Julian


Re: Review of new HTTPbis text for 303 See Other

by Jonathan Rees-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Comments inline below.

On Wed, Jul 1, 2009 at 12:56 AM, Julian Reschke<julian.reschke@...> wrote:

> Jonathan Rees wrote:
>>
>> Quoting from
>> http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-06#page-24
>> :
>>
>>   A 303 response to a GET request indicates that the requested resource
>>   does not have a representation of its own that can be transferred by
>>   the server over HTTP.  ...  Note that answers to
>>   the questions of what can be represented, what representations are
>>   adequate, and what might be a useful description are outside the
>>   scope of HTTP and thus entirely determined by the resource owner(s).
>>
>> 1. I think the first sentence makes too strong a commitment. Some
>> sites are using 303 for resources that *do* have perfectly good
>> representations that can be transferred by the server over HTTP; they
>> just don't want to do so because they consider the 303 redirect to a
>> description of the resource to be more valuable than providing
>
> Could you please provide an example for a resource like that? My
> understanding of the 303/information resource issue always was that if the
> resource can be represented with a bag of bits then it *is* an information
> resource.

The TAG resolution, FWIW, says that if the response is a 303, the
resource can be any kind of resource - information or non-information.
My application is creating a large number of stable URIs (PURLs, in
effect) for what could be considered information resources, AND adding
metadata in the process, with the metadata reachable via 303. (The
data would be found in some other way, not via 200.) This is because
the metadata is deemed more important than the data.

Now I have three ways out. One is for me to tell myself that "the
requested resource does not have a representation of its own that can
be transferred by the server over HTTP", which of course is untestable
and so I doubt anyone would call me on it. Another is to ignore your
303 advice, as it will only have SHOULD status and not MUST status.
Yes another is to use LRDD to provide access to the metadata, but LRDD
is not likely to be ready before HTTPbis, and it's not obvious (yet)
that it will serve my purposes.

I can reverse the question and ask *you*: Tell me what kind of
resource "does not have a representation of its own that can be
transferred by the server over HTTP"? And what is an example of a
representation that cannot be transferred over HTTP? You have entered
one of the nastiest and most pointless debates around, that of the
boundary between information resources and other resources, and I
don't recommend going there - it's an ontological quagmire that has no
place in HTTPbis.

Better to just say that GET/303 may be used any time the server does
not choose, for whatever reason, to respond with a representation, but
rather with the location of a description of the resource. This is
easy to specify and describe and is compatible with the TAG's previous
advice.

>> ...
>>
>> I recommend changing this to something weaselly like
>>
>>   A 303 response to a GET request *may indicate* that the requested
>> resource
>>   does not have a representation of its own that can be transferred by ...
>> ...
>
> Assuming we did want to change it, it would still to be phrased in a way
> that explains what 303 means, not what it "may" mean...

See above. I don't think much meaning has to be given beyond that you
get the location of a description. You can leave the 200/303 choice up
to the server, just as a choice between a 300 and a 200 is up to the
server. The server just decided.

>> 2. The last sentence is also incorrect - to say that these decisions
>> are up to the resource's owner is also too strong a commitment. For
>> example, if I create a URI meant to "identify" my neighbor's car, it
>> is not necessarily up to my neighbor to determine what a useful
>> description of it is.
>
> From HTTP's point of view, the owner of the URI is the owner of the
> resource. It just doesn't care about the case where you use an HTTP URI to
> identify somebody's car.

But you are the one who raises the question. If you mean resource
owner in some narrow technical sense, instead of resource owner in,
say, a legal sense (e.g. copyright), you need to be clear. It wasn't
clear to me, and I don't think it's only because I'm steeped in a
world view that makes a clear separation between URI and resource
(e.g. the possibility that many URIs with different URI owners might
all identify the same resource).

Best
Jonathan

>> ...
>
> BR, Julian
>


Re: Review of new HTTPbis text for 303 See Other

by Ashok Malhotra :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Jonathan said ...

"Better to just say that GET/303 may be used any time the server does
not choose, for whatever reason, to respond with a representation, but
rather with the location of a description of the resource. This is
easy to specify and describe and is compatible with the TAG's previous
advice."

Well said!  +1


All the best, Ashok


Jonathan Rees wrote:

> Comments inline below.
>
> On Wed, Jul 1, 2009 at 12:56 AM, Julian Reschke<julian.reschke@...> wrote:
>  
>> Jonathan Rees wrote:
>>    
>>> Quoting from
>>> http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-06#page-24
>>> :
>>>
>>>   A 303 response to a GET request indicates that the requested resource
>>>   does not have a representation of its own that can be transferred by
>>>   the server over HTTP.  ...  Note that answers to
>>>   the questions of what can be represented, what representations are
>>>   adequate, and what might be a useful description are outside the
>>>   scope of HTTP and thus entirely determined by the resource owner(s).
>>>
>>> 1. I think the first sentence makes too strong a commitment. Some
>>> sites are using 303 for resources that *do* have perfectly good
>>> representations that can be transferred by the server over HTTP; they
>>> just don't want to do so because they consider the 303 redirect to a
>>> description of the resource to be more valuable than providing
>>>      
>> Could you please provide an example for a resource like that? My
>> understanding of the 303/information resource issue always was that if the
>> resource can be represented with a bag of bits then it *is* an information
>> resource.
>>    
>
> The TAG resolution, FWIW, says that if the response is a 303, the
> resource can be any kind of resource - information or non-information.
> My application is creating a large number of stable URIs (PURLs, in
> effect) for what could be considered information resources, AND adding
> metadata in the process, with the metadata reachable via 303. (The
> data would be found in some other way, not via 200.) This is because
> the metadata is deemed more important than the data.
>
> Now I have three ways out. One is for me to tell myself that "the
> requested resource does not have a representation of its own that can
> be transferred by the server over HTTP", which of course is untestable
> and so I doubt anyone would call me on it. Another is to ignore your
> 303 advice, as it will only have SHOULD status and not MUST status.
> Yes another is to use LRDD to provide access to the metadata, but LRDD
> is not likely to be ready before HTTPbis, and it's not obvious (yet)
> that it will serve my purposes.
>
> I can reverse the question and ask *you*: Tell me what kind of
> resource "does not have a representation of its own that can be
> transferred by the server over HTTP"? And what is an example of a
> representation that cannot be transferred over HTTP? You have entered
> one of the nastiest and most pointless debates around, that of the
> boundary between information resources and other resources, and I
> don't recommend going there - it's an ontological quagmire that has no
> place in HTTPbis.
>
> Better to just say that GET/303 may be used any time the server does
> not choose, for whatever reason, to respond with a representation, but
> rather with the location of a description of the resource. This is
> easy to specify and describe and is compatible with the TAG's previous
> advice.
>
>  
>>> ...
>>>
>>> I recommend changing this to something weaselly like
>>>
>>>   A 303 response to a GET request *may indicate* that the requested
>>> resource
>>>   does not have a representation of its own that can be transferred by ...
>>> ...
>>>      
>> Assuming we did want to change it, it would still to be phrased in a way
>> that explains what 303 means, not what it "may" mean...
>>    
>
> See above. I don't think much meaning has to be given beyond that you
> get the location of a description. You can leave the 200/303 choice up
> to the server, just as a choice between a 300 and a 200 is up to the
> server. The server just decided.
>
>  
>>> 2. The last sentence is also incorrect - to say that these decisions
>>> are up to the resource's owner is also too strong a commitment. For
>>> example, if I create a URI meant to "identify" my neighbor's car, it
>>> is not necessarily up to my neighbor to determine what a useful
>>> description of it is.
>>>      
>> From HTTP's point of view, the owner of the URI is the owner of the
>> resource. It just doesn't care about the case where you use an HTTP URI to
>> identify somebody's car.
>>    
>
> But you are the one who raises the question. If you mean resource
> owner in some narrow technical sense, instead of resource owner in,
> say, a legal sense (e.g. copyright), you need to be clear. It wasn't
> clear to me, and I don't think it's only because I'm steeped in a
> world view that makes a clear separation between URI and resource
> (e.g. the possibility that many URIs with different URI owners might
> all identify the same resource).
>
> Best
> Jonathan
>
>  
>>> ...
>>>      
>> BR, Julian
>>
>>    
>
>  


Re: Review of new HTTPbis text for 303 See Other

by Yves Lafon :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 7 Jul 2009, Jonathan Rees wrote:

> Comments inline below.
>
> On Wed, Jul 1, 2009 at 12:56 AM, Julian Reschke<julian.reschke@...> wrote:
>> Jonathan Rees wrote:
>>>
>>> Quoting from
>>> http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-06#page-24
>>> :
>>>
>>>   A 303 response to a GET request indicates that the requested resource
>>>   does not have a representation of its own that can be transferred by
>>>   the server over HTTP.  ...  Note that answers to
>>>   the questions of what can be represented, what representations are
>>>   adequate, and what might be a useful description are outside the
>>>   scope of HTTP and thus entirely determined by the resource owner(s).
>>>
>>> 1. I think the first sentence makes too strong a commitment. Some
>>> sites are using 303 for resources that *do* have perfectly good
>>> representations that can be transferred by the server over HTTP; they
>>> just don't want to do so because they consider the 303 redirect to a
>>> description of the resource to be more valuable than providing
>>
>> Could you please provide an example for a resource like that? My
>> understanding of the 303/information resource issue always was that if the
>> resource can be represented with a bag of bits then it *is* an information
>> resource.
>
> The TAG resolution, FWIW, says that if the response is a 303, the
> resource can be any kind of resource - information or non-information.
> My application is creating a large number of stable URIs (PURLs, in
> effect) for what could be considered information resources, AND adding
> metadata in the process, with the metadata reachable via 303. (The
> data would be found in some other way, not via 200.) This is because
> the metadata is deemed more important than the data.

How about qualifying the 303 response (which is something I really don't
like as a response to a GET, a new code would have been better) using a
Link: header to specify that the targeted resource is intended to be
metadata?

>
> Now I have three ways out. One is for me to tell myself that "the
> requested resource does not have a representation of its own that can
> be transferred by the server over HTTP", which of course is untestable
> and so I doubt anyone would call me on it. Another is to ignore your
> 303 advice, as it will only have SHOULD status and not MUST status.
> Yes another is to use LRDD to provide access to the metadata, but LRDD
> is not likely to be ready before HTTPbis, and it's not obvious (yet)
> that it will serve my purposes.
>
> I can reverse the question and ask *you*: Tell me what kind of
> resource "does not have a representation of its own that can be
> transferred by the server over HTTP"? And what is an example of a
> representation that cannot be transferred over HTTP? You have entered
> one of the nastiest and most pointless debates around, that of the
> boundary between information resources and other resources, and I
> don't recommend going there - it's an ontological quagmire that has no
> place in HTTPbis.
>
> Better to just say that GET/303 may be used any time the server does
> not choose, for whatever reason, to respond with a representation, but
> rather with the location of a description of the resource. This is
> easy to specify and describe and is compatible with the TAG's previous
> advice.

rfc2616 makes no assumption that it is metadata (hence my proposal above
to use Link: in this specific case).

>>> ...
>>>
>>> I recommend changing this to something weaselly like
>>>
>>>   A 303 response to a GET request *may indicate* that the requested
>>> resource
>>>   does not have a representation of its own that can be transferred by ...
>>> ...
>>
>> Assuming we did want to change it, it would still to be phrased in a way
>> that explains what 303 means, not what it "may" mean...
>
> See above. I don't think much meaning has to be given beyond that you
> get the location of a description. You can leave the 200/303 choice up
> to the server, just as a choice between a 300 and a 200 is up to the
> server. The server just decided.
>
>>> 2. The last sentence is also incorrect - to say that these decisions
>>> are up to the resource's owner is also too strong a commitment. For
>>> example, if I create a URI meant to "identify" my neighbor's car, it
>>> is not necessarily up to my neighbor to determine what a useful
>>> description of it is.
>>
>> From HTTP's point of view, the owner of the URI is the owner of the
>> resource. It just doesn't care about the case where you use an HTTP URI to
>> identify somebody's car.
>
> But you are the one who raises the question. If you mean resource
> owner in some narrow technical sense, instead of resource owner in,
> say, a legal sense (e.g. copyright), you need to be clear. It wasn't
> clear to me, and I don't think it's only because I'm steeped in a
> world view that makes a clear separation between URI and resource
> (e.g. the possibility that many URIs with different URI owners might
> all identify the same resource).
>
> Best
> Jonathan
>
>>> ...
>>
>> BR, Julian
>>
>
>

--
Baroula que barouleras, au tiéu toujou t'entourneras.

         ~~Yves



Re: Review of new HTTPbis text for 303 See Other

by Julian Reschke :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Jonathan,

 > ...
>> Could you please provide an example for a resource like that? My
>> understanding of the 303/information resource issue always was that if the
>> resource can be represented with a bag of bits then it *is* an information
>> resource.
>
> The TAG resolution, FWIW, says that if the response is a 303, the
> resource can be any kind of resource - information or non-information.

Indeed. (<http://www.w3.org/2001/tag/issues.html#httpRange-14>)

> My application is creating a large number of stable URIs (PURLs, in
> effect) for what could be considered information resources, AND adding
> metadata in the process, with the metadata reachable via 303. (The
> data would be found in some other way, not via 200.) This is because
> the metadata is deemed more important than the data.
>
> Now I have three ways out. One is for me to tell myself that "the
> requested resource does not have a representation of its own that can
> be transferred by the server over HTTP", which of course is untestable
> and so I doubt anyone would call me on it. Another is to ignore your
> 303 advice, as it will only have SHOULD status and not MUST status.
> Yes another is to use LRDD to provide access to the metadata, but LRDD
> is not likely to be ready before HTTPbis, and it's not obvious (yet)
> that it will serve my purposes.

Well, it's not "my" advice, but the text this working group previously
came up with. (I think Roy proposed it).

My understanding is that if you apply GET to a resource for which you
*do* have a representation, than you should respond with a 200 status,
and return it.

> I can reverse the question and ask *you*: Tell me what kind of
> resource "does not have a representation of its own that can be
> transferred by the server over HTTP"? And what is an example of a

Those that Web-Arch calls "non-information" resources. Keep in mind that
this specific text has been put it to address httprange; it wasn't
present in RFC2616.

> representation that cannot be transferred over HTTP? You have entered
> one of the nastiest and most pointless debates around, that of the
> boundary between information resources and other resources, and I
> don't recommend going there - it's an ontological quagmire that has no
> place in HTTPbis.

I didn't enter it. Actually, the spec tries to avoid it:

"A 303 response to a GET request indicates that the requested resource
does not have a representation of its own that can be transferred by the
server over HTTP. The Location URI indicates a resource that is
descriptive of the requested resource such that the follow-on
representation may be useful without implying that it adequately
represents the previously requested resource. Note that answers to the
questions of what can be represented, what representations are adequate,
and what might be a useful description are outside the scope of HTTP and
thus entirely determined by the resource owner(s)."

> Better to just say that GET/303 may be used any time the server does
> not choose, for whatever reason, to respond with a representation, but
> rather with the location of a description of the resource. This is
> easy to specify and describe and is compatible with the TAG's previous
> advice.

...but it seems to be a change to what HTTP said before; from HTTP's
point of view it's strange to talk about resources that do have
representations, but do not return them upon GET.


>>> ...
>>>
>>> I recommend changing this to something weaselly like
>>>
>>>   A 303 response to a GET request *may indicate* that the requested
>>> resource
>>>   does not have a representation of its own that can be transferred by ...
>>> ...
>> Assuming we did want to change it, it would still to be phrased in a way
>> that explains what 303 means, not what it "may" mean...
>
> See above. I don't think much meaning has to be given beyond that you
> get the location of a description. You can leave the 200/303 choice up
> to the server, just as a choice between a 300 and a 200 is up to the
> server. The server just decided.

I understand that; but the language defining the status codes needs to
be phrased so that it's clear what it means, not what it "may" mean.

>>> 2. The last sentence is also incorrect - to say that these decisions
>>> are up to the resource's owner is also too strong a commitment. For
>>> example, if I create a URI meant to "identify" my neighbor's car, it
>>> is not necessarily up to my neighbor to determine what a useful
>>> description of it is.
>> From HTTP's point of view, the owner of the URI is the owner of the
>> resource. It just doesn't care about the case where you use an HTTP URI to
>> identify somebody's car.
>
> But you are the one who raises the question. If you mean resource
> owner in some narrow technical sense, instead of resource owner in,
> say, a legal sense (e.g. copyright), you need to be clear. It wasn't
> clear to me, and I don't think it's only because I'm steeped in a
> world view that makes a clear separation between URI and resource
> (e.g. the possibility that many URIs with different URI owners might
> all identify the same resource).
> ...

Understood. How do others feel about HTTP's use of the term "resource
owner"?

BR, Julian


Re: Review of new HTTPbis text for 303 See Other

by Roy T. Fielding :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Jul 8, 2009, at 3:18 AM, Julian Reschke wrote:

> Understood. How do others feel about HTTP's use of the term  
> "resource owner"?

Just change it to "URI owner".  No big deal,

....Roy



Re: Review of new HTTPbis text for 303 See Other

by Julian Reschke :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Roy T. Fielding wrote:
> On Jul 8, 2009, at 3:18 AM, Julian Reschke wrote:
>
>> Understood. How do others feel about HTTP's use of the term "resource
>> owner"?
>
> Just change it to "URI owner".  No big deal,

Sounds good to me.

I just checked, the term "owner" is only used in Part 2; once for the
description of the 303, twice for 410 Gone (where it is talking about
the server's owner).

Unless somebody objects soonish, I'll make that change.

BR, Julian


Re: Review of new HTTPbis text for 303 See Other

by Jonathan Rees-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Jul 8, 2009 at 6:18 AM, Julian Reschke<julian.reschke@...> wrote:
> Hi Jonathan,
[...]
> Well, it's not "my" advice, but the text this working group previously came
> up with. (I think Roy proposed it).

I'm sorry, I didn't mean to single you out. I meant (and mean) "you"
collectively meaning the people who are graciously performing the
service of revising RFC 2616.

Can you tell me where the discussion is archived? I looked for it and
didn't find anything.

> My understanding is that if you apply GET to a resource for which you *do*
> have a representation, than you should respond with a 200 status, and return
> it.

There is plenty of precedent for doing otherwise: the server
can perfectly well choose 203, 300, 301, 302, 307, 401, 403, 409, 413,
414, 503... at its own discretion, even when it *does* possess a valid
representation.  303 is no different.

> Those that Web-Arch calls "non-information" resources. Keep in mind that
> this specific text has been put it to address httprange; it wasn't present
> in RFC2616.

OK, I knew it was new but was unaware of the motivation or process
leading to this particular text.

You (collectively) have failed to capture what the TAG's resolution
clearly says, which is that a 303 means it could be any kind of resource.

Enshrining the "information resource" idea in an RFC would be a
terrible idea, in my opinion, even if you change the way it's said to
"does not have a representation of its own". While I support the
reasoning that led to the httpRange-14 resolution, the definitions
provided for "information resource" are completely unsatisfactory -
and even if they were, they would be ontological, and would therefore
have no place in an RFC.  2616 should be about a protocol.  Let the
semantic web (or whatever) application layer take responsibility for
ontology.

According to the TAG's resolution, the difficulty of defining
"information resource" (or deciding whether something has a
representation) can be sidestepped just by returning 303 whenever
there is the slightest doubt.  If you restrict GET/303 to
non-information-resources, you remove this option, and will force
people to make subtle ontological distinctions (how many
representations can dance on the head of a pin) that they don't need
to make at present.

I don't mean to undermine the TAG's advice; I just want to establish a
separation of concerns, and point out that the advice is nuanced.  If
the purpose is to channel the advice, I advise you to pay careful
attention to what it actually says, since it is what people in the
linked data community have been programming to since 2005.

>> representation that cannot be transferred over HTTP? You have entered
>> one of the nastiest and most pointless debates around, that of the
>> boundary between information resources and other resources, and I
>> don't recommend going there - it's an ontological quagmire that has no
>> place in HTTPbis.
>
> I didn't enter it. Actually, the spec tries to avoid it:
>
> "A 303 response to a GET request indicates that the requested resource does
> not have a representation of its own that can be transferred by the server
> over HTTP. [...]"

You enter the quagmire by requiring every protocol user to answer, for
every resource, the question of whether it "has a representation of
its own that can be transferred by the server over HTTP".  If yes,
the response has to be a 200; if no, it has to be a 303. This
question is both unanswerable and irrelevant to a protocol spec, and
forcing it on everyone will precipitate immeasurable agony.  Perhaps
some linked data application layer has some particular theory of which
resources have representations; that shouldn't be your concern.

>> Better to just say that GET/303 may be used any time the server does
>> not choose, for whatever reason, to respond with a representation, but
>> rather with the location of a description of the resource. This is
>> easy to specify and describe and is compatible with the TAG's previous
>> advice.
>
> ...but it seems to be a change to what HTTP said before; from HTTP's point
> of view it's strange to talk about resources that do have representations,
> but do not return them upon GET.

Then don't talk about them.  Just say it is server discretion.  I
would be happy to work on wordsmithing with you if you agree in
principle to communicate something consistent with what the
httpRange-14 resolution says about 303, as opposed to the
current HTTPbis draft's distortion.

>> ... I don't think much meaning has to be given beyond that you
>> get the location of a description. You can leave the 200/303 choice up
>> to the server, just as a choice between a 300 and a 200 is up to the
>> server. The server just decided.
>
> I understand that; but the language defining the status codes needs to be
> phrased so that it's clear what it means, not what it "may" mean.

The server prefers to give you a description
of the resource rather than a representation because it thinks that's
the better choice.  Why is none of the RFC's business; it depends on
some application layer theory of resources, representations, and
descriptions that's out of scope.

By the way, I'm speaking strongly only to get the point across, not
out of anger. I'm glad you all have paid attention to codifying the
currently unauthorized GET/303 practice. I'm only looking for clarity
and consistency and to make sure that esoteric linked-data debates
stay inside W3C and don't spill over into IETF.

Best
Jonathan

-----

p.s. possible compromise: instead of

"the requested resource does not have a representation of its own that
can be transferred by the server over HTTP"

consider

"the server does not have a representation of the requested resource
that it can transfer over HTTP"

which makes no claims about the resource itself, only about the
server. This still doesn't match the httpRange-14 resolution exactly,
but it gives much broader scope to plausible deniability ("sorry, I
didn't have it"). Note that it subsumes the case where no one has a
representation because none exists, without going into the
uncomfortable details.


Re: Review of new HTTPbis text for 303 See Other

by Pat Hayes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On Jul 8, 2009, at 5:18 AM, Julian Reschke wrote:

> Hi Jonathan,
>
> > ...
>>> Could you please provide an example for a resource like that? My
>>> understanding of the 303/information resource issue always was  
>>> that if the
>>> resource can be represented with a bag of bits then it *is* an  
>>> information
>>> resource.
>> The TAG resolution, FWIW, says that if the response is a 303, the
>> resource can be any kind of resource - information or non-
>> information.
>
> Indeed. (<http://www.w3.org/2001/tag/issues.html#httpRange-14>)
>
>> My application is creating a large number of stable URIs (PURLs, in
>> effect) for what could be considered information resources, AND  
>> adding
>> metadata in the process, with the metadata reachable via 303. (The
>> data would be found in some other way, not via 200.) This is because
>> the metadata is deemed more important than the data.
>> Now I have three ways out. One is for me to tell myself that "the
>> requested resource does not have a representation of its own that can
>> be transferred by the server over HTTP", which of course is  
>> untestable
>> and so I doubt anyone would call me on it. Another is to ignore your
>> 303 advice, as it will only have SHOULD status and not MUST status.
>> Yes another is to use LRDD to provide access to the metadata, but  
>> LRDD
>> is not likely to be ready before HTTPbis, and it's not obvious (yet)
>> that it will serve my purposes.
>
> Well, it's not "my" advice, but the text this working group  
> previously came up with. (I think Roy proposed it).
>
> My understanding is that if you apply GET to a resource for which  
> you *do* have a representation, than you should respond with a 200  
> status, and return it.
>
>> I can reverse the question and ask *you*: Tell me what kind of
>> resource "does not have a representation of its own that can be
>> transferred by the server over HTTP"? And what is an example of a
>
> Those that Web-Arch calls "non-information" resources. Keep in mind  
> that this specific text has been put it to address httprange; it  
> wasn't present in RFC2616.
>
>> representation that cannot be transferred over HTTP? You have entered
>> one of the nastiest and most pointless debates around, that of the
>> boundary between information resources and other resources, and I
>> don't recommend going there - it's an ontological quagmire that has  
>> no
>> place in HTTPbis.
>
> I didn't enter it. Actually, the spec tries to avoid it:
>
> "A 303 response to a GET request indicates that the requested  
> resource does not have a representation of its own that can be  
> transferred by the server over HTTP.

That just seems plain false. A 303 does not indicate that something  
does not exist. It simply indicates that the server, for reasons which  
may be entirely opaque and nobody is under any obligation to explain,  
has decided to redirect the query elsewhere. The http-range-14  
decision adds to this that, under these 303 circumstances, the  
original URI **may** be intended to denote something which has no  
representation appropriate to a 200 level response, but this is not  
actually implied by the 303 response itself, only permitted. The only  
actual constraint in all this is that if the URI elicits a 200 level  
response, then the payload of that response is a representation of the  
resource that the URI is understood to denote. And this does not  
mention 303 redirection.

Pat Hayes

> The Location URI indicates a resource that is descriptive of the  
> requested resource such that the follow-on representation may be  
> useful without implying that it adequately represents the previously  
> requested resource. Note that answers to the questions of what can  
> be represented, what representations are adequate, and what might be  
> a useful description are outside the scope of HTTP and thus entirely  
> determined by the resource owner(s)."
>
>> Better to just say that GET/303 may be used any time the server does
>> not choose, for whatever reason, to respond with a representation,  
>> but
>> rather with the location of a description of the resource. This is
>> easy to specify and describe and is compatible with the TAG's  
>> previous
>> advice.
>
> ...but it seems to be a change to what HTTP said before; from HTTP's  
> point of view it's strange to talk about resources that do have  
> representations, but do not return them upon GET.
>
>
>>>> ...
>>>>
>>>> I recommend changing this to something weaselly like
>>>>
>>>>  A 303 response to a GET request *may indicate* that the requested
>>>> resource
>>>>  does not have a representation of its own that can be  
>>>> transferred by ...
>>>> ...
>>> Assuming we did want to change it, it would still to be phrased in  
>>> a way
>>> that explains what 303 means, not what it "may" mean...
>> See above. I don't think much meaning has to be given beyond that you
>> get the location of a description. You can leave the 200/303 choice  
>> up
>> to the server, just as a choice between a 300 and a 200 is up to the
>> server. The server just decided.
>
> I understand that; but the language defining the status codes needs  
> to be phrased so that it's clear what it means, not what it "may"  
> mean.
>
>>>> 2. The last sentence is also incorrect - to say that these  
>>>> decisions
>>>> are up to the resource's owner is also too strong a commitment. For
>>>> example, if I create a URI meant to "identify" my neighbor's car,  
>>>> it
>>>> is not necessarily up to my neighbor to determine what a useful
>>>> description of it is.
>>> From HTTP's point of view, the owner of the URI is the owner of the
>>> resource. It just doesn't care about the case where you use an  
>>> HTTP URI to
>>> identify somebody's car.
>> But you are the one who raises the question. If you mean resource
>> owner in some narrow technical sense, instead of resource owner in,
>> say, a legal sense (e.g. copyright), you need to be clear. It wasn't
>> clear to me, and I don't think it's only because I'm steeped in a
>> world view that makes a clear separation between URI and resource
>> (e.g. the possibility that many URIs with different URI owners might
>> all identify the same resource).
>> ...
>
> Understood. How do others feel about HTTP's use of the term  
> "resource owner"?
>
> BR, Julian
>
>
>

------------------------------------------------------------
IHMC                                     (850)434 8903 or (650)494 3973
40 South Alcaniz St.           (850)202 4416   office
Pensacola                            (850)202 4440   fax
FL 32502                              (850)291 0667   mobile
phayesAT-SIGNihmc.us       http://www.ihmc.us/users/phayes







Re: Review of new HTTPbis text for 303 See Other

by David Booth-6 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, 2009-07-08 at 12:18 +0200, Julian Reschke wrote:
[ . . . ]

> >>> I recommend changing this to something weaselly like
> >>>
> >>>   A 303 response to a GET request *may indicate* that the requested
> >>>   resource
> >>>   does not have a representation of its own that can be transferred by ...
> >>> ...
> >> Assuming we did want to change it, it would still to be phrased in a way
> >> that explains what 303 means, not what it "may" mean...
> >
> > See above. I don't think much meaning has to be given beyond that you
> > get the location of a description. You can leave the 200/303 choice up
> > to the server, just as a choice between a 300 and a 200 is up to the
> > server. The server just decided.
>
> I understand that; but the language defining the status codes needs to
> be phrased so that it's clear what it means, not what it "may" mean.

Then how about: "A 303 response to a GET request indicates either that
the requested resource does not have, or that the server chooses not to
send, a representation that can be transferred by HTTP . . . "


--
David Booth, Ph.D.
Cleveland Clinic (contractor)

Opinions expressed herein are those of the author and do not necessarily
reflect those of Cleveland Clinic.



Re: Review of new HTTPbis text for 303 See Other

by Roy T. Fielding :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Jul 8, 2009, at 1:37 PM, Pat Hayes wrote:
>> "A 303 response to a GET request indicates that the requested  
>> resource does not have a representation of its own that can be  
>> transferred by the server over HTTP.
>
> That just seems plain false. A 303 does not indicate that something  
> does not exist. It simply indicates that the server, for reasons  
> which may be entirely opaque and nobody is under any obligation to  
> explain, has decided to redirect the query elsewhere.

No, we have other redirect codes for that.

> The http-range-14 decision adds to this that, under these 303  
> circumstances, the original URI **may** be intended to denote  
> something which has no representation appropriate to a 200 level  
> response, but this is not actually implied by the 303 response  
> itself, only permitted. The only actual constraint in all this is  
> that if the URI elicits a 200 level response, then the payload of  
> that response is a representation of the resource that the URI is  
> understood to denote. And this does not mention 303 redirection.

Please, folks, stop making up things about the HTTPrange-14 issue
which did not exist at the time it was resolved.  If there are problems
with the 303 definition (like "resource owner"), then they will be
fixed in the HTTP spec.  When the spec is approved, it will define
the protocol.  If people use the protocol incorrectly, that's their
problem.  The TAG decision was input to the process, not a sacred cow.

....Roy



Re: Review of new HTTPbis text for 303 See Other

by Jonathan Rees-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Jul 8, 2009 at 4:59 PM, Roy T. Fielding<fielding@...> wrote:
> Please, folks, stop making up things about the HTTPrange-14 issue
> which did not exist at the time it was resolved.  If there are problems
> with the 303 definition (like "resource owner"), then they will be
> fixed in the HTTP spec.  When the spec is approved, it will define
> the protocol.  If people use the protocol incorrectly, that's their
> problem.  The TAG decision was input to the process, not a sacred cow.
>
> ....Roy

I agree completely (although it would be nice if HTTPbis took into
account the way 303 responses are currently being used by the
community you thought you would serve by adding GET/303 to HTTPbis).
In my opinion this sentence

"A 303 response to a GET request indicates that the requested resource
does not have a representation of its own that can be transferred by
the server over HTTP."

makes up things about the decision - namely the idea that the server
would be in possession of information about the resource's
representations or lack thereof, and would use it in deciding what
responses to send. This change is consequential to current users of
GET/303 and I just don't understand why you want to do it.

Was your comment aimed only at Pat, or at me as well? What was your
opinion of my proposed compromise (the server doesn't have a
representation etc.)?

Jonathan


Re: Review of new HTTPbis text for 303 See Other

by Roy T. Fielding :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Jul 8, 2009, at 2:30 PM, Jonathan Rees wrote:

> On Wed, Jul 8, 2009 at 4:59 PM, Roy T. Fielding<fielding@...>  
> wrote:
>> Please, folks, stop making up things about the HTTPrange-14 issue
>> which did not exist at the time it was resolved.  If there are  
>> problems
>> with the 303 definition (like "resource owner"), then they will be
>> fixed in the HTTP spec.  When the spec is approved, it will define
>> the protocol.  If people use the protocol incorrectly, that's their
>> problem.  The TAG decision was input to the process, not a sacred  
>> cow.
>>
>> ....Roy
>
> I agree completely (although it would be nice if HTTPbis took into
> account the way 303 responses are currently being used by the
> community you thought you would serve by adding GET/303 to HTTPbis).
> In my opinion this sentence
>
> "A 303 response to a GET request indicates that the requested resource
> does not have a representation of its own that can be transferred by
> the server over HTTP."
>
> makes up things about the decision - namely the idea that the server
> would be in possession of information about the resource's
> representations or lack thereof, and would use it in deciding what
> responses to send. This change is consequential to current users of
> GET/303 and I just don't understand why you want to do it.

That's because you happen to be reading it differently than
what I was thinking when I wrote it.  The sentence is a bit
ambiguous if you don't pay attention to what the second "that"
means.  If it is reordered to say

  A 303 response to a GET request indicates that the server does
  not have a transferable representation of the requested resource
  and is instead redirecting the client to some other resource
  for further information.

then I think the objection is handled without watering down
the purpose of using the status code on a GET.

....Roy



Re: Review of new HTTPbis text for 303 See Other

by Jonathan Rees-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Jul 8, 2009 at 6:03 PM, Roy T. Fielding<fielding@...> wrote:

> That's because you happen to be reading it differently than
> what I was thinking when I wrote it.  The sentence is a bit
> ambiguous if you don't pay attention to what the second "that"
> means.  If it is reordered to say
>
>  A 303 response to a GET request indicates that the server does
>  not have a transferable representation of the requested resource
>  and is instead redirecting the client to some other resource
>  for further information.
>
> then I think the objection is handled without watering down
> the purpose of using the status code on a GET.
>
> ....Roy

Excellent! The rewording you give above would be fine with me - I
would be satisfied if HTTPbis said this, or something equivalent.
(because then the choice to yield a 303 can be attributed to the
server, and would not necessarily reflect on the nature of the
resource - "the server does not have" vs. "the resource does not
have".)

Best
Jonathan


Re: Review of new HTTPbis text for 303 See Other

by Julian Reschke :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Roy T. Fielding wrote:

> ...
> That's because you happen to be reading it differently than
> what I was thinking when I wrote it.  The sentence is a bit
> ambiguous if you don't pay attention to what the second "that"
> means.  If it is reordered to say
>
>  A 303 response to a GET request indicates that the server does
>  not have a transferable representation of the requested resource
>  and is instead redirecting the client to some other resource
>  for further information.
>
> then I think the objection is handled without watering down
> the purpose of using the status code on a GET.
>
> ....Roy

Sounds good to me.

BR, Julian



Re: Review of new HTTPbis text for 303 See Other

by J Ross Nicoll-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Roy T. Fielding wrote:

>> That just seems plain false. A 303 does not indicate that something
>> does not exist. It simply indicates that the server, for reasons which
>> may be entirely opaque and nobody is under any obligation to explain,
>> has decided to redirect the query elsewhere.
>
> No, we have other redirect codes for that.

As I understand it, 301 (moved permanently), 302 (found) and 307 (not
modified) all indicate a different location for the resource, never for
an alternative to it. 304 is "Not modified", and 305/6 are
deprecated/reserved respectively. So, I don't think there is any other
redirect code for "Instead of the resource you requested, please see
this resource instead"...




Re: Review of new HTTPbis text for 303 See Other

by Pat Hayes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On Jul 9, 2009, at 5:03 AM, Jonathan Rees wrote:

> On Wed, Jul 8, 2009 at 6:03 PM, Roy T. Fielding<fielding@...>  
> wrote:
>
>> That's because you happen to be reading it differently than
>> what I was thinking when I wrote it.  The sentence is a bit
>> ambiguous if you don't pay attention to what the second "that"
>> means.  If it is reordered to say
>>
>>  A 303 response to a GET request indicates that the server does
>>  not have a transferable representation of the requested resource
>>  and is instead redirecting the client to some other resource
>>  for further information.
>>
>> then I think the objection is handled without watering down
>> the purpose of using the status code on a GET.
>>
>> ....Roy
>
> Excellent! The rewording you give above would be fine with me - I
> would be satisfied if HTTPbis said this, or something equivalent.
> (because then the choice to yield a 303 can be attributed to the
> server, and would not necessarily reflect on the nature of the
> resource - "the server does not have" vs. "the resource does not
> have".)

Hmm, then I am puzzled. Does 303 redirection really imply that the  
server **does not have** a transferable representation? Surely 303  
redirection is used under other circumstances than this, circumstances  
which have nothing whatever to do with http-range-14 and were being  
used before the http-range-14 issue was even raised? No?

Pat

>
> Best
> Jonathan
>
>

------------------------------------------------------------
IHMC                                     (850)434 8903 or (650)494 3973
40 South Alcaniz St.           (850)202 4416   office
Pensacola                            (850)202 4440   fax
FL 32502                              (850)291 0667   mobile
phayesAT-SIGNihmc.us       http://www.ihmc.us/users/phayes







Re: Review of new HTTPbis text for 303 See Other

by Xiaoshu Wang-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Pat Hayes wrote:

>
> On Jul 9, 2009, at 5:03 AM, Jonathan Rees wrote:
>
>> On Wed, Jul 8, 2009 at 6:03 PM, Roy T. Fielding<fielding@...>
>> wrote:
>>
>>> That's because you happen to be reading it differently than
>>> what I was thinking when I wrote it.  The sentence is a bit
>>> ambiguous if you don't pay attention to what the second "that"
>>> means.  If it is reordered to say
>>>
>>>  A 303 response to a GET request indicates that the server does
>>>  not have a transferable representation of the requested resource
>>>  and is instead redirecting the client to some other resource
>>>  for further information.
>>>
>>> then I think the objection is handled without watering down
>>> the purpose of using the status code on a GET.
>>>
>>> ....Roy
>>
>> Excellent! The rewording you give above would be fine with me - I
>> would be satisfied if HTTPbis said this, or something equivalent.
>> (because then the choice to yield a 303 can be attributed to the
>> server, and would not necessarily reflect on the nature of the
>> resource - "the server does not have" vs. "the resource does not
>> have".)
>
> Hmm, then I am puzzled. Does 303 redirection really imply that the
> server **does not have** a transferable representation? Surely 303
> redirection is used under other circumstances than this, circumstances
> which have nothing whatever to do with http-range-14 and were being
> used before the http-range-14 issue was even raised? No?
Why puzzled? It makes perfect sense.  A transportation protocol express
the semantics of a server but not that of its resource.  At most, it
express what the URI owner thinks about the resource denoted by the URI,
but it is neither what the resource owner thinks nor what the resource is.

httpRange-14 is a bad design by forcing the latter semantics upon the
URI owner.

Xiaoshu



Re: Review of new HTTPbis text for 303 See Other

by Roy T. Fielding :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Jul 9, 2009, at 9:04 AM, Pat Hayes wrote:
> Hmm, then I am puzzled. Does 303 redirection really imply that the  
> server **does not have** a transferable representation? Surely 303  
> redirection is used under other circumstances than this,  
> circumstances which have nothing whatever to do with http-range-14  
> and were being used before the http-range-14 issue was even raised?  
> No?

No, at least not for GET requests.  303 (See Other) was originally
defined as "redirect with a different method" and not fully specified.
When HTTP was standardized, 303 became "see other" for the specific
purpose of redirecting a non-GET request to a GET of another resource.
Defining a specific purpose for 303 in response to a GET is what we
are doing right now.  There was no pre-existing usage of 303 in response
to a GET prior to the HTTPrange issue being decided.

....Roy


< Prev | 1 - 2 - 3 - 4 - 5 - 6 | Next >