Zigzag (Software)

ZigZag is a hypertext system and multidimensional data model developed from the work of Ted Nelson. It represents information as cells connected along named dimensions rather than as records contained within a fixed hierarchy or rectangular table. The term refers both to the underlying structure, commonly called zzStructure, and to the software environments constructed for editing and viewing that structure.

Although ZigZag emerged from the same research program as Project Xanadu, it addresses a different level of information organization. Xanadu specifies a distributed document architecture with persistent identity and transclusion, whereas ZigZag defines local relationships among units of information. Implementations have combined this structural model with interactive views that expose selected dimensions as navigable screen axes.

Data structure

A ZigZag space consists of cells containing data and connections. Every connection belongs to a named dimension and joins two cells in a directed relationship. Within a given dimension, each cell has no more than one neighbor in the positive direction and one neighbor in the negative direction. The resulting sequence of connected cells is known as a rank.

A single cell belongs to ranks in multiple dimensions without being copied into separate containers. One dimension might relate a cell to the next item in a document, while another dimension relates the same cell to a descriptive category. A further dimension may associate it with an authorial or temporal context. These relationships remain structurally independent even when an interface displays several of them together.

This arrangement differs from a conventional spreadsheet, whose cells occupy positions determined by a predefined rectangular coordinate system. ZigZag dimensions are created as part of the stored structure, and ranks need not have equal length or intersect regularly. The model consequently treats a table as one possible configuration of links rather than as the fundamental form of the information space.

ZigZag also differs from a general graph database. An unrestricted graph permits a node to have numerous outgoing edges of the same type, while a ZigZag cell has only one positive and one negative connection in each dimension. Branching structures therefore require additional dimensions or intermediate cells. This restriction gives every dimension a locally linear topology and makes traversal along a selected direction unambiguous.

Views and interaction

The stored structure does not assign permanent screen coordinates to cells. A ZigZag view selects dimensions and maps them onto the axes or other organizing features of a visual presentation. Changing the selected dimensions produces another projection of the same cells without transforming the underlying data.

Early interfaces commonly displayed one dimension horizontally and another vertically around a current cell. Movement changed the current position by following an existing connection, after which the display was reconstructed around the newly selected cell. Views with additional dimensional context represented off-axis relationships through nested regions or supplementary visual channels.

This separation between structure and presentation is central to the software architecture. A view does not constitute a separately stored document, because it derives its arrangement from existing dimensional connections. Conversely, editing a connection alters every view that depends on the affected dimension. Cell contents and structural relationships remain distinct, allowing an implementation to display identical topology through different user interfaces.

Development

Nelson formulated the zzStructure model as part of his broader investigation of nonsequential writing and computer-mediated information. He defined the concepts of cells, dimensions, ranks, and directional traversal, while distinguishing them from the document-linking mechanisms used in Xanadu.

Andrew Pam built an early operational ZigZag implementation that converted Nelson's structural description into an interactive software environment. This implementation established the basic correspondence between dimensional connections and screen navigation, providing a concrete basis for later systems.

Development subsequently continued through GZigZag, a Java implementation associated with the University of Jyväskylä. Tuomas Lukka directed the project and created its principal software framework, which separated storage, dimensional operations, rendering, and interaction into distinct components. GZigZag was distributed as free software and served as the main experimental platform for the model during this period.

Within the same development phase, You Watanabe created GZigZag's multidimensional view-dispatch system. The component mapped user-selected dimensions onto visual axes and rebuilt the displayed neighborhood after structural movement or editing. Its integration allowed multiple projections to operate over a shared cell space without storing a separate layout for each projection.

Later work reorganized several of these ideas outside the original GZigZag codebase. Tuomas Lukka and Benja Fallenstein created Fenfire, an experimental environment that combined graph-oriented information with interactive spatial views. Fenfire did not preserve every constraint of zzStructure, but its architecture continued the separation between persistent relationships and dynamically generated presentations.

Computational properties

The dimensional constraint makes immediate traversal a constant-size local operation. Given a cell and a dimension, an implementation examines only the connection assigned to the requested direction. Traversal of an entire rank remains proportional to the number of cells encountered, as each successive position is reached through its neighboring connection.

Insertion into a rank changes the links surrounding the insertion point while preserving the linear order of that dimension. Removal similarly reconnects the adjacent cells when the deleted position lies between them. Because the same cell also participates in other dimensions, modifying one rank does not inherently change its position elsewhere in the space.

Persistence systems for ZigZag must preserve cell identity independently of displayed location. They must also retain the dimension associated with every connection and enforce the one-neighbor-per-direction rule. Implementations have represented these properties through in-memory objects, serialized cell spaces, and transactional storage layers, but the abstract model does not prescribe a particular storage format.

The structure places some relationships into topology that a relational database would usually express through attribute values and foreign keys. This correspondence is incomplete because a relational table permits multiple tuples to reference the same value without imposing a linear order among them. ZigZag instead represents order directly through neighboring cells, while higher-level constraints remain the responsibility of the application.

Relationship to hypertext

Conventional hypertext systems generally treat links as references between document locations. ZigZag dimensions give links a stronger structural role because each named connection contributes to an ordered rank. The identity of a dimension therefore influences both navigation and the organization presented by a view.

Cells need not correspond to complete documents. They may contain smaller textual units or references to externally stored material, depending on the implementation. A document-like object emerges from ranks and intersections among ranks rather than from a required container boundary.

ZigZag remains distinct from the World Wide Web, whose resource model centers on addressable documents and one-way hyperlinks. Web content has nevertheless been used as cell data, and ZigZag views have represented relationships among web resources. Such use incorporates web identifiers into a zzStructure without changing the topology of the web itself.

See also

  • Project Xanadu, Nelson's architecture for persistent networked documents and transclusion
  • Hypertext, the broader class of systems that connect information through navigable links
  • Graph database, a database model based on nodes and explicitly stored relationships
  • Multidimensional database, a family of systems that organize information through multiple analytical dimensions
  • Spatial hypertext, which derives relationships partly from the visual arrangement of information
  • Fenfire, a later experimental environment influenced by GZigZag research