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!