User-Agent headers are out of control


Here's an actual User-Agent header from my logs:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; 
  .NET CLR 2.0.50727; Tablet PC 2.0; .NET CLR 3.5.21022; 
  Media Center PC 5.1; Zune 3.0; OfficeLiveConnector.1.2; 
  .NET CLR 3.5.30729; .NET CLR 3.0.30618)


This is absurd.

And it doesn't help. My server does not care if you own a Zune or have OfficeLiveConnector 1.2 installed. Most servers don't. And if they do care, there are better mechanisms for negotiating content.

Starting with the next version of every major browser, the User-Agent should simply read:

browserversion


For example:

Internet Explorer 8.0
Firefox 3.2
Chrome 0.4
Safari 4.0
Opera 10.0


And that's it.

None of this "compatible" nonsense (all lies anyway), no more details about the rendering engine. Don't even include a hint about the platform (Windows, OSX, Linux, etc). If the browser supports multiple operating systems, then it should support them all equally well enough that the server doesn't need to know.

If necessary, the browser should instead use Accept headers to send stronger signals about what type of content it desires.

Stop the User-Agent madness now. Think of the bytes.