matrix-org / matrix-org/cerulean

What if there were no "thread" rooms?

Open
#47 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
106
Forks
11
PR merge metrics
No merged PRs in 30d

Description

Could the single "user timeline" room be enough or are "thread" rooms necessary?

It would require members of Bob's "timeline room" to be able to reply to messages (replies to tweets) without being able to write new standalone messages (tweet in Bob's name). I guess these granular permissions aren't possible, but maybe that could be a MSC?

I tried to think about more differences. Please correct me where I'm missing something.

Pros:
- Just one single room on the homeserver whose number of messages grow instead of many rooms whose number grows. Not sure if this buys anything, or if one room or many rooms scale equally well?
- Search across a user's tweets with all replies just searches a single room instead of many, probably easier (?)
- No illogical separation between Tweets (currently, message in "user timeline" room) and their replies (messages in "thread" room), they would all be messages in a single room just separated by their hierarchy
- No lost messages, e.g. currently writing into a "thread" room from a normal chat client without it being a reply is lost in Ceruleum
- No distinction between peeking/joining a room depending on if viewing/replying to a Tweet
- Protected posts, e.g. can't reply to a Tweet without following the user, currently doesn't verify if the user is also member of the "user timeline" room before allowing them to join the "thread" room (?)

Cons:
- Everything scoped to a single Tweet becomes more difficult since it's just a thread, e.g.
- can't set permissions for a single Tweet, e.g. block users from replying to one tweet but not others
- can't send notifications for a single Tweet, e.g. notify user that the Tweet they replied to earlier got new replies

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing Cerulean's current user timeline and thread room behavior, especially replies, membership, and protected posts. Check whether Matrix supports the proposed granular permissions and compare the listed scaling, search, notification, and per-post moderation trade-offs. Done means reaching and documenting a clear decision or specification.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.