Re: #428 Accept-Language ordering for identical qvalues

On 21/01/2013, at 7:37 PM, Roy T. Fielding <fielding@gbiv.com> wrote:

> On Jan 20, 2013, at 1:51 PM, Mark Nottingham wrote:
>> On 20/01/2013, at 11:52 PM, Roy T. Fielding <fielding@gbiv.com> wrote:
>> 
>>> On Jan 19, 2013, at 6:34 PM, Mark Nottingham wrote:
>>> 
>>>> Julian et al,
>>>> 
>>>> I think the important bit here is the context that we're talking about the semantics of an expressed preference -- which can be freely ignored, or selectively applied, without affecting conformance. The important thing is that the preference itself have clear semantics, which I think Roy's change does (especially in concert with changes elsewhere).
>>>> 
>>>> As such, I think the relevant question is whether this is specific to A-L, or all A-* that take qvalues. Roy, thoughts?
>>> 
>>> I am pretty sure it is specific to languages.  Accept has never been
>>> treated as an ordered list, Accept-Encoding was originally designed
>>> to prefer the smallest representation (changing that to qvalues was
>>> unfortunate), and Accept-Charset is almost deprecated at this point.
>> 
>> 
>> So, wouldn't the same arguments (minus the implementation status) apply to Accept?
>> 
>> I.e., if it's just a preference, and the server is free to choose among the preferences anyway (or even ignore them), why *not* say Accept is ordered?
> 
> I don't see any value in that given the lack of users setting the
> values for Accept directly (outside of command-line tool usage)
> and no assumption among UAs that Accept is ordered.
> 
> Apache httpd resolves ties in type negotiation using the
> internal ordering of representation variants.  That is unlike
> languages, for which the code deliberately checks the order received
> in Accept-Language for resolving ties.
> 
> Regarding proactive negotiation in HTTP/2, I'll note that Waka
> strips all negotiation fields.  I find the entire feature revolting,
> from every architectural perspective, and would take the opportunity
> of 2.x to remove it entirely.


The value is that Accept-* headers all use qvalues the same way, which is much less confusing for pretty much everybody, and paves the way for a potentially simpler approach in 2.0 (your feelings about having proactive negotiation at all noted).

Again, implementations are free to ignore it -- this is merely the semantics of the preference, not constraints on how it's followed.


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

Received on Monday, 21 January 2013 10:42:10 UTC