Introducing Threads in Beta
element.io
element.io
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.
Fun fact: the design for Element’s current threading is from a former Twist designer; make of that what you will :)
Does Zulip support nested threads?
I think what all of these platforms are discovering is that we figured out some pretty intuitive patterns early on and are on a constant loop of wanting to do something different before eventually realizing this and reverting.
There's a hybrid wherein you keep references to a branch in a thread but you still display a flat discussion. If you choose to follow the branch you can but otherwise all discussion sits on one level. I like this way more than default nesting, which can be impossible to follow.
This is kind of what you get from Slack's threads — if everyone always uses the "also share to channel" option in the thread, and if everyone also make sure to otherwise never post directly to the channel. Which is impossible to enforce, of course.
I feel like, without such a braided view, it'd be very hard to follow several threads at once, if you were e.g. helping multiple people in a "support" channel, with each conversation being a thread. Once you navigated into a thread, you wouldn't be able to see activity in sibling threads until you navigated out. You'd know that something happened, but you wouldn't be able to glance at the content to tell if it's more urgent than your current conversation. (You could rely on app toast notifications, but you might miss these if you glance away for a moment.)
I guess this is why Google Chat is now pushing thread-less rooms, and is rolling out on-the-fly threads like Slack.
Why threading if there’s not much noise? And if the noise is too much, maybe a public chat is not the best idea.
on Slack, navigating a channel between “main” messages and thread messages is a nightmare, and since “main” messages are not just a subject, you spend a lot of time just reading the message.
We need something to improve email experience (where you need forwards, setting up mailing lists is slow, can’t delete/edit, etc) without resorting to a chat app for everything. A better forum-like/nntp, not a better irc.
Slack threads are a tangent to a point, an aside to something said in the main timeline. Zulip threads are like forum threads, a discussion of some particular topic.
The only real problem(s) I have with threads in Slack are:
1. some people suck at remembering to reply in thread. This isn't too serious though, once there's more than 2 messages in the thread most people catch on
2. Slack kind of sucks at notifying you about threads. You mostly have to know to look in the "Threads" thing on the side and not rely on notifications.
Neither of those are that serious or even that intrinsic to threads in chat apps in general.
We don’t have a good way to switch from chats to more forum-like conversations, and email is perceived as too complex (and has other issues in current implementations)
Slack itself has a large amount of issues beyond this. Notifications (ringing my phone hours after I answered a message or not notifying me at all). Not dropping you into threads for notifications and many other things.
Not everyone has strict communication protocols or enjoys communicating succinctly, it's easier just to have one rule - start your convos as a thread.
Sometimes one type of convo transforms into another. And the tool should reframe it so: either by providing a schism for a new thread, changing the topic of the thread, or so.
This is something that tools with N-level threads, where each message creates a new thread (technical email discussions with top posting) do very well. I wish that each message would create a new thread. And that the UX allowed to me pivot from short and informal to long and thought out messages easily.
From an informal conversation of the daily, to starting a thread from a message, where we discuss a technical implementation in a long comment. And then back to someone opening an informal thread starting from a phrase of that long comment (ala document reviews).
* I hate threads in direct messages. Please, Slack, just give people a nice way to quote messages instead - which in my experience is mostly what people want. Right now it's a mix of copying a message and adding ">", sending a message as a thread with the "also post in the channel" flag or sharing the message and adding your reply there. I've had persons randomly pick one of my messages and then start a thread on top of that in direct messages, loosing context, but I'm not going to blame slack for that (but still, give me a way to disable threads there!)
* They work great in big channels (hundreds or thousands of people - think channels like #rust-interest or similar), but then inevitably someone will reply outside of the thread, triggering other people to comment "reply in the thread" (modern "don't reply to this email!" in a reply all) or react with that damned thread emoji. A channel should have some way to "enforce" conversation by thread - offer tooling to move messages in threads and split threads, and make it slightly harder to accidentally post outside of a thread (maybe a different button, a confirmation message, or enforcing some style in the message. I'm sure nothing will 100% work after seeing people use @here and @channel and completely ignoring all the warnings, but still).
* They are... meh in medium channels (team sized ones, thing 5 to 20 people), mostly because it's a pick and mix of people that want to use them and people that ignore them. This would at least improve if we had tooling to merge and slice threads, so that someone could at least try to enforce a style. But also from my experience it doesn't really matter too much, because not a lot of conversations will be happening there at the same time.
* Thread discoverability sucks, you get notifications but then they're tucked in a single "thread" pane. That should be collapsable and show your recent threads, with individual notifications.
* Using threads sucks too, you can either open one and lose context on everything else, or open one in a small sidebar, where posting more than 3 lines of code will fill it up and it's completely unreadable anyway. Having tabs or opening the thread in-line would be so much better.
/rant
The traditional chat client expects the convention of users going back to the main room to create a completely separate thread.
There's other ways. Example, technical email discussions (convention: bottom posting, with good mail client with threading). Or reddit/HN. On email, each message automatically creates a new thread, and you can ignore threads that aren't interesting to you. But sadly, the convention is not enforced centrally through the client as everyone has their own. You need a tight culture for it to work.
I wish I had the convention enforced centrally (everyone using chat clients that behave roughly the same), yet have every message create a thread (so tangent to topics can live on their own, or be ignored). Or at minimum, 1-threads with titles (ala Streams (rooms) and Topics(threads) of Zulip), so people stick to the topic.
Of course at some point this becomes a management problem: if no one's taking the lead and given the authority to enforce this, then no one will. Arguably a lot of companies are big enough that technically someone should be employed as a "forum moderator" for online discussion spaces anyway.
Nope, they all insist on keeping everything inside a single window. So even if you have thread "for better communication with no noise", it still gets lost in all other threads, and they come up with workarounds like a dedicated page for threads etc.
Just give me tabs, damnit.
It's not. If you have several conversations going on at the same time, what's awkward is having to switch between them in the same window.
With most IRC clients or multi protocol chat programs you could have a couple of important channels always visible on a second monitor, key people you DM a lot in a tabbed window somewhere prominent, active chats open next to your work, and everything else in the main app window, minimised.
Now we have a website (wrapped in an app, if we’re lucky) with next to no layout control. It’s nothing short of a disastrous step backwards.
I’m convinced the recent resurgence of the terminal is partly due to the complete abandonment of GUI applications for most forms of professional computing.
We desperately need a new framework for applications:
- offline first
- local first
- data first
- standardised types and APIs
- as composable as the terminal
- standard controls across all apps
- standard window and document model
- web views considered harmful
- UX and “customer journey” designers considered worse
We were nearly there, then “web 2.0” happened
This is true of Element, but you can have a Matrix client with any form you like. There already exist several. So it's not the most compelling criticism here IMO, because those who are using Element have chosen it over other options.
I still feel that my criticism applies to where the money and development effort seem to be focused, even for Matrix, but I am a big fan of Matrix overall and agree that it does at least have a variety of better clients.
It’d be great to see every Slack replaced with a Matrix server for sure.
Is the conversation list on the left side of the window not analogous to tabs? A conversation can be pinned there which would be providing the same experience as keeping a conversation open in a tab.
For what it's worth, Thunderbird is getting Matrix support and with its age come some of the old-fashioned design choices that might just end up giving you your tabs.
If all else fails, I'm afraid you're going to need to get enough people together to make your own chat UI. Maybe fork some open source messenger and show the world the advantages you're describing, because I don't think many people get the benefits.
That said, Element is very much not an innovative chat client. The federation protocol is what's innovative, the clients range from what look like modified IRC chats to Discord clones. The only areas where Matrix clients are innovative is where they're not being used to chat, as Matrix isn't exclusively a chat protocol.
Nobody seems to be talking about anything on Element. There are plenty of Element rooms (or whatever they're called), but no matter how many of them I check out, they're all dead silent. There can be hundreds or thousands of joined users and I hear crickets. As a platform for socialization, I've found it pretty much useless. Am I doin' it wrong?
I have an open to the public (adult public) matrix server that will never make it on that list - and federation is turned off so it wouldn't show up in the rooms lists or whatever of any of those also.
A general list that isn't auto-generated through federation might work, but you'd have to put in a lot of manual work to make sure the list is up to date.
- possibility for the mods to move messages to a thread, as simply as drag and drop. No more « use a thread please »
- possibility for a thread to become a sub-channel, either manually, or automatically if a thread is active for multiple days, or if it’s still active but users need to scroll significantly to see it
- archiving of sub channels manually, or automatically after a time of inactivity
If there are no threads everyone just has to patiently wait in line, when there is one conversation going on.
I need to be able to make a room without threads (DMs, small group chats, etc). And clients should be able to see which features are enabled in each room and support them appropriately.
That is what a universal protocol would allow for.