comments? MIME types for HTTP

Tony Sanders <sanders@bsdi.com>
Errors-To: sanders@bsdi.com
Errors-To: sanders@bsdi.com
Message-id: <9308112133.AA10908@austin.BSDI.COM>
To: www-talk@nxoc01.cern.ch
Subject: comments? MIME types for HTTP
Errors-To: sanders@bsdi.com
Reply-To: sanders@bsdi.com
Organization: Berkeley Software Design, Inc.
Date: Wed, 11 Aug 1993 16:33:38 -0500
From: Tony Sanders <sanders@bsdi.com>
Status: RO
Here is a rough draft of a proposal for various MIME type information
to be used with HTTP.  Any comments?  Hopefully from someone that knows
the MIME standard pretty well and point out conflits (though some are
intentional where I think MIME is broken).

Here are a couple of examples of what it would look like:

Request:
  Accept: image/gif; class=color; depth=8;
          width=1024; height=768; xdpi=85; ydpi=85

Complex return type:
  Content-Type: archive/tar; name="foo.tar"; encoding="compress, uuencode"




<HEAD>
<TITLE>HTTP/1.0 MIME and Client Profile Proposal (rough draft)</TITLE>
</HEAD>
<BODY>
<H1>HTTP/1.0 MIME and Client Profile Proposal</H1>

Here are my proposed values for various types of data.  The Client
profile information is data the client can send along with the Accept:
field so the server can better choose the return data type.
For example:
<PRE>
  Accept: image/gif; class=color; depth=8;
          width=1024; height=768; xdpi=85; ydpi=85
</PRE>

With this additional information the server can try to make better choices
about the data it returns like the Aspect Ratio, image size, color or B&W,
etc. <P>

Types marked with a `*' are standard MIME types: <P>

<PRE>
Content-Type:                       		Description
 application/dvi 		dvi		TeX DVI
 application/latex 		latex		LaTeX Source
*application/octet-stream	bin		Uninterpreted Binary Data
*application/postscript		ai eps ps	PostScript
*application/rtf 		rtf 		RTF
 application/tex 		tex		TeX Source
 application/texinfo 		texi		Texinfo
 application/wais-source 	src		WAIS Source
 application/troff		roff		Troff
 application/troff-ms		ms		Troff w/MS Macros
 application/troff-me		me		Troff w/ME Macros
 application/troff-man		man		Troff w/MAN Macros
*application/oda		oda
*application/atomicmail				Atomicmail
*application/andrew-inset			Andrew-inset
*application/slate				Slate
*application/wita				Wang Info Transfer
*application/dec-dx				Digital Doc Transfer
*application/dca-rft				IBM Doc Content Arch
*application/activemessage
*application/applefile
*application/mac-binhex40
*application/news-message-id			RFC 1036
*application/news-transmission			RFC 1036
*application/wordperfect5.1
*application/pdf		pdf
*application/zip		zip		PKZIP
*application/macwriteii
*application/msword
*application/remote-printing			RFC 1486
 archive/bcpio			bcpio		Old Binary CPIO
 archive/cpio			cpio		IEEE Std1003.2 (``POSIX'') CPIO
 archive/gtar 			gtar		Gnu Tar
 archive/shar 			shar		Sh Shar
 archive/sv4cpio		sv4cpio		SVR4 CPIO
 archive/sv4crc			sv4crc		SVR4 CPIO w/CRC
 archive/tar 			tar		4.3BSD Tar 
 archive/ustar			ustar		IEEE Std1003.2 (``POSIX'') Tar
 audio/aiff 			aiff
*audio/basic 			au snd		8-bit u-law [PCM] / 8000 Hz
 image/cave 			cave
 image/cmu-raster 		ras
 image/elvm 			evlm
*image/gif 			gif		Graphics Interchange Format
*image/ief			ief		Image Exchange Format
*image/jpeg 			jpeg jpg	
 image/portable-anymap 		pnm		PBM Anymap Format
 image/portable-bitmap 		pbm		PBM Bitmap Format
 image/portable-graymap 	pgm		PBM Graymap Format
 image/portable-pixmap 		ppm		PBM Pixmap Format
 image/rgb 			rgb
*image/tiff 			tiff tif	Tagged Image File Format
 image/xbitmap 			xbm		X Bitmaps
 image/xwindowdump		xwd		X Window Dump (xwd)
 text/html 			html		HTML
*text/plain 			txt		Plain Text
*text/richtext			rtx		MIME Richtext format
 text/setext 			etx 		Structure Enchanced Text
*text/tab-separated-values	tsv		Tab Separated Values
 video/movie 			movie
*video/mpeg 			mpeg mpg	Motion Picture Experts Group
*video/quicktime 		qt		QuickTime
 www/* 						Reserved Internal WWW type
*multipart/mixed
*multipart/alternative
*multipart/digest
*multipart/parallel
*multipart/appledouble
*message/rfc822
*message/partial
*message/external-body
*message/news

Common Attributes:
 q		= quality factor (float between 0 and 1 inclusive)
 mxb		= max transmission bytes
 mxt		= max transmission time in seconds
 name		= document name (this is just a hint for save diaglogs)
 type		= data type (mostly used with application/octet-stream)
 charset	= e.g., US-ASCII (ISOXXXX)
 language	= per ISO standard: e.g., en_US (ISO3316/ISO639)
 encoding	=	    	Description
	hqx 	 	hqx	Mac Compressed
	gzip 	 	z	Gnu Zip Compressed
	zip 	 	zip	gzip Compressed
	compress	Z	compress'ed
	uuencode	uu	uuencode'ed
	btoa		btoa	btoa'ed

	Multiple encodings are possible and should be applied right to left
	e.g., foo.tar.Z.uu would be encoded as:
	    Content-Type: archive/tar; name="foo.tar";
	                  encoding="compress, uuencode"

Extended attributes for all image and video types:
 class	= gray / color
 depth	= bitplanes (commonly 1, 4, 8, 16, 24)
 width	= pixels
 height	= pixels
 xdpi	= x dpi
 ydpi	= y dpi

Extended attributes for audio types:
 srates	= sample rates (in Hz, e.g., srates="8000,22000")
 widths	= sample sizes (in bits, e.g., "widths="1,8,16")
</PRE>

I encourage browsers to have MIME type -> action be user definable.
Something like: <P>

<PRE>
    image/*		xv
    video/mpeg		mpeg_play
    audio/basic		audio_play
    text/html		internal-html
    text/*		internal-text
    */*			internal-save-as
</PRE>

An alternative would be to allow execution from your "save as" dialog
like rn does (e.g., "|patch" does what you would expect). <P>

________________________________________
<ADDRESS><A HREF="/hyplan/sanders.html">Tony Sanders</A></ADDRESS>
</BODY>