Zzstructure Emulator

[John Ohno] has been working on a zzstructure operating system written C since January. [John] realizes not many people know what a zzstructure is, so he posted a demo of his project. [John] has also put all the code online.

A zzstructure is both a hypertext and operating system unlike anything we have today. You could say that when it was first conceived in 1960 it was 100 years ahead of its time. [John]’s implementation of zzstructures operates on a 256-dimension grid and functions a lot like a multidimensional forum thread. Although that’s a lot to wrap your head around, it can probably best be explained by [Ted Nelson], the creator of zzstructures.

The zzstructure was an integral part of the first hypertext project, Project Xanadu, started by [Ted Nelson] in 1960. The idea behind Project Xanadu is a sea change from the current implementations of hypertext, but the project fell into a chasm of development hell lasting more than 20 years. Wired did a story on The Curse of Xanadu in 1995, and to read about a wonderful idea – an information structure not based on the idea of paper – be supplanted by the web is just sad. The UI of [John]’s build resembles the first implementation of Xanadu, but without the split-screen and dual-cursor design.

We’re really impressed with [John]’s work, and even though he thinks it would be great for electronic organizers, we think a zzstructure implementation would be great for coding or development. We don’t see many software hacks but with something like this, it’s hard not to be impressed.

EDIT: A few weeks after this story was published, [John]’s friend finished a more elaborate zzstructure emulator in Python. The code is up on GitHub and looks very, very impressive.

14 thoughts on “Zzstructure Emulator

  1. A couple of minor corrections:
    * ZigZag is a side project of Xanadu. My implementation resembles the first implementation of ZigZag, not the first implementation of Xanadu.
    * A zzstructure isn’t an OS, it’s a datastructure. Ix happens to be an OS that stores everything in zzstructures.

    Thanks for covering this!

  2. This looks wonderful. It’s such a shame the current flat-paper model got adopted. I bet you can be a lot more productive if you have 256 dimensions to work with. I’d love to see more of this project and where it’s headed

  3. I’d rather use TheBrain. It’s not 256-dimensional but you can categorize links — and categorizing/color-coding a link is a lot like what he uses dimensions for in the first place. Oh, and TheBrain is graphical and modern, not to mention also cross-platform.

  4. @Aleksejs
    A zzstructure is often compared to a spreadsheet or a relational database. In comparison to either, it is more flexible (Ted Nelson says that the ZZstructure “doesn’t force you to have a constant number of middle names”, which is to say that while it has tabular separation, there is the potential for variable insertion in the middle, unlike in an RDBMS, where it would break Codd’s rules, or a spreadsheet, where separating out middle names into extra cells would expand out the number of cells allocated to middle names to the maximum). It is also easier to implement than an RDBMS, though more difficult than a spreadsheet.

    On the other hand, a zzstructure can fairly quickly become disorganized. Such structures are primarily intended to sit right under a fairly direct user interface like mine, because having the ability to manipulate the links without reaching through a glob of syntactic sugar makes it easier to keep the structure clean. As such, it makes a poor substitute for an actual RDBMS (its primary feature is the swearing off of most of Codd’s rules), and because of its flexibility it is fairly unsuitable for actual financial spreadsheeting (we talk about cooking the books now, but with zz you might accidentally create an infinite loop in the profit margin).

  5. @blackthursday
    Feel free to change that limit. It’s merely a constant in the code. I have it set there in order not to run over into parts of memory reserved for ACPI, etc., but I think you could probably get away with halving the number of cells and having eight times the number of dimensions.

    I considered 256 unnamed dimensions overkill, personally, and chose it just because it was a large round number. My AVR implementation of a zzstructure navigator has fewer (16, if I recall).

  6. @ruben
    At the moment, nada, since this is a toy. But, zzstructure navigators are fairly useful in an application context.

    The next demo video is planned to give a walkthrough (using Ix) of a way that zzstructures can be used in daily life. It would probably be more representative of something one might do in Dimscape or TiZZI (two other zzstructure navigator projects I’m involved with — an application program and a handheld organizer respectively), because Ix does not yet have nonvolatile storage.

  7. Everything I know about zzstructures, I just read here. and that’s probably how it’ll stay.

    But in the reading, the one thing that flashes is the orthogonality (coemergence?) with Hadoop.

    Quick convergence state comparison? like fixed depth indexes? sort of a soft FPGA for loadable transforms.
    Signal processing? soft radios? Emulation?

    Then again. it could be just indigestion.
    impressive. don’t stop.

  8. Sounds somewhat a far extension of how the wave fedeation protocol represented conversation.
    Unlike liner lists (like this and 99% of every other communication form online), you could go back and branch of a new conversation tree at any point – and then new ones from that one as you see fit.
    I always thought the logical way to extend that was as a map.
    However, it never occored to me to have a multidimensional map. (well, beyond 2 anyway)

  9. @darkflame
    That’s what I said when I first read the description of that protocol: it looks like a zzstructure. I tried, unsuccessfully, to convince people on reddit of this. I suppose Ted Nelson’s c. 2007 talk at Google might have had an impact after all.

Leave a Reply to DarkflameCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.