Re: Issue 166: clarify term "User Agent" and resolve inconsistencies with W3C specs

This is just so much arguing about the number of angels that can fit on 
the head of a pin. In the HTTP world, the terms "User Agent", "Agent" and 
"Client" are all munged together such that making a distinction requires
making arguments which don't hold together. More below ....

On Fri, 16 Dec 2011, Mark Nottingham wrote:

> Larry,
> "user agent" and "client" are definitely distinct in the documents.

Since the very early days, the distinction has never held up in my mind.

> A client is one party to client/server relationship, scoped by a
> connection. Proxies are clients. Gateways are clients. And, User Agents
> are clients.

Using the assertion below that spiders are "User Agents", I assert that
proxies and gateways are also user agents because they never take action
without the action of a user at some point in time.

> A user agent is a special kind of client; it's the one that originated the client.

All clients are user originated.

> Browsers are user agents. So are spiders, etc.
> I think you may be getting hung up on "user", always mapping that to a
> live human in front of a keyboard at the time that the request is made.
> This isn't necessarily the case -- sometimes the live human at the
> keyboard does their keyboarding at some other time.

I think the whole world is confused by this attempt to distinguish client
vs. user agent. In the HTTP world, everything request is in response to
a user action, including the hidden update and news feed actions
by a browser.

> This is true even when the UA *is* a browser; consider all of the
> automatic updates and background checks that browsers tend to do these
> days.
> As I think Julian has asked, it would be helpful if you could identify 
> *specific* parts of the documents where it's important to distinguish 
> between at-the-keyboard-now and at-the-keyboard-sometime.

I don't know that there is a way to improves things short of wholesale
replacement of user agent with client or vice versa. Or some new

Essentially, there are synchronous clients and asynchronous clients. We
generally tried very hard to not dictate how errors should be handled
by the client software.

Even synchronous clients (user@keyboard) may have active software
(e.g., javascript, flash, java applets, etc.) which intercept
error conditions and take actions on behalf of some user who may
not be the user at the keyboard. The whole User Agent vs. Client
distinction is not useful in helping folks understand the protocol
and requirements for robust interoperation.

Received on Friday, 16 December 2011 00:04:52 UTC