<TITLE>Current Server Work at O'Reilly....</TITLE>

Rob Raisch (raisch@ora.com)
Thu, 10 Jun 1993 15:24:24 -0400


>Newsgroups: comp.infosystems.www
>Path: ora.com!raisch
>From: raisch@ora.com (Rob Raisch)
>Subject: <TITLE>Current Server Work at O'Reilly....</TITLE>
>Message-ID: <C882F3.LxH@ora.com>
>Organization: O'Reilly & Associates, Inc.
>Date: Sun, 6 Jun 1993 22:57:02 GMT

We have a project which will use WWW to deliver a product from ORA to
users who have 'subscribed.' This will be a free product, but we will need
to collect information from the user-base to be able to generate demographics
which will ultimately pay for the project (we hope.) (BTW, can't talk about
it, wait for the 'official' announcement.)

I've made modifications to the NCSA server code to support two features
of the new HTTP protocol spec which will allow us to log who is accessing this
'product.' I've added support for the 'From:' and 'User_Agent:' fields in
server queries to know who is asking and what they are using to retrieve.

It has occured to me that there are some decisions a server might make,
given a very little information regarding the browser the user is using.

I would like to propose the following format for the 'User_Agent:'
field, and see what people think:

User_Agent: NAME VERSION CAPABILITIES

Where the name and version would be defined by the browser maker,
and the CAPABILITIES would come from a list like:

TEXT (does this really need to be said?)
INLINE_GIF (gifs inlined ala mosaic)
GIF,JPG,PS (various graphics)
GHOSTVIEW
MOUSE
AUDIO,VIDEO (supports audio or videofiles)
MAIL,NEWS,FTP (supports these local services)
FAST (on an ETHER connection)
SLOW (on a SLIP dialup)
... (many possible capabilities to be defined)

The theory here is that documents can be rewritten 'on the fly' to
reference only those capabilities which the user has at hand.

Further assume that I have a method of managing documents locally which
return portions of a document based on capability metrics.

For example:

I am a user, using Lynx on a VTxxx. When I make a request to the
server, Lynx also sends:

User_Agent: Lynx 1.06 TEXT MAIL NEWS

since these are the capabilities which Lynx running on my host supports.

The server then retrieves the following document

------------------------------------------------------------------------------
This is a document #ifdef GRAPHICS # ifdef GIF # elif JPG # endif #else There is an inline graphic here which cannot be rendered locally. It can be retrieved by hand as: # ifdef FTP ftp://hostname/dir/file # elif MAIL "/dir/file" from hostname by using the the ftp->mail gateway at Hostname with the following commands: Get blahblahblahblahblah # endif #endif -----------------------------------------------------------------------------

(For the non-developers in the audience, the #-commands are from the
standard Unix C language pre-processor.)

And makes the proper macro expansion to send the best document
back to meet the requirements of the User_Agent.

I would get, on the browser end, something which looked like:

-----------------------------------------------------------------------------
This is a document There is an inline graphic here which cannot be rendered locally. It can be retrieved by hand as: "/dir/file" from hostname by using the the ftp->mail gateway at Hostname with the following commands: Get blahblahblahblahblah

-----------------------------------------------------------------------------

Note that the macro document never leaves the system, only the
particular rewritten version which answers the needs of the reader.

Thoughts? --</rr>