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

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


>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