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

Reply via email to