Subject: Re: [httpbis] #81: Content Negotiation for media types

From: Mark Nottingham <[email-masked]>
Date: Mon, 17 Aug 2009 16:02:05 +1000

[ re-sending with correct list address ]

Straw-man:

---8<---

HTTP responses include a representation which contains information for  
interpretation, whether by a human user or for further processing.  
Often, there are different ways to serialise the same information into  
a representation; for example, in different formats, languages, or  
encodings.

Since different agents have different preferences regarding the  
selection of the "best" representation of a resource, due to their  
capabilities (e.g., formats that can be rendered, languages that are  
understood), it is necessary for HTTP to provide mechanisms for  
"content negotiation" -- the process of selecting the best  
representation of a given resource, when more than one is available.

This specification defines two patterns of content negotiation;  
"server-driven", where the server selects the representation based  
upon the client's stated preferences, and "agent-driven" negotiation,  
where the server provides a list of representations for the client to  
choose from, based upon their metadata.

Both patterns are widely used, and have trade-offs in applicability  
and practicality. In particular, when the number of preferences or  
capabilities to be expressed by a client are large (such as when many  
different formats are supported by a user-agent), server-driven  
negotiation becomes unwieldy, and may not be appropriate. Conversely,  
when the number of representations to choose from is very large, agent- 
driven negotiation may not be.

Note that caches can be instructed on how to serve server-negotiated  
responses using the Vary header [ref], although this mechanism is not  
richly descriptive.

--->8---

I'm not user what to say about conneg based upon User-Agent...

On 16/08/2009, at 5:52 AM, Larry Masinter wrote:

> I dropped this action item, but I thought that mnot had agreed
> to pick it up, rather than let it drop.
>
> The wording right now is:
>
>   Most HTTP responses include an entity which contains information for
>  interpretation by a human user.  Naturally, it is desirable to supply
>  the user with the "best available" entity corresponding to the
>  request.  Unfortunately for servers and caches, not all users have
>  the same preferences for what is "best," and not all user agents are
>  equally capable of rendering all entity types.  For that reason, HTTP
>  has provisions for several mechanisms for "content negotiation" --
>  the process of selecting the best representation for a given response
>  when there are multiple representations available.
>
>     Note: This is not called "format negotiation" because the
>     alternate representations may be of the same media type, but use
>     different capabilities of that type, be in different languages,
>     etc.
>
>
> I'd want to say a couple of things in this section.
>
> * I'd want to point out the use pattern of agent-driven negotiation
> where the processing happens by the HTTP response being active
> content which does selection or adaptation itself -- this is
> a common use pattern, and CSS media queries and other kinds of
> "active" content often move content-type negotiation out of
> the HTTP realm.
>
> * I think it's important to point out the widespread use of
> "USER AGENT" heuristics as a way of determining client capabilities.
>
> * I'd want to point out that content negotiation is used for
> other purposes than selecting the best content for presentation
> to a human user.
>
> I had this action item for a year and didn't wind up with better
> text. I'm willing to work with someone else on this but my authoring
> capabilities aren't up for it.
>
>
>
>
> -----Original Message-----
> From: httpbis [mailto:[email-masked]]
> Sent: Wednesday, July 29, 2009 6:11 AM
> To: [email-masked]; [email-masked]; [email-masked]
> Subject: Re: [httpbis] #81: Content Negotiation for media types
>
> #81: Content Negotiation for media types
> ---------------------------- 
> +-----------------------------------------------
> Reporter:  [email-masked]  |        Owner:  [email-masked]
>    Type:  design          |       Status:  new
> Priority:                  |    Milestone:  unassigned
> Component:  p3-payload      |      Version:  00-draft
> Severity:                  |   Resolution:
> Keywords:                  |       Origin:  http://www.alvestrand.no/pipermail/ietf-types/2006-April/001707.html
> ---------------------------- 
> +-----------------------------------------------
>
> Comment(by [email-masked]):
>
> I disagree that content negotiation does not work in general. Sure  
> it has
> limitations when it comes to wide range properties like Content-Type
> negotiation, but if one considers that clients in most cases MAY  
> retry the
> request with a different Accept setting if the result they got the  
> first
> time wasn't acceptable it still works out quite well even for Accept
> /Content-Encoding. Remember that Accept can include negative selectors
> saying "I do NOT want this" (q=0) as well as positive ones of varying
> degrees (q>0).
>
> -- 
> Ticket URL: <http://trac.tools.ietf.org/wg/httpbis/trac/ticket/81#comment:4 
> >
> httpbis <http://tools.ietf.org/wg/httpbis/>
>

--
Mark Nottingham     http://www.mnot.net/