I've reviewed both User-Agent specs: http://www.mozilla.org/build/user-agent-strings.html [obsolete] http://www.mozilla.org/build/revised-user-agent-strings.html
And looked at some live U-A strings logged by Apache: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.7+) Gecko/20020104 Mozilla/5.0 Galeon/1.0.1 (Linux i586; U;) Gecko/0 [sic!] Mozilla/5.0 Galeon/1.1 (Linux i686; U;) Gecko/20011122 Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2 Mozilla/5.0 (X11; U; Linux i686; en-US; Nautilus/1.0Final) Gecko/20010901 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:0.9.7+) Gecko/20011220 via Smart Cache 0.60 That's quite a mishmash, and quite hard to parse for stat generators. Proposed Change: remove the rv: in the comment field. The 'revision', or milestone, is the version of the entire browser suite prodct. As it indicates the version of a complete product, it should be published similar to the Netscape6/ "VendorProductToken". This would also mean rv: is not present in Netscape branded builds, which is correct. Sites should not be detecting features in Gecko based browsers from the rv: field. This is what Gecko/ is for. And no, Gecko/ is NOT a time stamp. "Gecko/20011019 Netscape6/6.2" means NS6.2 renders things as gecko trunk did back on 20011019. 20011019 is not when NS6.2 was released, but when it was pulled from the trunk. The spec specifies this: "For branded versions of Mozilla, the GeckoVersion should correspond to the date the code was pulled from mozilla.org, and may not necessarily correspond to the date portion of the generated BuildID." So where does the Mozilla suite specify its milestone? At the end, just like Netscape. We are a vendor of the product as well, so VendorProductToken should be used. I recommend calling it something other then "Mozilla", however, so it's not confused by the Mozilla/5.0 at the beginning, and screw up poorly written U-A checkers. I propose switching from: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.7+) Gecko/20020104 to: Mozilla/5.0 (X11; U; Linux i686; en-US) Gecko/20020104 Seamonkey/0.9.7+ Netscape would also remove the rv: in their U-A: Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2 to: Mozilla/5.0 (Windows; U; Win98; en-US) Gecko/20011019 Netscape6/6.2 This change would make ALL gecko based browsers be very uniform, and even dynamically nameable for log parsers... All it would have to do is look at the token after Gecko/. Now it has to do all kinda of crazy things, like noticing there's nothing in the VendorProductToken location, so searching for rv:. Galeon and Nautilus (and probably others, what's Kmelon/Skipstone look like?) don't follow the spec very well, I'll contact them about this. When they do though, we'll be very uniform, and "Seamonkey" won't be the odd one out.. the special case for log parsers. I have a few other issues with the spec, all minor, mainly clarification and updating, that I'll address later (probably privately with dbaron). The above is the important part. /jmd
