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

raisch@ora.com (Rob Raisch)
Date: Thu, 10 Jun 1993 15:24:24 -0400
From: raisch@ora.com (Rob Raisch)
Message-id: <199306101924.AA29410@ora.com>
To: www-talk@nxoc01.cern.ch
Subject: <TITLE>Current Server Work at O'Reilly....</TITLE>

>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

------------------------------------------------------------------------------
<HTML>
<HEAD>
<TITLE>This is a document</TITLE>
</HEAD>
<BODY>

#ifdef GRAPHICS

#	ifdef GIF

	<IMG HREF=(some gif file)>

#	elif JPG

	<IMG HREF=(some jpg file)>

#	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

</BODY>
</HTML>
-----------------------------------------------------------------------------

	(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:

-----------------------------------------------------------------------------
<HTML>
<HEAD>
<TITLE>This is a document</TITLE>
</HEAD>
<BODY>
	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
</BODY>
</HTML>

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

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

	Thoughts?  --</rr>