[comp.software-eng] Hypertext standard

steve@arc.UUCP (Steve Savitzky) (07/07/89)

In article <187@sierra.stanford.edu> neff@sierra.UUCP (Randall B. Neff) writes:
>...                    there is a real need for a public domain hypertext 
>file Standard.  Apple blew the lead in hypertext by making their file format 
>top secret and destroying the portability of HyperCard(tm) by requiring external
>functions and external commands written specifically for Motorola 680x0s. 
...
>Once the file format is defined, independent groups can write their own
>hypertext readers, in a similar fashion to the different USENET news readers
>available and the different X window managers being used and developed.
>
>The first level file format requires:
>	labels for the pages and page breaks.
>	define text buttons and targets (page, line, column).
>	editor for the format (GNU EMACS macros?).
>
>The second level file format requires:
>	color graphics (X window primatives?).
>	graphic buttons.
>	font names and exact formatting (LaTeX?).
>	graphic / page layout editor.
>
>The third level file format requires:
>	embedded `programming language'.
>	editor / debugger for language.

I also would like to see something like this;  I'm working on it in
what little spare time I can find.  Some thoughts:

It wants to be object-oriented.  Everything in a hypertext should be
an object, down to the character level.  Given a handle for an object,
one retrieves either attributes or contents (where "contents" is
simply one more attribute, but typically with an especially efficient
representation).  I'm thinking of a prototype-oriented system rather
than a class-oriented system; i.e. any object can have any collection
of attributes.  It has to be possible for some attributes to be
computed at run time rather than being present in the text.

The mapping from attributes to visual representation should be under
the control of the READER--the author should only provide hints.  In
other words, it should be a generalized markup system.  (See also
SGML, which has some problems (like being highly class-oriented) but
points in the right direction.)  Attributes would include things like
"chapter-head" and "emphasis" rather than "page-break" and "italics".

Any vendor that makes a product purporting to handle the standard
format should be free to invent new representations for objects (e.g.
compression schemes, encodings, and the like) but should be required
to provide PD interpreter source code for reading and writing the new
representation.  This prevents the disastrous situation we have on the
Mac and PC where every program has its own proprietary file encoding.

I'd like to see a standard set of primitive routines (i.e. a library)
for dealing with hypertext objects.  They should look as much as
possible like the routines that deal with ordinary files and
directories.  I'm thinking of something like getc being capable of
returning object handles as well as characters.  On "open" you'd want
the option of specifying a filter routine to decide, based on
attributes, which objects to expand "in-line" and which to present as
handles. 

I'd like to be able to treat an entire file system as a hypertext.  In
other words, directories and files should look like objects.  This
implies the ability to separate the structure of a hypertext (as a
collection of nested and linked objects) from its representation as a
collection of files and directories.  Similarly, it should be possible
to provide drivers to "objectify" archive files, mail and news
archives, and so on.

There needs to be an interpreted language (probably Smalltalkish) as
part of the spec, for specifying button actions, etc.  As in Lisp, one
would map the abstract syntax onto objects, making it possible to
provide different parsers for those who favor, say, Lispish or Cish
syntax.  It needs to be possible to provide compiled versions of
actions, but the interpreted version always has to be present for
portability.

It must, of course, be possible to launch random application programs
as button actions.  Attributes would let you keep track of which
programs handle which data objects.

Disclaimer:  this is a spare time project; my employer isn't involved.
My snail mail (home) address for this project is:
   Steve Savitzky, HyperSpace Express, 343 Leigh Av, San Jose, CA, 95128
   (one of these days I'll get me a Unix box at home...)
-- 
  Steve Savitzky     | steve@arc.uucp | apple.com!arc!steve 
  ADVANsoft Research Corp.    |  (408)727-3357
  4301 Great America Parkway  |  #include<disclaimer.h>
  Santa Clara, CA  95054      |  May the Source be with you!