Diego Cabello

<<<Back to Coding

NetDoc

Date: 2025 Oct 30

Words: 684

Draft: 1 (Most recent)

AS YOU MAY BE ABLE TO TELL BY THE MARKDOWN STYLE, THIS WAS GENERATED BY CLAUDE. WAS A SUMMARY OF A BRAINSTORMING SESH. I AM CAPABLE OF MAKING MY OWN SPECIFICATIONS (SEE ENTS). THIS IS A Q-A-D (“QUICK AND DIRTY”. EVERYONE SHOULD KNOW WHAT THAT STANDS FOR) SPEC


Vision

NetDoc reimagines social platforms around documents instead of posts. It’s “Plan 9 for the internet” - everything is a document - combined with Project Xanadu’s vision of transclusion and bidirectional linking.

Core Philosophy

  • Profiles as Curated Wikis: Instead of activity streams showing “posted 3 hours ago,” profiles are enduring intellectual landscapes. Your profile is a wiki of “favorite things of all time” - what you think matters, what you’ve annotated, how you organize knowledge.

  • Friction as Feature: Like Tor’s slowness encourages intentional browsing, NetDoc’s wiki-centric design encourages thoughtful engagement. Making a wiki requires investment, filtering out low-effort content. You don’t doomscroll wikis, you navigate them.

  • No Likes, Only Substance: Without reactions, engagement must be substantial - write a reply document, fork and improve, annotate with commentary. Discovery becomes “whose canon do I trust?” rather than “what’s trending?”

  • Live Feed Megawiki: All personal wikis interconnect through a graph. The feed shows “what changed recently in people’s wikis” rather than being primary. You’re maintaining your corner of a knowledge commons.

Technical Architecture

Hybrid Database Strategy

  • Postgres: User accounts, authentication, permissions, simple CRUD operations, full-text search
  • Neo4j: Document relationships, version history, fork trees, transclusion tracking, backreferences

Document Model

+ status
    - draft
    - working
    
+ privacy
    - private @perms @forkability
    - unlisted @perms @forkability
    - public @perms(@view) @forkability(@forkable)

+ &perms (per-users and groups)
    - &view
    - edit

+ &forkability
    - forkable
    - unforkable

+ relationships
    - forked_from (new branch)
    - reply_to (child document)
    - references (bidirectional links)
    - inherits_from (version chain)
    
+ content
    - body
    - references (links and transclusion)
    
+ metadata
    - tags (ENTS hierarchical)
    - author
    - created_at
    - backreferences (computed from graph)

Key Concepts

Version History

  • Content-Addressed Storage: Documents identified by hash (like Git), enabling permanent links even as human-readable labels change.
  • Version Chains: Each document version has inherits_from relationship to previous version. Linear history until forking.
  • Fork Trees: Users can fork documents to create divergent branches. Forks maintain relationship to original via forked_from.

Xanadu Features

  • Transclusion: Embed live content from other documents. When source changes, transclusions can update or remain version-pinned.
  • Bidirectional Links: When Document A references Document B, B automatically knows via backreferences. Enables “what depends on this?” queries.
  • Stable Addressing: Documents have permanent IDs (hashes) separate from human-readable labels that can change.

Organization (ENTS)

Hierarchical nested tagging system:

essays/
  philosophy/
    - Meditations on Moloch (annotated)
  technology/
    databases/
      graph-databases/
        - Neo4j comparison

Documents can exist in multiple taxonomy branches. Users create personal taxonomies; shared taxonomies emerge organically.

Collaboration

  • Suggest Mode: Like Google Docs suggestions - propose changes that author approves/rejects.
  • Edit Mode: Direct modification rights. Multiple editors can work simultaneously.
  • Live Multiplayer: Real-time cursor presence and updates using OT or CRDTs.
  • Checkpoints: Automatic version snapshots every N minutes, user can mark significant versions later.

Discovery

  • Tag-Based Feeds: Browse documents by ENTS taxonomy paths.
  • Curated Collections: Profile wikis as reading lists with commentary.
  • Network Traversal: Follow references, explore fork trees, see who annotated what.
  • Recent Changes: Wikipedia-style feed of recent wiki updates.

Profile Structure

Profiles are special wiki documents with curated sections:

# My Canon

## Essays I Return To
- Meditations on Moloch [annotated fork]
- A Formalist Manifesto [original + my commentary]

## Active Projects  
- NetDoc design docs
- EXRPT spec notes

## Research Interests
technology/databases/graph/
philosophy/political-theory/

The social graph emerges from who you reference in your wiki, not explicit “following.”

Web4 Context

NetDoc is one application within a broader Web4 vision:

  • Standardized Protocols: Open standards for feeds, notifications, identity (public key cryptography).
  • ** Extensions System**: NetDoc as one “social modality” among many (chat, video, blogs) in a unified browser.
  • Decentralized Communities: Communities set their own member lists and moderation policies.
  • Interoperability: Any Web4 app can reference NetDoc documents; NetDoc can transclude from other apps.

Related Concepts & Inspirations

  • Git: Forking, commits, content-addressed storage, merge strategies
  • Obsidian/Roam: Networked notes, bidirectional links, local-first
  • Project Xanadu: Transclusion, stable addressing, bidirectional links
  • Wikipedia: Collaborative editing, version history, recent changes feed
  • Google Docs: Suggest mode, real-time collaboration, presence
  • Tor Network: Friction as intentional design (slow = careful)
  • Academic Citations: Trust through curation, building on others’ work

Technical Stack

  • Backend: Node.js
  • Databases: Postgres (relational) + Neo4j (graph)
  • Client: Electron (cross-platform desktop)
  • Query Languages: SQL + Cypher
  • Real-time: WebSockets for live collaboration
  • Version IDs: Content hashes (SHA-256 or similar)

Open Questions

  • How to handle transclusion when source document changes/deletes?
  • Optimal checkpoint frequency for version history?
  • Should backreferences be hideable by authors (harassment concerns)?
  • Fork tree pruning strategies (prevent infinite branching)?
  • Annotation format - keep EXRPT XML or simplify?

This document itself will be written and maintained in NetDoc, dogfooding the platform from day one.

<<<Back to Coding

Made with Sculblog