I know this is too late to even consider for 0.7.3, but I thought I'd get this out for discussion. I've been looking at browser statistics on my website, and started thinking about what various browsers do and don't report in their User-Agent identification. All report their name. Many report the rendering engine (Gecko, KHTML, etc.) Many also report the operating system and the type of system (with varying levels of detail), and some even report the language of the user interface. Here are some examples from my website's server logs: Mozilla/4.7 [en] (WinNT; U) Mozilla/5.0 (compatible; Konqueror/3.1; Linux) Mozilla/4.72 [en] (X11; U; Linux 2.4.18 i686) Opera/7.11 (Linux 2.4.20-18.9 i686; U) [en] Opera/6.0 (Macintosh; PPC Mac OS X; U) [en] Mozilla/4.0 (compatible; MSIE 5.22; Mac_PowerPC) Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.3.1) Gecko/20030524 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85 (KHTML, like Gecko) Safari/85 Some interesting notes: - Netscape and Mozilla always use "X11" for anything X-based, and have a separate field to indicate the actual OS (Linux, Solaris, *BSD, etc.) - Konqueror lets you configure the amount of detail you report. The example here is the default. - Most of the *nix-based strings use qhat you get from uname -sm or uname -srm. - Most browsers designed for Mac OS X report "PPC Mac OS X" - There are possible privacy/security implications of revealing too much information, like your system's kernel version or your primary language. I think that knowing the operating system is interesting, but much more than that probably isn't necessary, so I'd like to suggest one of the following syntaxes to extend the Dillo user-agent string: Dillo/<version> (<system>) Dillo/<version> (<platform>; <system>) Where <system> is the output of "uname -sm" (i.e. Linux PPC, FreeBSD i386, etc) and <platform> is of the form (Windows|Macintosh|X11|etc.) as used by Mozilla (see http://www.mozilla.org/build/revised-user-agent-strings.html ). This would result in identification like the following: Dillo/0.8 (Linux i386) Dillo/0.8 (FreeBSD i686) Dillo/0.8 (Linux PPC) Dillo/0.8 (PPC Mac OS X)* and so on, or perhaps: Dillo/0.8 (X11; Linux i386) Dillo/0.8 (X11; CYGWIN_NT-5.0 i686) to fit Netscape/Mozilla's pattern. * (Aside from the reversed order, Mac OS X would probably show up as Darwin unless a special case is made. This would probably mean setting the User-Agent string once and keeping it in memory instead of building it with each HTTP request. And for the longer syntax there's the issue that it still runs under X, so the platform would probably be X11 instead of Macintosh.) I have attached a quick patch which uses the utsname struct to create the first syntax, and I've tested it successfully on Linux and Cygwin on Intel hardware. So does anyone else think this is a good/bad/interesting idea? And is anyone interested in testing it on *BSD/Solaris/Mac/etc.? -- Kelson Vibber www.hyperborea.org