Zigzag, Xanadu, and the Docuverse

Jan 20th, 2024 at 4:45 pmTechnology

Hey friends, this has become one of my major interests since ~ 2016 that I'd like to share, I think it fits with the theme of Archival + Old Tech but its also something new that hasn't been given its proper time in the spotlight. This took me no less than 7 years of study to arrive at a basic understanding of the conceptual framework, so don't feel bad if you don't grok it on first read. But once you do, be prepared for things you 'cannot unsee', here there be dragons, abandon all hope, etc.


Ted Nelson invented Hypertext, the Back Button, and an alternate version of the internet wherein everything is deeply intertwingled.

My introduction to this piece of software history was not technical, but political, so my apologies if this description seems a bit different from how others may approach the topic.

I first became aware of Xanadu stemming from my interest in VR. A bit of personal history, I've been interested in VR (headsets, HMD's) since this latest wave starting with the Oculus DK1. VR technology was and still is cost prohibitive, so I guess at some point I got exposed to the literature and history while twiddling my thumbs and waiting for the price to go down to get into VR. Anyway, the main guy credited to pioneering VR is called Jaron Lanier. In many of his talks and works, Lanier acknowledges issues surrounding the web and economics. He references this phenomenon pointed out by Count Alfred Korzybski who highlights that whenever a new technology is introduced, people always manage to abuse the technology, no matter what it is from the whip to the steam engine, to the point of societal collapse and insurrection; and only then are ethics applied. Lanier offers a social democratic solution, instead of requiring any bloody insurrection to get ethical, why not start paying people for the content they produce online?

In short: Having a Transcopyright system in place would create a middle class, by monetizing the things people already do online for free. Lanier calls this Data Dignity.

So I was exposed to the idea of Xanadu first as an alternative licensing model... Most people's initial hurdle is the "DRM aspect". Having grown up with KaZaa, Torrenting, and basically unlimited access to any piece of media or bit of information I could possibly conceive of at my fingertips with enough searching; I'm sympathetic to the weariness surrounding anti-freedom addition of DRM models to things you're already used to getting for free. But don't get it twisted, microtransactions in Xanadu are not the same as DRM.

The economic model of the current internet is horribly broken. And we're seeing this at its pique with LLM, "AI Art" being arife with Copyright issues these days. Its all fine and dandy ripping people off anonymously online, but what about actual creators? What about you when you want to start publishing stuff (and want to be fairly compensated + not live under a bridge)? When does the ripping off of one another end? Like most people, I would download a car, but not in every circumstance, just to be unfair & a little sh*t-kicker.

This is a philosophical as well as design problem. The infrastructure of the current web and internet dictates that you put out all information for free, it gets mined, and then sold back to you in the form of ads. In this schema, whoever has the most access to servers because they have more access to wealth simply 'wins teh internet' as it were. In a networked system where you do not get paid for your efforts, it makes sense to just throw out random desperate content in hopes to see what sticks and try to make a buck (off of advertising and branding). This is called Surveillance Capitalism and leads to Enshittification. Ever since the dot com era, it has been completely random content that thrives, that's why the best example of the web was 2004ish 4chan's /b/ 'random' board and why most netizens are nostalgic for that era and haven't moved on from that phase.

A Xanadu Internet offers a simple alternative model -> If you add valuable data to the network, you are compensated for that effort. It may be a fraction of a penny, but imagine all the comments, blog posts, reblogs, uploads, telemetry coordinates, etc. that you perform in a given year -- and imagine if you could rely on that as a substantial source of income? Imagine if this forum post when first loaded gave the first few paragraphs for free, but the rest appeared as encrypted text. If you were interested in reading more, you could pay me for writing and worlio for hosting, some small negligible amount to have full access to the content which you then own. We all produce mountains of data each year, which to megacorps are more valuable than gold, and they are sucking up all that value as rapidly as they can, yet we are not guaranteed to ever see a single cent of it.

Ted Nelson is admittedly a very kooky character on first viewing -- comes off as a classic crockpot. His character is offputting at first because he seems constantly disappointed & seems stuck in the past, but if you are able to see passed his eccentricities he has such an important message for the future. I originally thought he was just another programming nerd that is going to talk about lambda this system call that but I actually could relate to him on a much deeper level because he is just an Artist and filmmaker primarily. He came up with this system as a way to organize "EDL" (Edit Decision Lists) in order to edit his movies better. But the organization system took on a life of its own as Ted was exposed to the first personal computers.

His only downfall in my opinion is that he offloaded the task onto everyone else, and his whole life he's said, "I'm not a programmer--!". As a designer of software, Ted is in the same role as Steve Jobs or Bill Gates, they didn't write apple macintosh or microsoft windows, they designed (and marketed) them. I similarly struggled with this "I'm not an X, I'm only Y" mentality, but whenever I've pushed my boundaries, dropped my ego, and pursued the knowledge of a new field, its always paid off.

But you can hardly blame the guy, as there was a character assassination / hitpiece in wired magazine in the early 90's right when Xanadu was being developed proper with their own branch at fr*akin' Autodesk (tm) Palo Alto. Most people's opinions on Xanadu unfortunately stem from this basically made-up story the likes of which have never been seen in the history of computer software; the fabricated tale completely destroyed Ted's career & Xanadu's credibility to the detriment of all. Whenever I want to work on a serious, big project in 'hypermedia', I feel as though I'm missing an essential component -- until a working Xanalogical system is in place my real work cannot even begin to take form. But it's not some fantastic unrealizable pipe-dream, we've all been robbed blind the passed 30 years without realizing it by not having this sort of system in place and instead having the top-down militaristic laissez-faire redundant bloated guessing-game whateververse garbage-web funded by gaming ad revenue & tracking algos shoved in our faces as the only option for networked communication. Thank you for coming to my TED talk.

Features / Technicals:
(down the rabbit hole...)

"Does not mimic paper"
This is such an admirable contribution from Nelson, this is one of those 'cannot unsee' moments, he saw as early as the 1960's that computers were coming and they had SCREENS. On a COMPUTER SCREEN, you can basically display information in any format. But the model from Xerox (a paper printing company) was the one that was chosen?? And practically every system we're used to does this, PDF, Word, Google Docs, Notepad, Notepad++ all simply mimic paper, and not one attempts to improve on the model. Paper is so limited, its a little rectangular unit, and everything about computers all the way down to the assembly code that tells the machine to run binary is designed like a stupid piece of paper! But Ted in a breath of fresh air points out: This is but one convention among others.

It was decided, by Harvard-MIT types, wearing thick-rimmed glasses and suits, smoking a pipe, in college laboratories working with mainframes, that the best (and only apparently) way to organize information was to place paper files into manila folders and 'file' those away into filing cabinets. This convention was carried over into computing, but what hasn't been examined is the implicit values, specifically hierarchies, that come attached to it. Indeed, it has been argued that the patriarchal values of the 1950's nuclear family are serially re-created at the deepest levels as a fundamental part of cybernetics and computer 'science'. We've become so accustomed to doing things this way that we've developed a blind spot and take /ROOT/FOLDER/ for granted as just 'how things work'. Ted's vision simply takes us back to those college laboratories and asks, 'What if...' they decided to organize things differently, how might our networked systems work then?

"Visible connections, side-by-side"
This is Ted's big dream. What if instead of footnotes at the bottom of every page, you could actually see the reference material as it exists in its original context --> right next to, and connected to where you read it.

"Vinks", "Blinks", "Flinks" etc.

Ted criticizes the way we do hyperlinks. As it stands, in the Englebart-derived WWW, you can't see where you're going so are called "blind links", and there's no guarantee of a way back ("forward links" (flink)) or that the address even points to anything.

a Vink is short for 'vinculum' which in the context of ZigZag is a sort of meta-cell comprised of other cells. a simple example is the 'cat vink', which is a cell [cat] that contains the individual cells [c][a] and [t]. without losing the context and connections of the individual cells themselves, you can see the other cases in which they appear while still creating new combinations. in an ideal xanalogical system where every document is connected, you can see every instance that the letter 'a' was ever used... :U

Ted's Handwriting
One of the simplest ways to convey ZigZagStructure which is the proposed database back-end that the Xanadu Docuverse system would be built on top of is "like" an Exel Spreadsheet but instead of cells being stuck in rows & colums fixed in 2 dimensions (up+down, left+right), you had the freedom to make any number of connections in any number of dimensions. When you wanted to connect two units of information, you could do so without the strict hierarchy of the grid -- allowing for richly diverse presentation of context which is so lacking in our current systems.

We believe this is the most general data structure, able to replace tables, arrays, spreadsheet and relational database, and intrinsically offering built-in visualizations and hands-on controls.

That structure we call zzstructure, or hyperthogonal structure. Like a table it is composed of cells which are connected in rows and at right angles. But there are no overall spatial coordinates.

In a conventional table, the bottom of one cell is connected to the top of another, the left side of once cell is connected to the right side of another.

We generalize this, and say the top of any cell can be connected to the bottom of any cell, and the left edge of any cell can be connected to the right edge of any cell.

This allows building regular tables, regular data arrays (of the old-fashioned Fortran type), and special-purpose irregular structures of great power-- including databases that go on and on, rather than being restricted to narrow topics.
Programming Cells

These are complicated and require an understanding of how ZigZag works, essentially a type of 'forth' is made by running ZZcells along a dimension as a stack, if you're interested here are some links that explain it much better than I can at this moment in time.


Universal Addressing System: Tumblers

Have you ever run into this problem? : You are browsing the world wide web, and you click a link (not knowing what's on the other side), and even though w3c standards say that its 'rude' to change address without informing users... the hyperlink is broken and the content is no longer available!! What? broken link in $CURRENT_YEAR?? Yes, but imagine if in a manner similar to torrenting / DHT, each content had a FIXED ADDRESS, which you could look up BY NAME... The way things are set up, searching for specific content which is tied to a URL but also implicit file hierarchies like /root/subfolder/content, its like looking for "Moby Dick" by asking for its location on the shelf saying, /Oh/yeah/.../3rd/book/from-the-right/on/bottom-shelf.txt which is subject to change any time, instead of "Moby Dick" the book by Herman Melville, the content which you're actually searching for.

The Tumbler system uses transfinite numbers which I'm not going to pretend like I understand enough to explain.


Once your understanding starts loosening its grip from 'files', you realize that most programs are designed to do file operations and not much else. This creates conflicts when moving from one "application" to another to work on the same "file" with little-to-no interoperability. This wasn't always the case, and again you can go back in time and pinpoint a certain design decision that resulted in everything becoming "windows". Back in the days of Xerox PARC, if you were working on a document, there was no separate 'paint' 'application', you simply selected the brush tool and could just as easily paint inside the 'word document' as well as the 'canvas'. But somehow the "GUI" which Ted calls the "PUI" (PARC User Interface) was decided upon, and the rest is history. Fun Fact: The original system that SimCity was built on, HyperLook, also had this same functionality.

Xanadu is designed like HyperLook in the sense that it is visual-first, not in the sense of WYSIWYG (what you see is what you get), but in the way that how things look on screen determines how they function & how you operate them. Notoriously hard to explain without a hands-on demo.

For more in depth info and examples of Applitudes, check out the book "Intertwingled: The Work and Influence of Ted Nelson".

Co-Operating System

An ideal Xanadu system doesn't need to be its own OS. It can be designed to work with existing environments.
Our central focus, however, is to create from all this a portable personal environment with the basic software that people need most generally. We intend to build a new, cross-platform personal-computer system. Not a whole operating system, mind you, but a system easily loaded on any popular machine. Thus we call it a co-operating system. It should behave the same whether running under Linux and running under the Macintosh and running under Windows. By eschewing the temptations of each of these environments and creating rather a hermetically clean internal world, we can start over.

This means that a user should be able to carry his or her entire operating environment from machine to machine on a thumbdrive, with all settings remaining the same.

For the simple beginner we hope to provide, in place of "applications," a pre-supplied system of LifeDimensions(tm). These will have the effect of applications, with simple integrated functions-- for example, managing personal contacts. It should be easy to use such functions as: add relative, add appointment, delete appointment, change appointment. All these are unified by the spatial structure of the system. The LifeDimension package is intended as a unified conglomerate structure so that making these changes is conceptually unified. Genealogy is not separate from address book or appointments; we intend that all these will be a unified package you do not have to leave.

And, of couse, the power beginner has the option of seeing all the internal cells and orthogonal connections, and building database-like structures of his or her own.
My Version

They say it takes about a generation for new idea to actually be understood and put into practice, now's about the time in my life when I'm becoming an adult and deciding what shall be my magnum opus. I didn't choose this path, the path chose me.

I want to get started making xanalogical hypermedia right away. This is not so easy. If one wants to jump right in and start creating, they may find that of the prototypes that are available today -- even if you manage to get them working, none of them actually "save"! none of them are in any sort of production-ready condition. So that's where I began, I started my work by making a save function that adheres to the design standard already specified by Ted and generally accepted by others.

I am trying to create a ZZ -> Xanadu system that strictly adheres to Ted Nelson's vision without adding too much of my own ideas (something others who have taken up the mantle have seemed to ignore). I am keeping the source code closed as I would like to complete a working prototype and send it to him as a gift while he's still alive & kicking but he's pushing 100 now and time is running out. I would like his guidance on how to proceed with releasing the source, as there are conflicts between XCopyright and Copyleft licenses like the FSF's GPL. I'm keeping the source under wraps for now (not very impressive to look at anyway). I am writing this as a utility tool in well documented C, trying to keep the codebase in C, with some LISP-in-C syntax for some tricky parts like introspection and serialization, and since the L programming language borrowed concepts from Xanadu it would make sense to re-integrate that on some level.

I want to release a free (as in freedom) tool that people can start using to build new hypertext documents, but also for people who are much more skilled at programming than I can pick up and build off of. By reason of having an open standard available it could/would be called "DZZ" or Developer's ZigZag, but since 'ZigZag' only goes to official canon collaborations with TN, until I get my version out to him and get his approval the naming conventions in my implementation use the generic "Hyperthogonal". Though there are still major fundamental design choices I and I alone have to make that bog down the process, and I am branching off significantly from a lot of programming conventions that are taken for granted, into uncharted territory.

My method so far has been to write man pages, and then build out functions based on the documentation. I lost a lot of notes, progress, and work in 2022 due to a corrupted home tarball; but in 2023 ChatGPT has helped me recover and advance significantly beyond what I could have done on my own. My earliest chats were as naive as, 'ok computer, now go ahead and make ted nelson's xanadu, please'. ChatGPT is not a very good programmer, doesn't understand the context half the time, but realistically as a tool knows enough C to provide a skeletal framework for me to build functions off of. (Also this allowed me to stop bugging John Ohno every time I had a newbie programming question tangentially related to Xanadu).

My main point of departure is in addressing a specific database issue... see how right here in gnunet, the datastore submodule, there's the option for building with some rldb: sqlite, mysql, postgres? I'm building my program so that it could be used as a substitute for rldb in this particular use case, because the interconnectivity aspect & micropayment system is projected to run on top of gnunet anyway.

On this project, I'm always feeling "so close, yet so far away", even though lately I feel confident that I am onto something tangible. I finally have code that compiles for cells, and I am messing around playing with the fundamental underlying data-structure of cells, placing them in to memory and looking very closely about how I want to organize the database so its securely encrypted in and out of memory, multi-user,

a wealth of pseudo-code that almost compiles for

Hyperthogonal Structure (handles dimensions & cell metadata),
Hyperthogonal Space (a canvas for painting various views on Structs),
Hyperthogonal DB (Database),
a State Machine based off smalltalk (borrowing some cool ideas from Objective-Smalltalk),
an image-based-persistence module (codenamed waffle),
and finally the glue that holds it all together -- the display module which runs in the terminal and I call Zipstyke (named after a member of the Clock Crew from Newgrounds)

More recently I've been focusing on the visual-first aspect by building a command-line interface as well as an NCurses tui for working with ZZStruct. In practice those will only be used by power-users, but from these I plan to build out an SDL2, X, Lua, and eventually Vulkan suite.

Additional 1-way "Blind" HyperLinks:

Recent work by John Ohno aka Lord Enki @enkiv2 on the web
the ix operating system: https://github.com/enkiv2/ix
(C++ / Qt) https://github.com/enkiv2/dimscape
Old Version Source Code
AZZ (Perl) by Andrew Pam: https://github.com/xanni/zigzag
GZZ (Java) by Tuomas J. Lukka: http://cvs.savannah.nongnu.org/viewvc/gzz/gzz/gzz/
Udanax Greem (C/Python) in large part by Roger Gregory: http://udanax.xanadu.com/green/index.html
Udanax Gold (C++/ "X++") in large part by Roger Gregory: http://udanax.xanadu.com/gold/index.html
"Cosmology" https://xanadu.com/zigzag/ZZdnld/zzRefDef/
Xanadu Australia https://xanadu.com.au/

draft published 1/20/2024
draft updated 4/02/2024