From Udanax to Xudanu

60 years of connected documents: the algorithms, the people, and the modern realization of Ted Nelson's xanalogical structure.

1. The Vision (1960) 2. The Gold Team's Innovations 2a. Enfilade Theory 2b. Tumbler Addressing 2c. The ent System 2d. Backfollow Engine 2e. Canopy Trees 2f. Content Lists 2g. DagWood Reconciliation 3. The "nu": Modern Enhancements 3a. BLAKE3 Content Addressing 3b. Ed25519 Per-Character Attribution 3c. CRDT Collaborative Editing 3d. Inline Transclusion 3e. Attribution Propagation 4. The Lineage 5. What Remains

1. The Vision (1960)

In 1960, Theodor Holm Nelson conceived a system where documents would never be copied, links would never break, and every quotation could be traced to its origin. He called it Project Xanadu. He called the literary structure xanalogical — a unique symmetrical connective system with two complementary forms of connection:

Content Links

Connections between things that are different. Commentary, cross-reference, disagreement. Profuse, bidirectional, unbreakable.

Transclusion

Connections between things that are the same. The same content, visibly and knowably, in more than one place. Not a copy — a live reference.

The World Wide Web, built 30 years later, implemented neither. It gave us fragile one-way links, embedded in flat files, with no recognition of content identity or version change. Nelson's response:

Nelson: "The Web was not what we were working toward, it was what we were trying to prevent."

For 40 years, over 100 people worked on Project Xanadu. About 25 were active at the software design level. They produced at least 10 major design iterations, from xu60 (1960) through xu99 (1999). The most complete implementation was Udanax Gold (xu92), released as open source in 1999.

2. The Green and Gold Innovations

Project Xanadu produced two major working implementations. Udanax Green (xu88, 1988) was the foundational system — a working client-server architecture with the complete data model. Udanax Gold (xu92, 1992) extended it with Drexler's ent system for versioning and reconciliation. Both were released as open source in 1999.

Attribution note: The Green/Gold split is based on Nelson's paper, the FEBE Protocol Manual (which is specifically a Green document), and analysis of the inherited source code. Some attributions are inferred and may not be precise. The theory predates both implementations — enfilade theory was developed around 1980 by Miller, Greene, and Gregory, before either system was coded.

Udanax Green (xu88, 1988)

Principally designed and implemented by Roger Gregory and Mark S. Miller. The first complete working implementation of xanalogical structure. Documented in the extensive FEBE (Front End-Back End) Protocol Manual.

Udanax Gold (xu92, 1992)

Designed by Mark S. Miller, Dean Tribble, and Ravi Pandya, based on K. Eric Drexler's ent data system. Extended Green with built-in versioning and reconciliation.

2a. Enfilade Theory

An enfilade is a tree data structure with two simultaneous properties that seem contradictory:

This dual-property tree was invented by Mark S. Miller, Stuart Greene, and Roger Gregory around 1980 — before either Green or Gold was coded. It was first implemented in Udanax Green (xu88). A single tree serves as both a search index (fast filtering by content fingerprint) and a structural container (impose displacements, transforms, versions).

Enfilade: Dual-Property Tree ROOT (flags: A,B,C) LEFT (flags: A,B) RIGHT (flags: C) Leaf A Leaf B Leaf C ▲ search (OR flags up) ▼ structure (impose down) One tree. Two properties. O(log n) filtering + structural transform. Invented 1980.

Figure 1: The enfilade. Flags OR upward for search; structural transforms push downward. A single tree does both.

Why it matters: without enfilades, finding all documents containing a specific content fingerprint requires scanning every document — O(n). With enfilades and canopy propagation, it's O(log n). For a million documents, that's the difference between 1,000,000 operations and 20.

Implemented in xudanu: src/edition/canopy.rs (BertCanopy, SensorCanopy). Ported from Gold's C++ to Rust. O(log n) filtering verified by tests.

2b. Tumbler Addressing

Tumblers are multi-segment universal addresses for content in a distributed docuverse. Designed by Gregory and Miller for Udanax Green (xu88). They use hierarchical sequences like 4.3.1.7.2 where each segment narrows the location: server, work, edition, span, character.

Tumbler: 4.3.1.7.2
         │ │ │ │ └─ character position
         │ │ │ └─── span within edition
         │ │ └───── edition number
         │ └─────── work number
         └───────── server number

Tumbler arithmetic supports span operations — unions, intersections, differences — using transfinite arithmetic. This means you can ask "what content overlaps between version 1 and version 3 of this document?" as a pure arithmetic operation on tumblers.

Origin: Udanax Green (xu88). Implemented in xudanu: src/space/sequence.rs. Full tumbler implementation with region algebra (union, intersect, minus, complement), prefix queries, and lexicographic ordering.

2c. The ent System (Gold)

The ent (designed by K. Eric Drexler, ~1988-92) is a singular enfiladic structure with built-in versioning. It's a tree where every branch represents a version fork, and the tree structure itself encodes the complete version history of a document.

The ent: Versioning Tree v1 v2 v3a v4a v3b v5 edit fork fork merge Every branch is a version. Every version is accessible. Forks merge. No version is ever deleted. The tree IS the complete history.

Figure 2: The ent. Versions branch and merge. The tree structure encodes the complete version DAG.

The ent enables non-destructive editing: creating a new version doesn't modify any previous version. It also enables DagWood reconciliation — merging divergent branches by finding the common ancestor and combining non-conflicting changes.

Origin: Udanax Gold (xu92). Implemented in xudanu: src/ent/ — branch tree (B+tree), content entities, DagWood DAG reconciliation, H-tree (hash tree), trace (position tracking). ~7,000 lines ported from C++.

2d. Backfollow Engine (Green)

The backfollow engine answers the question: "Where else does this content appear?" Given a piece of text, it finds all documents containing that text — not by searching, but by content fingerprint matching.

Every piece of content gets a fingerprint (originally a hash, now BLAKE3). The backfollow engine maintains an index mapping fingerprints to all documents containing that content. Query: O(log n) via canopy tree.

Origin: Udanax Green (xu88). Implemented in xudanu: src/edition/backfollow.rs (~1,892 lines). Uses BLAKE3 for fingerprinting (Green used a simpler hash). BertCanopy for O(log n) lookup. Recorder/Fossil system for persistent queries.

2e. Canopy Trees (Green)

Canopy trees (BertCanopy and SensorCanopy) are balanced binary indices built on top of enfilades. They enable fast filtering of transclusion queries — instead of scanning every position in every document, the canopy prunes the search space.

OperationWithout CanopyWith Canopy
Find content in 1 docO(n) scanO(log n)
Find content across 1000 docsO(1000n)O(1000 log n)
Flag propagationO(n) rebuildO(log n) update

Bert flags track which content fingerprints appear in subtrees. Sensor flags track which positions have specific properties. Both propagate upward (OR of children) enabling pruning: if a subtree doesn't contain the desired flag, skip it entirely.

Origin: Udanax Green (xu88). Implemented in xudanu: src/edition/canopy.rs. Full implementation with BertProp/SensorProp flag sets, endorsement bit allocation, and flag-based filtering on transclusion queries. Uses Arc<Mutex> for thread safety (Green was single-threaded).

2f. Content Lists (Green)

In the xanalogical model, a document is not a blob of text. It's a list of references pointing to content at permanent addresses. Editing modifies the reference list, never the content itself.

Document = Content List (References) DOCUMENT → ref: content[1:50] → transclusion: workB[0:30] → ref: content[51:100] → link: #2053 CONTENT STORE [1:50] "Hello World..." [51:100] "Goodbye..." (permanent addresses) WORK B [0:30] "transcluded..."

Figure 3: A document is a list of references. Content lives separately at permanent addresses. Transclusions reference other documents.

Origin: Udanax Green (xu88). The FEBE Protocol Manual documents this model in detail. Implemented in xudanu: src/edition/edition.rs — Edition with O-tree entries. src/persist/chunk_store.rs — content-addressed BLAKE3 storage.

2g. DagWood Reconciliation (Gold)

DagWood is a DAG-based reconciliation system for merging concurrent edits. When two users edit the same document simultaneously, DagWood finds the common ancestor, compares both branches against it, and automatically merges non-conflicting changes.

This predates operational transform (OT) and CRDTs by decades. The key insight: represent the edit history as a DAG (directed acyclic graph), then find the maximum consistent merge of both branches.

Origin: Udanax Gold (xu92). Implemented in xudanu: src/edition/three_way.rs (~1,891 lines) and src/ent/dagwood.rs (~1,532 lines). Full three-way merge with conflict detection and position mapping.

3. The "nu": Modern Enhancements

The name xudanu combines "xu" (from Xanadu) with "nu" (new). The "nu" represents what modern computer science adds to Nelson's 1960 vision:

3a. BLAKE3 Content Addressing

Nelson's "central proprietary secret" was "the freezing of content addresses into permanent universal IDs." Gold used simple hashes. We use BLAKE3 — a modern cryptographic hash running at ~1 GB/s, producing 256-bit collision-resistant fingerprints.

PropertyGold (1990s)Xudanu (2020s)
Hash functionCustom hashBLAKE3 (cryptographic)
Speed~100 MB/s~1 GB/s
Collision resistanceUnknown2-128
StorageFlat filesContent-addressed ChunkStore

3b. Ed25519 Per-Character Attribution

Gold tracked content identity (who transcluded what) but had no cryptographic proof of authorship. We add Ed25519 signatures on every text element — each character range is signed by its author's key.

Per-Character Cryptographic Attribution "Hello World - transclusion - end" david alice (via transclusion) david Ed25519 signature per span: key:1eb56f8a..689b709e sig:9a8b.. timestamp:2026-06-25T19:00:01Z

Figure 4: Every character range carries an Ed25519 signature, author identity, and ISO 8601 timestamp. Court-grade non-repudiation.

3c. CRDT Collaborative Editing

Gold used grab/release locks — only one user could edit at a time. We replaced this with a CRDT (Conflict-free Replicated Data Type) layered on top of the O-tree. Multiple users edit simultaneously, with automatic convergence.

FeatureGold (Locks)Xudanu (CRDT)
Concurrent editingOne at a timeUnlimited simultaneous
Conflict resolutionQueue + waitAutomatic merge
Offline editingNot possibleSync on reconnect
Real-time awarenessNoneCursors, selections, typing

3d. Inline Transclusion (Single Source of Truth)

Gold's compound spans existed as a side-table alongside the O-tree — two copies that could drift apart. We moved transclusion directly INTO the O-tree as RangeElement::Transclusion — a zero-width element that IS the reference. One store. No drift.

Novel contribution: This is not in Gold's design or any other system. Transclusion as a first-class O-tree element eliminates the dual-copy problem that plagued both Gold and earlier xudanu implementations.

3e. Attribution Propagation

When content is transcluded, the original author's identity and signature follow the content through transclusion chains. If alice writes text in document A, and david transcludes it into document B, document B's attribution panel shows alice as the author — with "via work:A" provenance.

This works recursively through transclusion chains (up to 32 levels), with cycle detection. It's Nelson's golden thread — following authorship back to the ultimate source.

3e. Attribution Propagation

When content is transcluded, the original author's identity and signature follow the content through transclusion chains. If alice writes text in document A, and david transcludes it into document B, document B's attribution panel shows alice as the author — with "via work:A" provenance.

Attribution 6 spans · 2 authors · 100% coverage · Chain valid david signed · 4 spans 1eb56f8a..689b709e · club:03ec alice via work:03ed signed · 2 spans e0ba9b81..00f131a8 · club:03f7 COVERAGE 100% TIMELINE Jun 26, 2:14 PM [0..51] david Jun 25, 3:18 PM [51..155] david via work:03ed Jun 24, 7:44 PM [155..159] alice via work:03ed Jun 24, 3:14 PM [159..217] david via work:03ed Jun 24, 7:44 PM [217..222] alice via work:03ed Jun 24, 3:14 PM [222..343] david via work:03ed Jun 26, 2:14 PM [343..365] david GOLDEN THREAD IN ACTION → alice's text written Jun 24 → transcluded by david Jun 26 → attribution follows content → timestamps preserved from source

Figure 5: Real attribution panel showing propagation. Alice's content (Jun 24) flows through transclusion into david's document (Jun 26) with original authorship and timestamps preserved.

Novel contribution: Propagating Ed25519 signatures through zero-width transclusion elements with position mapping. Not in Gold's design. Enables court-grade attribution tracking through any depth of transclusion chain.

4. The Lineage

EraSystemKey PeopleContribution
1960-65 xu60/xu65 Ted Nelson Hypertext, transclusion, referential editing. The vision.
1970-76 xu70/xu76 Nelson, Barus Enfilades, parallel markup, ring buffers
~1980 Enfilade theory Miller, Greene, Gregory Dual-property tree (search + structure)
1988 Udanax Green (xu88) Gregory, Miller First working system: enfilades, tumblers, content lists, typed links, backfollow, canopy trees, FEBE protocol, span migration
1992 Udanax Gold (xu92) Miller, Tribble, Pandya, Drexler ent system (versioning), DagWood reconciliation, H-tree
1995-99 Transcopyright, PYXI Nelson, Yee, Pam Copyright model, skeleton frontend, open source release
2024-26 xudanu Jones, GLM Rust port, CRDT, crypto attribution, inline transclusion, web frontend
The "nu" in xudanu: We stand on the shoulders of Gregory, Miller, Drexler, Tribble, Pandya, and the 25+ designers who built the Green and Gold systems over 40 years. Their algorithms — enfilades, tumblers, canopy trees, backfollow, DagWood — form the mathematical foundation. Green (xu88) gave us content lists, typed links, backfollow, and canopy trees. Gold (xu92) gave us the ent versioning system and DagWood reconciliation. Our contribution (Jones, GLM) is the product layer: modern cryptography, collaborative editing, web technology, and the inline transclusion model that makes it all work together.

5. What Remains

Nelson's complete vision includes features we have not yet built:

FeatureNelson's ConceptStatus
Transpointing windowsSide-by-side docs with connection beamsFiled as #59
Link visualizationTyped links overlaid on documentsFiled as #60
Attestation reportsCourt-grade attribution exportFiled as #57
Transcopyright / micropaymentsPayment at content deliveryData model exists, not wired
FederationCross-server transclusion + linksTransport exists, not complete
Rich media transclusionVideo, audio, diagramsText only

The hard part — the algorithms, the data structures, the mathematical foundation — is done. What remains is visualization, infrastructure, and the economic layer. Nelson's team spent 40 years on the hard part. We're building the rest.

Source code: 117,312 lines of Rust. 2,261 backend tests. 138 frontend tests.
Lineage: Udanax Green (xu88, 1988) → Udanax Gold (xu92, 1992) → xudanu (2024-2026)
Vision: Ted Nelson, "A File Structure for the Complex, the Changing and the Indeterminate," 1965.