99.11.29   ( d15
crudcheck 01.05.23
To Ted Nelson Home Page

A Design for a New Computer World (Overview)
COMPANION DOCUMENTS TO THIS ONE (names with an asterisk are not yet available)

The ZX design (actual name yet to be established) is intended as an alternative structure for two worlds which in my view have grown up twisted and all wrong: personal computing and now the World Wide Web.

Thus this is an entire personal computing environment, with ALTERNATIVES TO:
windowing as generally known;
applications as generally known;
electronic documents as generally known;
the Web as generally known.

It is intended to offer
an editing and presentational system for complex documents, with deep structuring, built as a new implementation of the Xanadu document model.
unusual new views and facilities, especially for showing the origins and re-use of content
the equivalents of conventional word processing, spreadsheet, database, perhaps more easily
branching interactive media (video, audio and animation-- often called "multimedia") in highly versatile new ways
easy and fast integration of work coming in from a single user's different machines and PDAs
a new collaborative environment for multiple users
an alternative system of deliverables on the Web, presenting dynamic interactive pages in ways that XML cannot.

However, the use of the word "new" in the above descriptions is in a way misleading, since these designs are at most variants of designs I have been working on for a long time, though newly integrated together.  This combines some of my earliest ideas with my latest, and fuses my two major designs-- Xanadu(tm) and ZigZag(tm)-- into a single unified structure.  It also integrates my work of the last several years-- the initial ZigZag implementations by Andrew Pam, transcopyright and transpublishing, and two research designs of recent years, OSMIC (implemented by Ken'ichi Unnai) and LUSTR (a concept design around multidimensional viewing and morphing).

Because this system will be available in Open Source, it will be fully extensible and customizable at all levels by all parties.  Thus my personal realization of it (the "Director's Cut") will have no particular privileged status except for easy availability as a package, and whatever appreciation and prestige it can muster.


This is built around the ZigZag(tm) system of structure, a very pure and simple structural quark from which more familiar structures may be built--
arbitrary networks.

More importantly, you may build--
tailor-made structures designed for exactly what you want.

ZigZag structure has various advantages which are not generally found together--
built-in viewability in rows and columns
reversible exploration at all times.

So far this describes a spreadsheet, but ZigZag also offers--
unlimited growth in unexpected directions (unlike spreadsheet)
unlimited growth in unexpected types of content (unlike conventional database)
complete consistency as to overall rules and structure.  (Unlike most software, period.)

The ZigZag mechanism is fully transparent, accessible and extensible, with no hidden proprietary features.  ZigZag is built on multidimensional lists, and may be said to live in quantum hyperspace (meaning it is built of the smallest possible units (quanta) in multiple dimensions (hyper-)).

These concepts are explained elsewhere in various ZigZag documents.

Under the Hood: Building up to other functions

Everything in the system is built up of cells in the fundamental ZigZag structure space.  Users and customizers may easily see and alter all parts down to the very bottom.

ZigZag structure allows you to add new structure and mechanism at any time which does not interfere with structures already in place.  However, the ideal is to have a cleanly integrated overall structure with as few mechanisms as possible.

The design challenge in creating this system has been to map all functionality to the fundamental structure space in a clean and consistent manner.  The present design is not necessarily final in this regard.


This all has a fundamentally spatial structure, but not limited to the familiar two dimensions (as embodied in paper and the WYSIWYG ideal) or the familiar three dimensions (such as VRML).

Once we leave behind these familiar spaces, many new things become possible.  Dimensions and spaces may be constructed and customized as wanted.  From the fundamental discrete structure space (ZigZag) we build up to continuous multidimensional projection spaces, which may be Euclidean or paradoxical pseudo-Euclidean.  These offer
Multidimensional parameters for display
New multidimensional visualizations, based especially on 3D rotations of subsets of the multiple dimensions.

The fundamental discrete structure space of ZigZag is simple-- indeed simpler than conventional spaces-- but surprising in various ways.  The continuous presentational spaces we will create above it offer yet other surprises.  These spaces together offer many paradoxes which derive from our expectations of conventional space-- both the paradoxical discrete space of the underlying structure, and the paradoxical multidimensional spaces in which we animate and transform new kinds of views.


ZX will not offer separate applications, but rather "applitudes"--
zones of functionality not walled off (as separate applications), but resulting from certain operations and views taken together
activities you might want to do by themselves, ignoring the rest of the system
activities that are easier to explain by themselves, even though they are deeply woven into the system.

ZX includes applitudes to do what are usually the functions of
word processor
hypertext editor
Macromind Director
and others which will become clear.

TEXT FUNCTIONS [in another document]

Because the text functions of this system are very different from the usual, and require considerable explanation, the model is discussed in a separate document (ZZtext.html*).

CELL PROGRAMMING [in another document]

Because the programming functions of this system are very different from the usual, and require considerable explanation, the model is discussed in a separate document (*ZZcellProg.html.)


The cell level of ZigZag provides mechanisms for anything which spreadsheets can do.  However, instead of mapping work to only the two dimensions of paper, ZigZag allows new freer constructions.

There is no need to constrain ZigZag structures to the rectangular tables of conventional spreadsheet.  There is usually no need for empty cells, as on paper spreadsheets.  However, if people have a use for exact 2D gridlike tables, just like paper spreadsheets, these are easily constructed using ZigZag.

ZigZag structure should be much easier to manipulate than conventional spreadsheets.  Translation from conventional spreadsheets to the more easily manipulated ZigZag form may be provided by a simple utility, which we expect to be constructed.

The mechanism is as follows:
Cells whose values are to be calculated from others are of type Result.  Like result cells in spreadsheets, they retain no stored value except that derived from other cells connected to them.
These result cells have calculation paths to the cells from whose value they derive.  These calculation paths are constructed on dimension-pair d.trigger and co-dimension d..trigger-list.  (Such a pair of codimensions allows a single value to be transmitted to several different cells independently along co-visible paths.)
Whenever any cell's value changes (for example by being edited and closed), the system looks posward along dimensions d.trigger and d..trigger-list.  If a result cell is found, that cell is recalculated.

This method offers instantaneous and transparent use of calculation results in text, as follows:
Input cells may be embedded in text, making creation of text forms for input easy
Result cells or their clones may be embedded in text, showing results directly.
There is no need for intermediate tables or structures, except as possible organizing or visualizing aids.

This system makes it easy to--
change calculations which are embedded in a text
edit the text freely
see all the instances of the calculation in the text
rotate the structure to view and edit the calculation path.

Cell calculations may be done by--
simple ZigZag cell programs (described in *ZZcellProg.html)
imported program routines (in Perl, C, C++, or Java).


ZigZag is a kind of database built out of independent cells.  However, the conventional sense of "database" is "system of records with corresponding parts".  Such databases are easily constructed with ZigZag.

ZigZag structure should be much easier to manipulate than conventional database.  Translation from conventional databases to the more easily manipulated ZigZag form may be provided by a simple utility, which we expect to be constructed.  Database contents may be exported from the database as flat files, and converted to ZZ cells with a Perl script.

The conversion from database is established by creating a cell for each existing field in a record.  This permits--
skipping fields which are not present
having more than one instance of a given field type, since more than one cell may logically occupy the same row-and-column intersection (having the same headcells in the same two dimensions).

Database analyses may be done by--
simple ZigZag cell programs (described in *ZZcellProg.html)
imported program routines (in Perl, C, C++, or Java).

It should be simple to present database records as a cloud of flying rotatable items in N1/2D space.  For example--
relative measures of items on four different scales in 3D and color
particular types of item with different graphics or animation
fly-through to a particular zone in the data space for better viewing and study.

It should also be possible to--
show a connection between one record and another as a line in 3D space
show a connection between any record and a map
query an item in the space by pointing at it, seeing at once its details.

Note that the functions to do these things do not exist, but exact methods to do them are easily set up.


Currently the leading program for constructing interactive systems is MacroMind Director, which offers an integrated package for interactive media-- building and presenting interactive presentations with sound, video, animation, Photoshop graphics, etc.

ZX will have a presentational applitude on ZigZag with many of the same capacities.  However, this will be based not merely on a branching structure of 2D animations, as with Director, but using n-dimensional parameters which allow remarkable new facilities.  (See ZZviews.html.)


A ZX mime type should make it easy to send clusters of cells and registered content between users, synchronizing content and views.  (I think I want to call this the XU mime type, and make sure it covers other Xanadu systems.)

The mime type will especially contain
cells with their universal IDs
referential content of the cells as addressed portions of permascrolls, with their universal ID addresses
MD5 verification in Merkle hash enfilades for verifying any independently-sent part of a larger data system.

ZX Web Pages

ZigZag functionality should be deliverable in browser pages.  (What is now the central standard of the World Wide Web is the *browser*, not just HTML or HTTP.)

The mime type mentioned above should also work with Web delivery, since HTTP recognizes mime types.

Everything in the ZX system should eventually be doable in browsers remotely, from ZigZag quantum structure (ZZ browsing and editing) up to morphing and rotations in multiple dimensions.  (Closest thing to it is at http://xxx.nasa.gov/) [See nbk99.10.24-- Roger birthday party.]