Re: #428 Accept-Language ordering for identical qvalues

Mark Nottingham <> Mon, 21 January 2013 02:08 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 517F421F8777 for <>; Sun, 20 Jan 2013 18:08:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -7.925
X-Spam-Status: No, score=-7.925 tagged_above=-999 required=5 tests=[AWL=0.075, RCVD_IN_DNSWL_HI=-8]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id s14iDktBnk85 for <>; Sun, 20 Jan 2013 18:08:38 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id CBBEA21F8DD6 for <>; Sun, 20 Jan 2013 18:08:37 -0800 (PST)
Received: from lists by with local (Exim 4.72) (envelope-from <>) id 1Tx6nC-0003k1-Eg for; Mon, 21 Jan 2013 02:07:22 +0000
Resent-Date: Mon, 21 Jan 2013 02:07:22 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtp (Exim 4.72) (envelope-from <>) id 1Tx6n8-0003jH-3Q for; Mon, 21 Jan 2013 02:07:18 +0000
Received: from ([]) by with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from <>) id 1Tx6n6-0004mw-Ck for; Mon, 21 Jan 2013 02:07:18 +0000
Received: from [] (unknown []) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id B466622E1F3; Sun, 20 Jan 2013 21:06:50 -0500 (EST)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\))
From: Mark Nottingham <>
In-Reply-To: <>
Date: Mon, 21 Jan 2013 13:06:47 +1100
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <em144175d2-e44d-4209-b5a2-f2dbf14d99d4@bombed> <>
To: Amos Jeffries <>
X-Mailer: Apple Mail (2.1499)
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-4.1
X-W3C-Hub-Spam-Report: AWL=-2.220, BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001
X-W3C-Scan-Sig: 1Tx6n6-0004mw-Ck 5ee8fcbbe5079a9b80f2cb02c55878ee
Subject: Re: #428 Accept-Language ordering for identical qvalues
Archived-At: <>
X-Mailing-List: <> archive/latest/16074
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

That's interesting, thanks. 

One thing to add; even if the client includes a q=0, the server can still ignore it. 


P.S. If you are able (considering privacy issues, etc.) and want to dump such data in a useable format, feel free to ask for a repository on the github account.

On 21/01/2013, at 12:56 PM, Amos Jeffries <> wrote:

> On 21/01/2013 12:30 p.m., Adrien W. de Croy wrote:
>>  ------ Original Message ------
>> From: "James M Snell" < <>>
>>> +1.. in fact, for 2.0, I'd very much like to get rid of q-values entirely and depend entirely on order.
>> same here.
>> The idea may have been laudable in 1998, but really, how can a web server tell if some resource is 80% better than another? A human needs to tell it, and humans have enough trouble with other things.
>> the q=0 option would need to be turned into a Naccept-* header or something.   But does anyone even use it outside of testing for 406 responses which never come?
> My collection of 2 years worth of language headers says no.
> Of 2018 unique Accept-Language header field-values;
>  1532 are using q-values in a strictly sorted list
>  491 are not using q-values
>  14 are using "q=0.0".
>  5 are using q-values and non-qvalues without ordering the sent list (1 looks otherwise normal, teh others are using puny-codes)
> The 14 are also unique in being very long and having multiple entries with equal q-values. They are still without exception strictly ordered with the entries having no q-value entries first (as if q=1.0 was used for sort but omitted sending). They are also containing a number of oddities such as multiple entries for language codes with differing q-values.
> NP: Of those 14 odd A-L headers noted above I have UA details on 8 of them. All claim to be Firefox but the Gecko dates do not line up with other info on those versions (the 11.0 was released some years before 3.5.9 on the same OS) so the whole input is a bit suspect.
> The 5 cases un-ordered list have puny-code values with no q-value being listed after an otherwise normal series of languages. Like so:
> "en-us,en;q=0.5,x-ns1qHkbtrt8Nhv,x-ns2E1e0Nnym7b6"
> I have a few cases of q-value ordered list followed by wildcard "*" with no q-value. Sender obviously assuming the list is ordered.
> Broken down by UA, which I started ~6 months ago at Juliens suggestion I have 54289 distinct UA visiting, of which;
>  21756 are not sending A-L header at all
>  19621 unique UA are using a single language code with no q-value
>  12495 unique UA are using q-values as above.
>  8 are sending only wildcard "*" or "*/*"
> The remainder ~400 roughly match up with the 491 AL field-values not using q-values. Are older agents (Windows 98, NT, 2k stand out), agents sending the same language multiple times (VoilaBot variants and Safari there), or sending sub-language variants with the generic form last eg "en-GB,en", "en-US,en", "en-US,en,*" (Tablets and Mobile Safari mostly). Obviously assuming sorted lists even back into the Windows 98 ones.
> There are also a few bots sending exactly 2 puny-code entries.
> Amos

Mark Nottingham