Re: Freezing the HTML spec Re: Comments in HTML ?

Dan Connolly (connolly@pixel.convex.com)
Thu, 19 Nov 92 15:36:16 CST


Message-Id: <9211192136.AA09136@pixel.convex.com>
To: marca@ncsa.uiuc.edu (Marc Andreessen)
Cc: www-talk@nxoc01.cern.ch
Subject: Re: Freezing the HTML spec Re: Comments in HTML ? 
In-Reply-To: Your message of "Thu, 19 Nov 92 13:30:11 PST."
             <9211192130.AA10669@wintermute.ncsa.uiuc.edu> 
Date: Thu, 19 Nov 92 15:36:16 CST
From: Dan Connolly <connolly@pixel.convex.com>


>Dan Connolly writes:
>> Hmmm... we definitely need a CSCW strategy for group-editing of
>> documents.
>
>I'm pulling this outta my rear end, but how about:
>
>(a) Anyone who wishes to annotate a document must be running HTTP or
>    have some other way of making his annotation available as a
>    document from his machine to the web -- possibly too much grunge
>    work for real ``users'' as opposed to hackers.

Ding! The light goes on: Let's use USENET news! Scenario:

1. I'm reading http://info.cern.ch/hypertext/WWW/MarkUp.html.

2. I see something I want to change, so I save the HTML to
a file.

3. I edit the file, trimming it down and adding my comments.

4. I enclose the file in a news article using the MIME text/x-html
content type and the quoted-printable content transfer encoding.

5. I post the article to comp.infosystems or alt.infosystems.www.

6. I make a URL out of the message-id of the article, and I
send
LINK /hypertext/WWW/MarkUp.html
<A HREF="news:<message-id>">Comments by connolly@convex.com</a>
.

to the HTTP server at info.cern.ch.

7. We add MIME style message/rfc-822 parsing to the browser. See below.

8. I'm browsing the annotated http://info.cern.ch/hypertext/WWW/MarkUp.html
and I click on "Comments by connolly@convex.com". The browser contacts
its NNTP server and grabs message-id.

9. It extracts the body, and displays the result as HTML.


Ding! Another light goes on. Here's how to handle MIME body parts:

We need a function:

void
HText_AppendBodyPart(HText* target, int (*getch)(void*), void* stream,
	int type, int subtype, char* params);
/*
 * PRE:
 * target -- hypertext object "in append mode"
 * getch -- get one character from stream object
 * stream -- opaque stream object
 * type -- one of the 7 mime primary types: MIME_TEXT, MIME_MESSAGE, etc.
 * subtype -- plain, html, postscript, gif, basic, multipart, etc.
 * params -- "name=val; name=val;..." parameters
 *
 * POST:
 * body part on stream has been consumed and appended to or linked
 * to target.
 */

text/html -- append as SGML text entity
text/* -- append as plain text
	to the SGML parser, it's an external entity text/plain NOTATION
multipart/* -- find boundary on stream
	create a new stream object out of getch, stream,
	and params that returns eof at the boundary
	call HText_AppendBodyPart recursively
message/rfc-822 -- parse headers, display headers as
	 <DL><DT>Subject<DD>foo...</DL>
	append body part recursively
message/external-body -- create a URL out of params. Parse
	message headers. Display as
	<H2><A href="URL" type="type/subtype params">description</a><H2>
*/* -- save to local file foo. display as
	<H2><a HREF="file:foo" TYPE="type/subtype params">description</a></H2>
	where description is the content-description, if available, or
	"a body part of type image/gif" otherwise.

Then we can add a separate command that takes a link, opens it, and
pipes it through metamail.

Hmmm... I gotta go code this up!

Dan