Promote UC-26 through UC-33 from federation research into UseCaseCatalog. Add SHARD-WP-0002 with ten decision topics (remix primitives, equivalent page identity, history, composition, notification, lifecycle, transclusion, consensus presets, capability matrix) targeting spec/FederationArchitecture.md.
20 KiB
Findings — Federation concepts for decentralized, unified information spaces
Date: 2026-06-08 · Status: research draft
Scope: federation models that let independently stored knowledge participate in a joined view without erasing provenance, sovereignty, or backend differences. Primary anchor: Federated Wiki and Ward Cunningham's post-c2 inversion. Secondary: git-backed wikis, ActivityPub wiki extensions, Xanadu hypertext patterns, and yawex multi-wiki resolution.
Complements: research/260608-c2-wiki-origins/ (federation explicitly
deferred there) and research/260608-yawex-prior-art/ (REMOTE/VIRTUAL as
adapter foreshadowing).
1. Why federation (the problem statement)
Centralized wikis concentrate meaning and records on one server:
| Problem | Manifestation |
|---|---|
| Ownership | Contributors build on someone else's host; site shutdown = loss risk |
| Consensus pressure | Early edits must survive notability/deletion fights (Wikipedia model) |
| Heat death | Bounded communities exhaust their charter; maintenance mode → colony collapse |
| Reuse friction | Copy-paste HTML/DB content across sites is slow, lossy, attribution-prone |
| Backend lock-in | One engine, one storage model, one permission model |
Federation responses split along two axes:
- Where records live — per-user site, per-instance repo, personal pod, mirrored git clone.
- How unity is achieved — fork + spread, git push/pull, protocol activities, projection/cache, orchestrated union.
shard-wiki (per INTENT.md) targets axis (2) via an orchestration layer
over heterogeneous shards, with Git as coordination substrate — not a
single federation mechanism.
2. Federated Wiki (Smallest Federated Wiki / SFW)
2.1 Historical anchor
| Fact | Detail |
|---|---|
| Origin | Ward Cunningham; launched at IndieWebCamp 2011 |
| Motivation | Regret that c2's 35,000+ pages lived on Ward's server, not contributors' |
| c2 migration | WikiWikiWeb moved to Federated Wiki ~2015 after read-only period |
| GitHub lineage | Fork button inspired by GitHub; "radical code sharing" as model |
| Current code | github.com/fedwiki/wiki (CoffeeScript; active releases through 2025) |
Ward's framing (Wired, 2012): the wiki's radical idea was an edit button on every page; federated wiki's radical idea is a fork button on every page.
2.2 Inverted architecture
Traditional wiki vs federated wiki (Caulfield, NWACC 2014, summarizing Ward):
Traditional: many people → one server → server owns records → consensus on server
Federated: many people → many servers → each owns records → browser composes union
Meaning is made in the browser. The client pulls JSON page records from multiple origins (CORS) and presents them as one navigable space. Consensus emerges through which versions spread across the network, not through a single server arbiter.
2.3 Page model (JSON + journal)
From viki.wiki JSON schema:
page = { title, story, journal }
story = [ item ] # paragraph-like plugin items
journal = [ action ] # edit history that reconstructs story
action.type = create|add|move|edit|remove|fork
action.site = origin host # present when content came from elsewhere
Key properties:
| Property | Implication |
|---|---|
| Data files, not DB render | Fork copies JSON, not scraped HTML — reuse stays structured |
| JSON items, not HTML | Target site re-renders via plugins; display differences don't break remix |
| Journal travels with page | Attribution/history portable; no separate blame log |
| Plugin architecture | Item type selects renderer; missing plugins surfaced to user |
| Fork action | Whole-page copy from remote site into local site with provenance |
| Item IDs preserved | Stable anchors through edits; aliasing guards duplicate IDs |
2.4 Interaction patterns
| Pattern | Behavior |
|---|---|
| Fork | Copy remote page to your site; edit locally; original owner may merge back |
| Drag-and-drop fork | Cross-site page transfer in ~15 seconds (OER case) |
| Chorus of voices | Multiple versions of "same" topic coexist; linked, not merged by default |
| Neighborhood / river | Discovery via recent changes across federated sites (e.g. fedwikiriver.com) |
| Happening | Time-bounded collaborative event on a topic-specific subdomain/site |
2.5 Mike Caulfield — lifecycle and pedagogy
Caulfield articulated fedwiki's social model beyond Ward's mechanics:
Kinneavy triangle / knowledge lifecycle (composition theory):
| Phase | Mode | Typical medium | Fedwiki fit |
|---|---|---|---|
| I | Personal capture | Notes, journal | Each person's site |
| You | Dialogic | Conversation, annotation | Fork chains, cross-site references |
| It | Expository | Stable shared article | Spread of refined forks |
Fedwiki supports I → You → It in one system; centralized wikis force It (consensus) from the first edit.
Bounded conversations / expected heat death (2015):
- Wiki sites are bounded conversations, not permanent monuments.
- Sites are expected to die; valuable material is forked into the next happening.
- Reverse bit-rot — Smalltalk-era term Ward revived: objects/pages improve each time reused across systems (refactor on fork), defying entropy of abandoned forums.
- Contrast: colony collapse on centralized forums (Blue Hampshire example) vs humane site retirement with selective carry-forward.
OER reuse (2015): WordPress copy-paste ~10–15 min/page vs fedwiki fork ~15 sec; bottleneck is software, not human willingness to remix.
Dissent as feature (Ogden via Wired): Wikipedia forces one perspective; fedwiki enables multiple controversial pages, still linked for exploration.
2.6 Strengths and limits
| Strengths | Limits |
|---|---|
| Personal sovereignty over pages | Requires running a site (mitigated by one-click AWS deploy) |
| Low-friction remix with provenance | Small niche ecosystem |
| Multi-perspective knowledge | Weak team-governance / permissions story vs enterprise wikis |
| JSON portability | Plugin fragmentation; non-Markdown item model |
| Strong conceptual clarity | Not a general adapter layer for arbitrary backends |
3. Other federation models
3.1 Git-backed distributed wikis (ikiwiki pattern)
ikiwiki distributed wikis documents a spectrum of decentralization:
| Level | Setup | Federation mechanism |
|---|---|---|
| 0 | Single server | None |
| 1 | HTML mirror | Read-only copy |
| 2 | Split web + git host | Clone/pull |
| 3 | Pinger mirrors | Central bare repo + ping-on-edit propagation |
| 4 | Fully decentralized | Independent wikis push/pull via git to peers |
Branching a wiki = clone origin read-only (git://), edit locally without
push-back — explicit fork. Conflicts surface as markers in rendered pages.
Relevance to shard-wiki: Strong alignment with Git-addressable
coordination and coordination journal in INTENT.md. ikiwiki federates
homogeneous git-backed wikis; shard-wiki must also attach non-git shards
(Obsidian, WebDAV, Gitea wiki, Coulomb, etc.).
Gollum / GitHub wikis: Same backing-store idea — pages as files in a repo; federation is git sync, not a wiki protocol. Multi-repo Gollum setups are operational, not semantic union.
3.2 ActivityPub wiki federation (XWiki)
XWiki ActivityPub Application (v1.7.x) connects XWiki instances to the fediverse:
| Capability | Notes |
|---|---|
| Follow user / wiki actor | Receive Create/Update notifications |
| Share documents | Push page content to followers; view remote in modal |
| Messaging / discussions | Note objects threaded as discussions |
| Like, mention | Social engagement primitives |
| Webfinger + ActivityPub endpoints | Standard discovery |
Caveats (documented by XWiki): Federation "not well supported yet" for full activity routing; Mastodon mention of Page entities incomplete; security signing partial.
Contrast with fedwiki: ActivityPub federates activities and notifications between compatible app instances; content may be copied on share, but the model is social-graph + event stream, not per-user fork sovereignty. Closer to fediverse than fedwiki UX.
Contrast with shard-wiki: ActivityPub could be an adapter transport for some shards, but shard-wiki's core is wiki-page semantics (paths, links, overlays, provenance), not activity streams.
3.3 Xanadu / transclusion lineage
Ted Nelson's Project Xanadu (1960s–) pursued serious electronic literature with patterns still relevant:
| Pattern | Intent | Modern partial implementations |
|---|---|---|
| Visible links | Show destination context, not opaque jumps | Hover previews, Open Graph unfurls |
| Parallel documents | Side-by-side source + derivative | Multi-pane editors (Obsidian, Roam) |
| Transclusion | Live inclusion of remote span with origin pointer | Embeds, block references (weak) |
| Transcopyright | Permissioning for reuse | Mostly unsolved at web scale |
| Stable addresses | Fine-grained, durable pointers | Block UIDs (Roam); URL rot elsewhere |
| Bi-directional links | Backlinks as first-class | Obsidian, Roam, shard-wiki BackLinks UC |
Xanadu is speculative design / pattern language, not deployable federation. Useful for shard-wiki provenance, transclusion, and link resolution thinking — especially union BackLinks and projection freshness.
3.4 Personal / local-first wikis (TiddlyWiki, Obsidian)
Not federation protocols, but sovereignty models:
- TiddlyWiki — single-file portable wiki; complete user ownership.
- Obsidian — local vault + optional sync; community plugins for publish/remix.
Shard-wiki INTENT explicitly lists these as shard participants via adapters. Federation is attachment to a root information space, not replacing the local tool.
3.5 yawex multi-wiki resolution (cross-reference)
From research/260608-yawex-prior-art/findings.md:
| yawex state | Federation reading |
|---|---|
REMOTE |
Jump to another wiki's page — remote shard navigation |
VIRTUAL |
Local processing, remote content — projection |
| Multi-wiki config | Multiple named wikis = multiple shards |
Decision already recorded: inspiration only; shard-wiki designs resolution fresh for heterogeneous adapters.
3.6 Solid / personal data pods (brief)
Solid aims at user-controlled pods + linked data apps. Distributed wiki discussions (forum threads, TiddlyWiki-on-Solid experiments) explore personal wikis on pods vs team commons.
| Axis | Solid-style | Fedwiki | shard-wiki |
|---|---|---|---|
| Unit of sovereignty | Pod / user | Site / person | Shard |
| Unity mechanism | Linked data queries | Browser composition + fork | Orchestrated union + Git journal |
| Team wiki | Secondary; app-dependent | Weak | Supported via shards + authz |
No mature Solid wiki federation standard emerged; treat as adjacent personal- data sovereignty research, not direct prior art.
4. Comparison matrix
| Model | Unit of ownership | Unity mechanism | Consensus model | History / provenance | Heterogeneous backends |
|---|---|---|---|---|---|
| Centralized wiki (c2, MediaWiki) | Site operator | Single namespace | On-page consensus | Server revision log | No |
| Federated Wiki | Per-site (per person) | Browser pulls JSON; fork | Spread of versions | Journal per page | No (all SFW-shaped) |
| ikiwiki distributed | Per git clone | git push/pull, pingers | Merge conflicts in git | Git commits | No (all ikiwiki) |
| ActivityPub (XWiki) | Per instance | Activity stream | Social follow/share | Activity + page store | No (XWiki only) |
| Xanadu | Document address | Transclusion | Parallel versions | Version trails (concept) | N/A (unbuilt) |
| shard-wiki (INTENT) | Per shard | Orchestrator union | Configurable policy | Git coordination journal + shard history | Yes (adapter contract) |
5. Glossary (federation track)
| Term | Meaning | Primary source |
|---|---|---|
| Fork | Copy a page (or site branch) to a new home; divergent editing | Fedwiki, git |
| Journal | Ordered actions reconstructing page state; travels with page | Fedwiki JSON schema |
| Story | Array of typed items (paragraph, image, …) forming page body | Fedwiki |
| Happening | Time-bounded fedwiki collaboration on a topic site | Caulfield |
| Bounded conversation | Site with expected end; not infinite commons | Caulfield |
| Reverse bit-rot | Content improves through reuse across contexts | Caulfield / Ward |
| Chorus of voices | Multiple perspectives on same topic, linked | Ward |
| Inverted model | Records distributed; meaning composed client-side | Ward |
| Projection | Local view of remote content without claiming ownership | shard-wiki / yawex VIRTUAL |
| Overlay | Local edit against remote/canonical without immediate mutation | shard-wiki |
| Shard | Independently meaningful page store with own capabilities | shard-wiki |
| Coordination journal | Git-backed change record for an information space | shard-wiki |
| Transclusion | Include live span from elsewhere with origin visible | Xanadu |
| Fediverse | Network of ActivityPub-speaking apps | XWiki AP, Mastodon |
| Pinger / pingee | Edit-triggered mirror refresh between ikiwiki sites | ikiwiki |
| Wiki actor | Entire wiki as ActivityPub actor | XWiki AP |
6. Mapping to shard-wiki INTENT (compare, do not equate)
6.1 Strong resonances
| Fedwiki / federation idea | shard-wiki concept | Notes |
|---|---|---|
| Personal ownership of edits | Shard sovereignty | shard-wiki generalizes beyond per-person sites |
| Fork with provenance | Overlay + patch flows | shard-wiki separates draft from destructive apply |
| Journal / history with page | Coordination journal + shard revision | Git journal is space-level; shard retains own history |
| Browser-composed union | Union of pages across shards | Orchestrator presents coherent graph |
| JSON not HTML for remix | Markdown-first page model | Different format; same structural intent |
| Lazy pull from remote | Projection | yawex VIRTUAL; explicit freshness |
| Chorus of voices | Union without erasure | Show provenance, divergence, equivalents |
| Bounded conversation | Configurable policy | Mechanism not policy — space may be permanent or ephemeral |
| Reverse bit-rot on reuse | Reconciliation / sync | Policy-driven; not automatic fork |
| Derived views (recent, links) | UC-05 union views | BackLinks, RecentChanges across shards |
6.2 Deliberate divergences (design bugs if conflated)
| Fedwiki assumption | shard-wiki correction |
|---|---|
| Every participant runs SFW-shaped JSON site | Adapter contract for Gitea, folders, Obsidian, WebDAV, engines |
| Fork = default edit primitive | Capability-aware: read-only shards need overlay, not fork |
| Client composes in browser only | Orchestrator may serve CLI, agents, CI — not browser-only |
| Per-site = per-person | Shards may be team repos, org wikis, app databases |
| No central coordination | Git-addressable coordination layer per information space |
| Plugin item types | Markdown-first; engine-specific render is out of core scope |
| Implicit spread-as-consensus | Mechanism over policy — canonical source is explicit config |
6.3 What shard-wiki adds beyond fedwiki
- Heterogeneous attachment — not all shards speak the same page JSON.
- Capability matrix — read/write/diff/merge/lock/publish per shard.
- Overlay-before-mutation — respect remote sovereignty and limited backends.
- Semantic wiki sync — not generic file mirroring.
- Enterprise authz ladder — L0 open → delegated IAM (without owning identity).
- Divergence detection — equivalent pages across shards, reconcilable.
6.4 What fedwiki teaches that shard-wiki should not lose
- Frictionless reuse — if remix takes 15 minutes, federation fails socially.
- Provenance by default — history must travel or be reconstructible.
- Multi-perspective truth — union ≠ single canonical article.
- Expected lifecycle — information spaces may be ephemeral; plan for carry-forward.
- Personal sovereignty — contributors must not be hostage to one operator's server.
7. Use-case promotion (done 2026-06-08)
Promoted to spec/UseCaseCatalog.md as UC-26–UC-33. Architecture decisions
tracked in workplans/SHARD-WP-0002-federation-architecture.md.
| Research ID | Catalog UC |
|---|---|
| UC-FED-01 Fork page from remote shard | UC-26 |
| UC-FED-02 View multiple versions of equivalent page | UC-27 |
| UC-FED-03 Carry forward from closed/archived shard | UC-28 |
| UC-FED-04 Remix with portable attribution | UC-29 |
| UC-FED-05 Time-bounded collaboration space | UC-30 |
| UC-FED-06 Subscribe to remote shard changes | UC-31 |
| UC-FED-07 Transclude remote span | UC-32 |
| UC-FED-08 Git-branch information space | UC-33 |
8. Open questions (for spec / workplans)
- Fork vs overlay vs import — When does shard-wiki copy content into a writable shard vs keep an overlay vs link-only reference?
- Equivalent page identity — How are "same topic" pages matched across shards (title, path, link graph, explicit alias)?
- Journal format — Does shard-wiki adopt fedwiki-like action journals, Git commits only, or both per shard type?
- Browser vs server composition — Where does union merging run for agents and non-UI consumers?
- ActivityPub as adapter — Optional transport for change notification, or out of scope?
- Ephemeral spaces — Should information spaces have first-class lifecycle (archived, read-only, merged-into-successor)?
- Plugin/item extensibility — Markdown extensions vs structured blocks for remixable assessments (fedwiki OER lesson)?
- Consensus without erasure — Policy presets: fedwiki-spread, git-merge, designated canonical shard, vote-to-merge?
9. Sources
10. Traceability
| This document section | Informs (future) |
|---|---|
| §2 Federated Wiki | Adapter design, page model, overlay/fork policy |
| §3.1 ikiwiki | Git coordination journal, mirror/branch modes |
| §3.2 ActivityPub | Optional notification adapter |
| §3.3 Xanadu | Link resolution, transclusion, provenance UI |
| §6 Mapping | Architecture blueprint guardrails |
| §7 UC seeds | spec/UseCaseCatalog.md promotion pass |