Nostr Improvement Possibility — Discussion Laboratory v0.1
Nostr Improvement Possibility — Discussion Laboratory v0.1
Human Description
What this is
Nostr conversations generate a lot of interesting sparks — ideas, questions, rabbit holes worth exploring.
People often go off and look into those things on their own. Sometimes they run experiments, find sources, or learn something useful. But those results rarely make it back to the original discussion.
The effect is a bit like hearing a news story with no follow-up. You know something happened, but the outcome never quite reconnects to the place where the question started.
An alternate pattern might look like this:
- someone proposes an idea
- others explore it or challenge it
- experiments or research happen
- people report what they found
- eventually someone attempts a synthesis
In practice that sequence rarely appears.
Nostr already contains many of the pieces needed for it though. This document is an attempt to see whether a few simple conventions could help those pieces line up often enough to make discussions easier to follow and build on — in the open, without requiring specialized clients.
Nothing here is strict. These are loose conventions meant to help conversations produce useful knowledge.
Core Idea
Event kind 30023 defines a living discussion document that can evolve over time while keeping related discussion anchored to a stable address.
Replies reference the document using an a tag (30023:<pubkey>:<d-tag>), allowing experiments, reports, and discussion to remain connected even if the root document updates.
Role tags (proposal, experiment, report, synthesis) signal the purpose of replies so clients and indexing systems can organize the discussion.
Example root event:
{
"kind": 30023,
"tags": [
["d", "topic-id"],
["title", "Example topic"],
["t", "proposal"]
],
"content": "",
"created_at": 0,
"pubkey": "...",
"sig": "..."
}
Event Types
Notes may include tags describing their role in the discussion.
["t","proposal"] # introduces an idea
["t","experiment"] # describes an attempt or test
["t","report"] # results or observations
["t","synthesis"] # summary of current understanding
These tags are signals rather than strict requirements.
Anchoring Replies
Replies SHOULD reference the root document using an address reference (a tag).
kind: 1
["a","30023:<pubkey>:<d-tag>"]
A relay hint MAY be included:
["a","30023:<pubkey>:<d-tag>","wss://relay.example"]
Using the address reference ensures replies remain connected even when the root document is updated.
Poll Events
Polls and votes MAY be used as lightweight coordination tools.
- kind:1068 — Poll event (question and options)
- kind:1018 — Vote event (response selecting an option)
Example poll:
kind: 1068
Example vote:
kind: 1018
Simple Models
Basic exploration
root document (kind:30023)
│
├─ proposal
├─ experiment
│ └─ report
└─ synthesis
Discussion and friction
root document (kind:30023)
│
├─ proposal
│
├─ discussion
│ ├─ counterpoint
│ └─ clarification
│
├─ experiment
│ └─ report
│
└─ synthesis
Loose Conventions
- Root document MAY update as understanding improves.
- Replies SHOULD reference the root address.
- Experiments SHOULD include evidence when possible.
- Reports SHOULD describe what actually happened.
- Syntheses summarize the current state of the discussion.
How to Find These Events
Discovery mechanisms are intentionally left open for experimentation.
Possible approaches may include:
- filtering by
kind:30023root documents - indexing replies that reference the root via the
atag - searching for role tags such as
proposal,experiment,report, orsynthesis - relay or client-specific indexing strategies
Different clients and indexing systems may experiment with their own discovery methods.
Open Questions
Future exploration may include:
- spam handling
- web-of-trust weighting
- contributor credit
- bounty distribution
- poll coordination
- AI summarization or indexing
- how discussion events are discovered or indexed
These are not required for the discussion laboratory to function.