- RCD Notes & Hyperscope for GNU Emacs
- The Dynamic Knowledge Repository
- Fundamental Principles
- The Ten Principles
- 1. Any information is an elementary object
- 2. Every object has a type and may have a subtype
- 3. Objects have internal metadata and external properties
- 4. Infinite classification, categorization, and intersection
- 5. Every object is related to people
- 6. Objects are authored, versioned, and traced
- 7. Objects have lifecycle and state
- 8. Everything can relate to everything else
- 9. Types have their own types (metatypes)
- 10. The repository is active, not passive
- Feature Areas
- One Sentence Summary for the Emacs User
- Does RCD Notes & Hyperscope, The Dynamic Knowledge Repository for GNU Emacs alignes with the principles of the the Dynamic Knowledge Repositories (DKR) as described by Doug Engelbart?:
RCD Notes & Hyperscope for GNU Emacs
The Dynamic Knowledge Repository
RCD Notes & Hyperscope for GNU Emacs is a Dynamic Knowledge Repository designed as envisioned by Doug Engelbart. It is free software licensed under the GNU AGPL 3.0+.
It is programmed in Emacs Lisp and used through the GNU Emacs editor. It uses a PostgreSQL relational database as its storage backend.
Fundamental Principles
Any type of information may become an elementary object. Elementary objects have types, subtypes, and both internal and external properties. Types, subtypes, and properties enable infinite classification, categorization, and intersection. Documents are always related to people — to authors, destined people, related people, or as the subject matter itself.
Preamble: Types Shape Behavior
Before any object exists, its elementary object type and elementary object subtype determine how the system interacts with it. Types are not mere labels — they carry methods, Emacs Lisp behavior, major modes, colors, templates, and presentation rules.
A Video type behaves differently from a PDF type. A Task subtype has different lifecycle rules than a Receipt subtype. The type system is the executable grammar of the repository.
The Ten Principles
1. Any information is an elementary object
Every piece of information — a note, a person, a location, a transaction, a relationship, a property — is an elementary object. Each object has a unique ID and a UUID for stable identity across systems.
There is no hard separation between “content” and “metadata.” Metadata exists as internal information — intrinsic to the object itself, not as external relations.
Principle: Ontological flatness — no information is inherently more privileged than any other.
2. Every object has a type and may have a subtype
- Elementary object type defines the fundamental nature and behavior: Document, Person, Location, Event, Transaction, Account, WWW link, Video, PDF, Task, Note, Image, etc.
- Elementary object subtype refines it: Letter, Invoice, Photograph, Receipt, Contract, Agreement, Business Quotation, Meeting, Call, Password, etc.
Types carry executable logic:
- Major Mode — how Emacs displays the object
- Minor Modes — additional editing behaviors
- Emacs Lisp — custom functions for the type
- Foreground and background colors — visual distinction
- Plain text function — how to extract readable text
- Presentation template — how to render the object
- Is file flag — whether the object represents a filesystem file
- Is WWW flag — whether the object lives on the web
Subtypes carry additional semantics:
- Use in transactions flag — whether this subtype appears in financial contexts
- Include flag — whether to include in mixed collections
- Fancy name — human-readable display name
Principle: Typed universalism with executable behavior — types define not just classification but interaction.
3. Objects have internal metadata and external properties
Internal metadata lives on the object itself:
- Name — human-readable title
- Description — short summary
- Text — main content body
- Internal information — system or private metadata, not normally shown to end users
- Start Date and Time / End Date and Time — temporal scope
- Duration / Interval — time measurements
- File Checksum Hash / GPG Signature — integrity and authentication
- Value or Price — monetary or exchange value
- SKU — stock keeping unit
- Global Rank — importance score
External properties are stored separately, linking an object to a Property (name) and Value, with an optional Extra value. Each external property has a Type (what kind of property it is) and a Description.
Principle: Intrinsic vs. relational — what something is (internal metadata) vs. what it has in relation to others (external properties).
4. Infinite classification, categorization, and intersection
An object can belong to multiple classification systems simultaneously:
- WRS Category and WRS Area — primary taxonomies
- Tags — lightweight labeling
- Properties — arbitrary key-value classification
- Related URIs — external taxonomies
No object is forced into a single parent. Intersection queries — “All Documents of subtype Letter in WRS Area X with Property Y” — are native and efficient.
Principle: Polyhierarchical, non‑exclusive membership — classification is a hypergraph, not a tree.
5. Every object is related to people
The system embeds people relationships throughout:
| Relationship | Meaning |
|---|---|
| Author | Who created this object |
| Author Name | Denormalized author name for fast lookup |
| Assigned to contact | Person responsible for or destined to receive this object |
| Related person | Single person associated with this object |
| Related people list | Multiple people associated |
| Introduced by | Who brought this object or relationship into existence |
| Report to | Manager or supervisor context |
| Curator | Person responsible for maintaining this object |
| Related business | Organizational context |
For people themselves, the system tracks:
- First name, Middle names, Last name, Prefix, Suffix
- Date of birth or Begin Date / End date
- Title, Department, Reports to, Assigned to
- People type (e.g., Customer, Partner, Employee, Lead)
- Do not contact flag
For relationships between people:
- Person and People list (the two parties)
- Relation type (e.g., Employee of, Spouse of, Reports to)
- Relationship Start / Relationship End
- Do not email, Do not call, Do not mail, Do not SMS — per-relationship communication opt-outs
- Rank in this relationship and Priority
- Lead source — how this relationship originated
- Sales Flow Stage — where in the pipeline this relationship lives
Principle: People are the gravitational center — no object exists without human context, and relationships between people are first-class objects with their own lifecycle and metadata.
6. Objects are authored, versioned, and traced
Every object tracks:
- Date created / Date modified
- User created / User modified (database user)
- Revision — version number
- UUID — stable cross-system identity
Principle: Full provenance — who made it, when, what changed, and the object remains traceable across systems.
7. Objects have lifecycle and state
- Active — soft delete (object exists but is hidden)
- Start Date and Time / End Date and Time — temporal validity window
- Action status — workflow state (Draft, Published, Archived, Cleared, etc.)
- Search status — whether indexed and searchable
- Hyperdocument sharing type — privacy and sharing level
- Default kill type — how the object should be retired
- Modification type — nature of last change
For financial context specifically: Reconciled flag indicates settlement against external records.
Principle: Lifecycle awareness — objects are born, change, expire, and can be retired, not just deleted.
8. Everything can relate to everything else
Multiple relation mechanisms:
| Mechanism | Meaning |
|---|---|
| Parent ID | Hierarchical containment (object contains other objects) |
| Properties (with Type, Property, Value) | Named, valued relationships to other objects or literals |
| Hyperdocument 1 / Hyperdocument 2 (with Relation type) | Typed binary links between any two elementary objects |
| Person / People list (with Relation type) | Typed relationships between people, with start/end dates, opt-outs, and sales stage |
A transaction can link to: - Hyperdocument — the elementary object that contextualizes this transaction - Receipt — proof document - Payer, Receiver, Reporter — people involved - Relationship — the people-relationship under which this transaction occurred - From account, To account — financial accounts - Currency, Exchange rate - Last known location - Possession type, Stock, Unit, Unit Price
Principle: Graph-native — relations are not afterthoughts; they are first‑class objects with their own metadata. Everything can connect to everything.
9. Types have their own types (metatypes)
The type system is self-describing. Elementary object types themselves have:
- Name and Fancy name
- Description — what this type means
- Key — unique identifier for programmatic reference
- Priority — ordering and importance
- Default subtype — fallback when no subtype specified
- Next type — for type transitions or workflows
- Emacs Lisp — behavioral code
- Action LL type — what kind of action this type triggers
- Is file / Is WWW — location semantics
- Type is media — whether this type represents multimedia
- MIME type — for content negotiation
- Plain text function — how to convert to readable text
- Presentation template — how to display
- Presentation function — custom rendering logic
- Emacs colors — foreground and background for visual distinction
Elementary object subtypes have:
- Name and Fancy name
- Description
- Include flag — whether to include in mixed collections
- Use in transactions — financial relevance
- Tags — classification at the type level
- Label — display string
- Default kill type — how to retire objects of this subtype
Principle: Reflective typing — the type system is itself typed, extensible, and executable.
10. The repository is active, not passive
Triggers and constraints enforce domain logic automatically:
- Balance updates when transactions change
- Account validation against hyperdocument context
- Relationship expiry cascades
- Empty string normalization
- Type‑specific write protection
- Automatic URL extraction from Hyperlink fields
- Version control logging
Types invoke action Lisp and PDF Lisp on demand. Subtypes carry action LL types that determine behavior at runtime.
Principle: Smart storage — the database and type system enforce business logic and integrity, not just the application.
Feature Areas
The principles above manifest in concrete feature domains that span personal, organizational, and enterprise needs — all unified under the same object model.
Customer Relationship Management (CRM)
- Management of people, addresses, contacts, and relationships
- Sales flow management — move a person from one sales stage to another
- Multiple address books with vCard export
- Communication Center with calls, SMS, e-mail, XMPP, and more
- Mailing list and communication follow-up management
- Interaction statistics
- People Ring — hover over visited people entries
- Tags for people
- Search by various means
- Upcoming birthday tracking
Multiple Website Revision System (WRS)
- Multiple domains with multiple web server targets
- HTML templates and variables
- Web forms
- WRS Categories, Areas, Menus, Priorities, and Page Layouts
- WRS Output Markup control
- OG Images, Main Page flags, and menu visibility
Enterprise Resource Planning (ERP)
- Invoices and multi‑business accounting
- Account balances
- Administrative Scale — business and life planning
- Inventory management
- Statistics and reporting
- Unit conversions
- Payments, receipts, and bank instructions
- Financial subjects and wealth generation plans
- Budgets and projected budgets
Hyperscope Dynamic Knowledge Repository (DKR)
- Elementary objects with types and subtypes
- Notes, tasks, plans, meetings, calls, and follow‑ups
- Anything may be a Hyperdocument or elementary object
- Multiple unlimited markups (Markdown, Org, HTML, LaTeX, enriched text, etc.)
- Mixing of markups in mixed‑object documents
- Sharing of Hyperdocuments by any communication line
- Associations to other Hyperdocuments and people
- Timestamps of all kinds
- Hyperscope Agenda
- Export to Org, Asciidoctor, LaTeX, HTML, and any markup
- Hyperscope Ring — remembers all user activities
- Speech notification and reminders
- Tags for Hyperdocuments
- Knowledge checks and questions
- Templates for consistent document structure
Geographic Features
- Location sets, areas, and waypoints
- GPX file export
- Latitude and longitude
- Area size calculation
- Conversion between different geographic datums
- KMZ, KML, and GeoJSON support
Encryption and Security Features
- Password management
- Encrypted elementary objects
- GnuPG/PGP signed elementary objects
- Automated version control
- Lock‑down states for security events
Semantic Triplets
- Abstract notes and relationships
- Structured knowledge representation
Real Estate Management
- Property tracking
- Floor plans and site plans
Emacs Interface
- Syntax highlighting
- Hovering over Emacs points
- Major mode overrides and minor modes
- Emacs Lisp integration at every level
Localization
- Translation of all messages to other languages
- Language tracking per object and per relationship
One Sentence Summary for the Emacs User
RCD & Hyperscope is a typed, versioned, person‑centric, graph‑native object store where every document, person, transaction, property, and relation is a first‑class, searchable, lifecycle‑aware object — types carry executable Emacs Lisp behavior, major modes, colors, and templates — and Emacs is the interface to query, create, and traverse it across CRM, ERP, web publishing, geography, encryption, and beyond.
Does RCD Notes & Hyperscope, The Dynamic Knowledge Repository for GNU Emacs alignes with the principles of the the Dynamic Knowledge Repositories (DKR) as described by Doug Engelbart?:
Based on the Doug Engelbart definition you provided — without needing the failed URL fetch, since you quoted the essential text — yes, the RCD Notes & Hyperscope aligns directly with the Dynamic Knowledge Repository (DKR) concept. Here is a point‑by‑point alignment:
Alignment with Engelbart’s DKR Definition
| Engelbart’s DKR Requirement | How RCD Notes & Hyperscope Fulfills It |
|---|---|
| Not a static archive — a living, breathing, rapidly evolving repository | Every object has Date Created, Date Modified, Revision, User tracking, Active flag, Expiration dates. The repository changes moment to moment. |
| Accumulates everything throughout a project — successive drafts, commentary, polished versions | Version control trigger records every change. Parent ID allows draft → revision chains. Modification type tracks what changed. |
| Brainstorming and conceptual design notes | Note type, Text content, Internal information field — brainstorming lives as elementary objects. |
| Design rationale | Properties table (Property, Value, Extra value) captures rationale as structured external metadata. Description field holds free‑text reasoning. |
| Work lists | Task subtype, TODO field in transactions, Checklist subtype, Priority and Global priority fields — actionable work items. |
| Contact info | Full people table with names, prefixes, suffixes, departments, titles, addresses, communication opt‑outs, lead sources. |
| Email and meeting notes | Message-ID type, Chat Log subtype, Meeting subtype, peoplerelations table links people to meetings. E‑mail Snippet and Signature subtypes. |
| Research intelligence collected and commented on | Elementary objects of any type can have Description, Internal information, Properties, Related URIs, Tags. Comments are objects themselves. |
| Emerging issues | Issue tracking via Action status, Follow‑up subtype, TODO fields, Sales Flow Stages for problems. |
| Timelines | Start Date and Time, End Date and Time, Duration, Interval — temporal modeling built into every object. |
| Software project specifics — successive source code versions, bug reports, change requests, fixes, version release notes, documentation | File type, PDF by Page Nr., Video (exact time), Emacs Lisp Hyperlink, Shell Command, Executable Snippet, Dev‑T subtype, Programming Language field, MIME types, Is file flag — code and bugs are objects with versioning. |
| CoDIAK (Concurrent Development, Integration, Application of Knowledge) | Types carry executable Emacs Lisp — actions run on objects. Hyperdocument 1 / Hyperdocument 2 relations connect concurrent work. Action LL types trigger behaviors. The repository is active, not passive. |
| DKR as collective record captured on the fly | Every object has User created, User modified, Date created — who did what, when, as it happens. No batch import required. |
| Group brain, memory, connecting dots | Universal relations (Parent, Properties, Relatedhyperdocuments, Peoplerelations) connect any object to any other. Full‑text search (Tokens) finds dots. Hyperscope Ring remembers user paths. |
| Right hand knows what left hand is doing | Assigned to contact, Related people list, People list assigned, Report to, Curator — people see objects assigned to them or their team. Sharing types control visibility. |
| Best practices: collaboration facilitators, knowledge specialists | The system is programmable in Emacs Lisp — facilitators can write custom queries, views, templates. Templates table, Presentation templates, WRS Page Layouts encode best practices as reusable structures. |
| Moderating connectivity, capture, tagging, tracking | Tags (#1, #2, #3), WRS Categories, WRS Areas, Keywords, Properties — multiple orthogonal classification systems. Search status controls indexing. Action status tracks workflow. |
| Portals into the emerging repository | WRS (Multiple Website Revision System) serves repository content as HTML. Hyperscope Agenda provides personal portal. Org export, LaTeX export, HTML export — any view. |
| Optimally navigable, searchable, useful | GIN indexes on Tokens (full text) and Text (trigram) for fast search. Hyperscope Ring for navigation history. Parent ID for hierarchy. Relatedhyperdocuments for graph traversal. |
| Litmus test: find design flaw from several versions back, with dialog, commentary, rationale, alternatives | Version control trigger keeps history. Parent ID chains versions. Properties table stores rationale. Relatedhyperdocuments links decisions to discussions. Internal information holds private commentary. Description holds public rationale. — All pieces instantly accessible because they are objects with relations, not buried in email. |
| No digging through everyone’s emails | Email is ingested as objects (Message-ID type, Mbox type). Email becomes part of the graph, not a separate silo. |
| Comprehensive knowledge base on a topic (Human Genome Project, Library of Congress, Wikipedia, Internet Archive) | Any domain can be modeled: Real estate management, Geographic features, Financial subjects, Health remedies, Legal documents (Law, Patent, Contract), Educational (Lesson, Training), Creative (Poem, Song, Story, Movie) — all as types/subtypes. |
| Quality, breadth, depth → Collective IQ | The system’s typed, relational, versioned, searchable, executable nature directly raises Collective IQ per Engelbart’s metric. |
Direct Quote Alignment
“A DKR is a living, breathing, rapidly evolving repository of all the stuff accumulating moment to moment throughout the life of a project or pursuit.”
RCD: Every object has creation/modification timestamps, revision numbers, user tracking, and active/expiration states. The repository changes in real time, not in batches.
“Successive drafts and commentary leading up to more polished versions.”
RCD: Parent ID chains drafts. Version control trigger records every change. Modification type distinguishes draft from published.
“Brainstorming and conceptual design notes, design rationale, work lists, contact info, all the email and meeting notes.”
RCD: Note type, Properties table for rationale, Task subtype, People table, Message-ID and Mbox types, Meeting subtype, Chat Log subtype.
“Research intelligence collected and commented on.”
RCD: Any object can have Description, Internal information, Properties, Tags, Related URIs. Comments are separate objects linked via Relatedhyperdocuments.
“In a software project: successive versions of source code, bug reports, change requests, fixes, version release notes, documentation.”
RCD: File type, Dev‑T subtype, Programming Language field, Is file flag, PDF by Page Nr., Video (exact time), Executable Snippet — all versioned and linkable to people, tasks, and meetings.
“CoDIAK — concurrent development, integration, and application of knowledge.”
RCD: Types carry executable Emacs Lisp (application). Hyperdocument relations connect concurrent work (integration). Action LL types trigger behaviors (development). The repository is active, not a static archive.
“The DKR is the emerging collective record captured on the fly — the group brain, memory, where the dots are connected.”
RCD: Universal relations connect any object to any other. Full‑text search finds dots. Hyperscope Ring remembers paths. Peoplerelations connects people to people and people to work.
“A litmus test: instant access to design documents several versions back, with dialog, commentary, design rationale, alternatives discussed.”
RCD: Version control + Parent ID chains. Properties table stores rationale. Relatedhyperdocuments links decisions to discussions. All objects, not email silos. Instant, not after digging.
“No digging through everyone’s emails to piece together what was transpiring.”
RCD: Email is ingested as objects (Message-ID, Mbox). Email becomes part of the typed, related, searchable graph.
Conclusion
Yes, RCD Notes & Hyperscope aligns fully with Engelbart’s DKR vision. It is not merely a document archive — it is a typed, relational, versioned, searchable, executable, person‑centric, graph‑native repository that captures work in real time, connects everything to everything, and makes the collective record instantly navigable. It implements CoDIAK through executable types and universal relations. It passes the litmus test: old designs, rationale, alternatives, and discussions are all objects — accessible directly, not buried in email.
The one addition Engelbart emphasizes that the current documentation could make more explicit is the social and role dimension. The system already supports this through fields such as Assigned to, Curator, Introduced by, Report to, People list, and Peoplerelations with opt‑outs and sales stages. However, making it a stated principle — that the DKR includes roles and practices, not just technology — would fully close the gap between the implementation and Engelbart’s vision of collective work supported by collaboration facilitators, knowledge specialists, and evolving best practices.