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.
A CUSTOMIZABLE SPATIAL WORLD
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
• 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
SHARING OF DOCUMENTS, STRUCTURES, CONTENT
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.]