What I'd prefer is the Twist-style threads (Zulip may also have them), where every room/channel must contain only topics/threads, and those topics have a title/description, and any messages in them are 1-level (no nested threading).
It looks like this:
#office [room/channel]
* Lunch [thread/topic]
- Anyone wants to grab lunch today? [message]
- Sure, I'll join! [message]
- Me too! [message]
* Printer doesn't work [thread/topic]
- Anyone else having trouble with the printer? [message]
- I fixed it an hour ago actually, try again [message]
- Thanks, it works! [message]
- (thread closed)
#marketing [room/channel]
* Website Update 2022 [thread/topic]
- (posting images) [message]
- Here is the new draft, let me know what you think! [message]
- Looks good, but there are some spelling mistakes… [message]
- Nice work! [message]
- Adwords Campaign [thread/topic]
- Here is a new adwords campaign structure. Let me know what you think! [message]
- How about splitting by geografy and demographics? [message]
- … [message]
- … [message]
- Alright, new campaign is live, thanks everyone! [message]
- (thread closed)
We recently switched from Slack to Twist because they have this structure. Although Twist is worse in probably every dimension except for this, this structure is still so much better that we're overall happy with the move.
I wish Element/Matrix would support this. I suggested this during their RFC process, but unfortunately didn't capture enough attention. Perhaps it'll be added later.