metamitya ·
Treechat Is a Tree
In 2012 Joel Spolsky made an argument I keep coming back to: the great general-purpose apps are "actually just fancy data structures." Excel is a table. Word is wrapped lines of text. PowerPoint is a stack of slides. On customer visits he saw that most people barely used Excel's formulas. They opened it to get rows and columns.
Each of those apps won because its data structure matched something people already did. Bookkeeping was a table long before computers, and a talk was a sequence of slides.
But none of them is built for conversation, which is the thing people do most.
The conversation apps picked a list as their data structure.
Forums, Twitter, Facebook and Slack differ in a hundred ways, but they store a discussion the same way, as a single-dimensional list.
A list records when something was posted. It has nowhere to record what a reply is answering. So a reply to the third comment lands under the fortieth, side discussions pile into the same thread, and readers scroll back and forth to work out who answered whom. The deeper a conversation goes, the worse a list holds it.
A list also has exactly one order, and someone has to choose it. On most platforms a ranking system makes that choice, tuned to keep you on the app because the platform earns money from your time. Whoever controls the sort controls what gets read. The feed grew out of that: one list, sorted to harvest your attention.
A conversation is really a tree
Someone makes a point. A few people answer. One of the answers starts a separate discussion, and that one splits again. Often the best exchange in the whole thread happens three or four replies down. That shape is a tree, and Treechat stores it as one.
A post is a room that holds its replies, in the same order for everyone who opens it. Any reply can start its own room, so a side discussion gets space without taking over the original. Each room has its own link, and breadcrumbs show the way back up.
You'll still see lists in Treechat, because each room is a list of replies. The difference is that any item on that list can open a list of its own, as many levels down as the discussion goes. A tree is lists all the way down.
Because replies keep their context, people use the structure for more than chat:
Arguments where each disputed point gets its own room, so the same debate isn't repeated in fifteen places.
Collaborative stories where each reply is a possible next chapter.
Research threads where a question splits into sub-questions, each collecting its own sources.
Songs and art that other people answer with their own versions.
Conversations with AI models where you can go back to any earlier reply and branch from it.
Readers set the order
In a tree, a post's place is decided by what it answers. No advertiser is paying for your attention, so nothing needs to keep you scrolling. Your upvalues decide what gets seen in the top level feed, and any upvalued post gets teleported to the top of the feed, no matter how deep in the tree it sits. Upvalue decides, in other words the users collectively decide using a scarce, honest signal, which room or tangent we should be in, in any given moment.
Spreadsheets got a table and presentations got slides. Conversations got a feed sorted for advertisers. We built Treechat to give them a tree.