Orchard
1086 words, ~6 minute read. Planted . Last tended to .
Tags:
My ProjectsThis is an Agentic Fediverse app I'm designing and at least building a mock for. The purpose of the app is to organize and grow a Network of Knowledge (or Digital Garden) sorted by topic. It achieves this through a concept called message gardening, the process of converting casual conversations into formal, referenceable stores of knowledge. It would be an experiment in Digital Locality and perhaps represent an alternative to traditional Social Media.
The original problem I was trying to solve is having a lot of conversations about various topics stretching back far into the past and across many platforms. I often want to review something I said on a given topic and find it difficult to do so. This app would make it far easier to retrieve my notes on any topic, and collect those notes into a useful resource about that topic (a process called "message gardening"). It's different than a traditional note-taking app because it works with conversations directly, which is useful because discourse is typically what prompts me to collect my thoughts on a topic in the first place.
Core to this project is improving how conversations online are carried out. It's inspired by sort of mashing up The IndieWeb and Commune, and would follow a lot of the recommendations in the chat glue comic. Contrary to each person having to own a personal website, this platform should in theory be more accessible by allowing people to skip the step of finding a domain to semi-permanently attach their identity to, and not having to pay a subscription cost to maintain it. See the page on the Agentic Fediverse for details on how to run it sustainably and still offer free tiers to users.
Implementing Chat Glue
As you converse in your group chats and DMs, you can specify topic changes. These will break the conversation up into pieces called notes, and each piece gets added to each of the topics it was about (with links to the convo from before and after that one).
Notes should also allow specific parts, up to the character level, to reply to, react to, otherwise annotate, or mark as a topic change. This is something to think about with regards to decentralized moderation and things like muting pages or gardens. Plus the matter of displaying the sync to the user.
Exactly where these DMs and group chats are coming from isn't super clear in my mind. I want Digital Locality, which means avoiding large groups of users and limiting the influence of individual posts and posters. We don't want a federation of discrete independently moderated communities, as that will lead to centralizing power and influence. But, organizing communities this way is very common due to its convenience and appeal. If you make, say, an open source library and want people to know where they can go to discuss how to use the library, show off what they used it for, etc. then you're likely to create a discrete community for it.
In theory we could take the Chromatic Lattice's initial approach and just have a chat room tied to each user, but I'm not confident that'll translate well to this project. I'm leaving this open ended, since I expect we'll learn from Chromatic Lattice anyways and find a better solution to this problem.
Non-conversation Notes
In addition to including conversations, I want to support freeform notes that also discuss one or more topics. Another type of non-conversation note could be excerpts from online articles, which could be automatically cited. Through leaf's compositional structure, in theory any entity should be able to be added to the network.
When allowing these kinds of notes, users should be encouraged to split notes small if possible. This could potentially allow us to avoid or delay the need for something like Garden-RSS, and instead allow us to just mark entire notes as changed.
The Topic Graph
If a note was about multiple topics it forms a link between those topics and considers them in some way related. These links are represented as lines in the topics graph, and cause the topics to be physically closer within the graph.
Links can also be manually created, and all links can be labeled to display a relationship between two topics, like "x is a y" or "x is similar to y" or "x contains y". These would be stored as specially marked notes and can be made public like any other. Selecting an edge will show all relationships that edge has been labeled with, along with any other notes that contain both topics.
Sharing Notes
You can jump to other people's gardens and see their public notes (via a friends list or via a mutual chat room). You should be able to take any of those notes or the whole graph and include it in your own, so they are part of your graph and queries. There'll need to be a good way of displaying changes, aliasing topics, and proposing edits to other peoples' pages. A user should also be able to "fork" someone's notes so they can modify them, and maintain a link to the original note but no longer auto-update them.
I think a conversation should show a sidebar of notes from both the user's network as well as any public notes from any other active participants' networks that relate to the set of topics being discussed. I think this would help encourage message gardening and assist with distributing information. We could go a step further and notify participants when those notes get added to or edited, which could help with corrections to articles getting spread to those who saw the original incorrect information (something that traditional media doesn't do well).
We'll need to be careful sharing notes doesn't lead to centralizing power. I think if you subscribe/follow someone's graph, it shouldn't include the pages they've followed (although forks would be fine). This would lead to Digital Locality and all the benefits it entails. However, this might make it harder for movements to spread, because it means it spreading requires people to write new content rather than sharing existing content. I believe (perhaps optimistically) that movements can succeed in this environment, but perhaps instead there's a happy medium we can strike, so high quality notes can be spread without leading to issues like non-consensual Virality.
LLMs
A local LLM could assist in marking topic changes automatically, making it so chat participants don't have to themselves. Since being broken down into topics is particularly useful for "catching up" on a conversation (allowing you to skip topics you're not interested in), this feature would be particularly useful on chats from platforms that don't support topics themselves, such as discord or slack. Jigsaw's sensemaking-tools project could slot in here particularly well.
LLMs could also be given the topics as context and be able to query the network for knowledge.
Tech Stack
It'll use the Agentic Fediverse to store the messages and other data, making the whole app Local-First Software. The frontend of the app will be built in tauri. It'll use Incremental Social as the default iroh node and handle any other (optional) server side features.