Hacker News new | past | comments | ask | show | jobs | submit login
A Gentle Introduction to Ted Nelson's ZigZag Structure (2002) (nongnu.org)
89 points by breck on May 19, 2021 | hide | past | favorite | 34 comments



Brief summary, please correct me if I'm wrong.

A ZigZag structure is an undirected graph. Nodes are arranged in an n-dimensional space. For each coordinate axis, every node can only have one edge in the plus-1-along-coordinate direction, and one edge in the minus-1-along-the-coordinate. I.e. no diagonal connections, and max one connection in each "cardinal direction" (+ and - in n dimensions = 2n directions).

In its simplest form, a ZigZag structure can be an n-dimensional grid, where each node is connected to its direct neighbors in the grid. In 2D, that would give you a spreadsheet. However, ZigZag can do more: you can have loops along any axis, e.g. a spreadsheet where the columns "wrap around". Furthermore, ZigZag supports looping the columns of only one particular row: a normal 2D spreadsheet, except that row 13 only has 4 columns, and those columns are wrapped up in a loop. You could also have sparse grids - where nodes are missing, and the edges skip over the missing node.

The idea is to have something that locally, if you look only at the surrounding nodes, always looks like a neat n-dimensional grid. But the global topology can be totally whacky.

I have no idea what you would use such a thing for.


"I have no idea what you would use such a thing for."

Presenting graph-structured data in a way that the graph has sufficient restrictions on it to be representable usefully in a UI.

In some sense all data structures are just restrictions on graph data structures. So why not just use graphs directly more often? Because the full freedom of graphs can result in a lot of situations that are pathological for both algorithms and UIs, such as graphs that mostly have one node connected to one node, except suddenly there's a node with 1,000,000 connections, which raises obvious UI issues.

To the extent this is not used today, it's probably because in the end it's still too general and has been outcompeted by all the other UI widgets we have that take more advantage of all the menagerie of local structures we have identified. It turns out that we are generally willing to do the work to create specialized representations for those things. We do lose some generality, but, again, we seem willing to do the work to specialize, so it all mostly works out. Only a very few people are out there working with data with so little such specialized support that they are reduced to working with raw graphs directly, and they already mostly have no choice but to learn to deal with the graphs directly and would be as frustrated trying to jam them into this structure as they would any other structure that restricts graphs.


Nelson's inability to deliver a product, and use of his patent to keep others from delivering a product, might also have something to do with the idea not catching on.


Why does Ted Nelson need to deliver a "product"? He's not a computer scientist. He's not a product manager. He's just a goofy guy with wacky, interesting ideas. More of a philosopher than anything else.


From my point of view and as the parent said, the problem here was the patent and how that contributed to others not being able to deliver after a lot of work.


It sounds exactly like a DikuMUD zone, where each place has an exit to another place in four cardinal directions plus up or down, but those exits do not need to be symmetrical. Loops, warps, multiple exits into the same place. The graph is not necessarily even connected as portals and triggers can teleport you into otherwise unreachable places.


That's more or less what I was thinking -- in fact, every text adventure system I'm aware of, going all the way back to mainframes and microcomputers in the 1970s, implement a version of this. Nelson's "cells" are rooms, and "connections" are exits.

Many of the oldest microcomputer ones, like Scott Adams' adventure games (and from your description, DikuMUD), are exactly what's described here, except as you note, with more than four directions: typically there are either six or ten (adding NW, NE, SW, SE to N, W, E, S, Up, Down), and I remember some that added "IN" and "OUT" as unique exit names. Other systems allow an arbitrary number of connections defined within the node, such as MUCK rooms or links between Twine nodes. Basically, these are multi-cardinal linked lists.

At risk of editorializing, I get this sort of feeling from a lot of my encounters with Ted Nelson's work: he and his more ardent defenders are very, very insistent about how visionary he is, but I often come away with "that's neat but not terribly practical" or, like here, "aren't these new names for stuff that already existed?" (Also, about 100% of the time I read about the history of his work, I'm left with "he would have had something there if he'd been willing/able to play nicely with others.")


The point (as I think jerf explained helpfully) is that it restricts a general graph structure so that it can be more easily navigated, so no one-way teleports or multiple exits to the same place. I think the analogy to an adventure game space is apt, otherwise. There are additional dimensions, but with these restrictions navigation is hopefully comprehensible. (I'm just reading up on this today, hopefully not too far off.)


> The idea is to have something that locally, if you look only at the surrounding nodes, always looks like a neat n-dimensional grid. But the global topology can be totally whacky.

That sounds similar to the mathematical definition of a manifold: something that locally looks like an Euclidean space, but globally isn't.


>I have no idea what you would use such a thing for.

This can be said for pretty much all of Ted's work. Interesting and thought provoking, nonetheless.


I've had this idea to use ZigZag for forum or chat threads. Each axis represents a different theme, you would be able to branch off the conversion into a different theme without derailing the original conversation.


> I have no idea what you would use such a thing for.

Ditto. Every few years I look at this again, and I never can figure out what to use it for. At any rate, yours is a very good summary, thank you.


> The idea is to have something that locally, if you look only at the surrounding nodes, always looks like a neat n-dimensional grid. But the global topology can be totally whacky.

Reminds me of those "Choose Your Own Advenuture" children's novels from the 80s.


Thank you for summarizing. I wasn't even sure I wanted to read this, but now I'm sure I do.


Lukka and others wanted to bring Ted Nelson's dream into reality using open source (GZigZag). Ted Nelson fucked them over. After giving permission he suddenly started to assert trademark and patent rights.

"It is a sad story. It is an infuriating story." http://lambda-the-ultimate.org/node/233#comment-1715


Happily, Nelson's patent has finally expired. :)

https://patents.google.com/patent/US6262736


I was thinking this was a data structure, but based on the patent it's actually more a user interface design to explore data

> What is claimed is:

> 1. A method for visualizing data on a display, comprising:

> ...

In other words it seems like it could replace a spreadsheet as a way to explore data, but not _necessarily_ by storing the data any differently


FWIW, some portion of what was Xanadu apparently finally made it to the OSS world. See:

http://open.xanadu.com/

I haven't looked at it much, so not sure quite what the state of it all is.


I wasn't expecting a site from 1999 from that "finally".


Well, consider that Xanadu itself dates back to like the 1960's or something... I don't remember all the details off-hand. That said, I thought the Udanax stuff came later than 1999 as well. I wouldn't even have noticed the 1999 reference if you hadn't pointed it out just now!

Mandela moment for me? Hmmm.


Here's a video of Ted Nelson describing the idea: https://www.youtube.com/watch?v=n22A-Say7do


Here's an article on follow-up work by the author with Ted's patented stuff (the ZigZag structure) replaced with RDF: Hyperstructure: Computers built around things that you care about, Benja Fallenstein and Tuomas J. Lukka https://fenfire-org.github.io/manuscripts/2004/hyperstructur...


Wait, I just glanced at the material - is this someone (re/independently) inventing graphs?


It's a "subset of general graphs - the restriction is that a node may have only one incoming and one outgoing edge with a given edge label. So structures are organized as lists/strings of nodes, which makes it easier to visualize than general graphs"

http://lambda-the-ultimate.org/node/233#comment-1706


No, but also not just someone, Ted Nelson. I highly recommend Geeks Bearing Gifts or Computer Lib/Dream Machines. He is a crank, who has never been involved in a successful software project as far as I am aware. He is also great.


Every crank is a visionary, but not every visionary is a crank.

Some visionaries prove to be prophets and seers. Some have ideas that are bogus. Due to the nature of visionary ideas, this is most of the time unknown -- e.g. Julian Jaynes's bicameral mind.

A crank is a visionary whose ideas are knowably bogus: e.g. Rupert Sheldrake. (A charlatan is unlike a crank because he has no idee fixe, no vision -- he moves opportunistically. A conspiracist is similarly unlike a crank because it bites at anything that moves.)

Whether Ted Nelson is a crank is left as an exercise for the reader.


Sort of.

From Wikipedia: "He coined the terms hypertext and hypermedia in 1963 and published them in 1965."


zzstructures are both graphs where you can have many edges (of different types) between any two nodes and a method of visual presentation and navigation of that structure.


See Nelson's paper "A File Structure for the Complex, the Changing and the Indeterminate" https://andymatuschak.org/files/papers/Nelson1965.pdf

Edit to add: I just noticed that the last update to that page was in 2002. When I hit the box about CSS, Mozilla, Netscape Navigator 4.7, and WML I did hard double-take.


Seems like this is the first real HN thread about this, but it has come up in comments over the years, including by people who worked on it:

https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...


> To put it coarsely, outside ZigZag there are three different kinds of structures in computers today: linear lists (and grids i.e.~lists of lists), hierarchical trees and messes. That is really messes, not meshes. By a mess, I mean any complicated data structure, usually with one-directional links to make things even more unmanageable.

That's not a mess, that's a graph.


This is new to me, but when I noticed the project is a Java app, I immediately recalled CMapTools

Wasn't that another passion project?

https://cmap.ihmc.us/ https://en.wikipedia.org/wiki/CmapTools


This helped me understand the dimensions better:

http://profs.etsmtl.ca/mmcguffin/research/zigzag/


Gonna be honest: everything about this screams "inescapable morass."




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: