Hacker News new | past | comments | ask | show | jobs | submit login
Introducing Threads in Beta (element.io)
186 points by unicornporn on April 23, 2022 | hide | past | favorite | 76 comments



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.


The hope is to add it later. The first cut is plain Slack-style threads, but we have MSCs for zulip/twist style threads like https://github.com/matrix-org/matrix-spec-proposals/pull/283... which will get built out as soon as we can.

Fun fact: the design for Element’s current threading is from a former Twist designer; make of that what you will :)


Does Element have discord-style replies? This is the biggest feature missing in slack for me. Being able to quickly reply to a particular message that might be 2-3 messages behind goes a really long way in being able to maintain multiple flows of a conversation


Yes, it does, and has done for about 3-4 years.


I'm not sure an entirely separate mechanism is needed to achieve Zulip-style threading, though? Seems like the current thread design could easily be adapted to support named threads.

Does Zulip support nested threads?


This is pretty much the classic forum system, isn't it? A bunch of sections (sometimes nested), inside which you can post threads, and reply linearly to those threads.


Nesting was around pretty early on, but yeah.

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.


Which slack does already.


This is one of slack's weak-points imo. Discord allows you to reply to a particular message when making a post. In Slack you make a "thread" but then click "also post in channel". This can cause a lot of confusion if all you're trying to do is use it as a reply because most people will start replying to the thread, not realizing you were trying to keep the conversation as part of the regular channel flow


Slack buries threads at the surface level. This is helpful in some situations but can lead to a lot of confusion


Does Twist support a "braided" view of threads, i.e. where you can see all messages in all threads in a channel ordered chronologically, with some clear visual indicator of which thread each message is from? (Sort of as if people are talking directly in the channel, but where every message has a threaded "provenance"; and where you can collapse/mute threads you don't care about, causing those messages to no longer show up in the braided view for you.)

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.)


Why is Twist “worse in probably every dimension”? (Asking honestly, I’d like to know where you find it inferior to slack, which I have used in the past, while I haven’t looked at Twist in depth)


Google Chat (part of Google Workspace) has this. At work we use Slack though :/ (would like to try Chat instead).


My company uses Google Chat, which indeed has rooms with mandatory threads. You wouldn’t believe the number of people who just post their new topics in whatever last existing thread is visible. We’ve been using it for years now and asking people to create their own thread still happens several times a day. Most people just don’t get it.

I guess this is why Google Chat is now pushing thread-less rooms, and is rolling out on-the-fly threads like Slack.


you can enforce this in slack with a toggle


That's not available on all plans.


ok, here’s a free app that replicates it https://slack.com/apps/A022BL4HJLD-onlythreads


Care to explain how or point to some documentation please?


What's the option called for that toggle?


I think threading in chat apps is a terrible idea. It’s a way to merge email and chat, but chat apps like Slack aren’t really suited for such replacement imho.

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.


I don't really see the issue with it. In Slack, we have a channel for our team. In that channel we have conversations, often more than one at a time, spread out over minutes to days. Why shouldn't each conversation have its own separate thread?

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.


Also, Slack's thread UI is terrible. If you click on a thread inside the main chat, you get this side bar, but only one thread at a time, and no way to get the same from anywhere else (e.g. from the threads notification/overview page).


I totally agree here. At the beginning I disliked Slack threads. But apart from the notification issue, I think the advantages of having a more focussed discussion where everything can be found in one place outweighs the disadvantages.


Yup, I'm enough of a fan that I wish there was a UI option to steer people away from making new top level posts, like a kind of “tick this box to confirm your post is a new subject and not a reply to an existing subject.” And maybe better tools for channel moderators to move accidental top level posts into being replies instead.


Finding is the problem. Searching for stuff in slack is maddening.


Why would you use a chat app for conversations spreading over days?


There are times when a conversation that’s important to some participants spontaneously starts in chat and it’s too disruptive to ask less interested (but important) participants to “move it to email.” Suggesting that might cause the conversation to fizzle out which the more interested parties can’t afford.


Threads are a stopgap measure. But the problem is using a chat app for extended-scope conversations.

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)


why would you knowingly fragment information when you have the option not to?


Why not?


Do you usually randomly chat about a topic with multiple people over the course of days, without writing down points and/or making a gist?


Over days, yes. Without writing down notes? No. I write notes and you can throw them in slack if they're sharable. I don't really see the issue.


Can you remember what messages you’ve read and which you haven’t, from which conversations, over the course of days or weeks?


Threading makes channels far less noisy for me. Especially the larger the channel is. When is just a few people I don't need threads. But >3 they are great and help organize. The greatest thing about them is also that you don't have to use them!

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.


Don't conflate a bad implementation with a bad idea. Slack's threads suck, Zulip's threads are amazing and I wouldn't have it any other way.


The underlying issue to me is the different velocity of different conversations between the same people in a room. Conversation 1 can be fast, with short messages and informal, Conversation 2 can be slow, with long technical messages or attached files. And all in between.

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).


Wow, these chat apps are just badly reinventing ticket queues/forums but with a focus on real time communication.


That’s my point.


I find slack terrible for long technical conversations. The ui is too slow, the windows are too small, they’re hard to search.


Threads are an absolute must to keep the noise down and conversation relevant - at least in working environments when using apps like Slack.

Not everyone has strict communication protocols or enjoys communicating succinctly, it's easier just to have one rule - start your convos as a thread.


I would say it depends on the implementation. Slack is pretty horrible, but Zulip is the best thing ever.


They're not even the same thing. The only real similarity is that they share a name.

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.


Are there still plans for Zulip-style threads? https://github.com/matrix-org/matrix-spec-proposals/pull/232...


Yes. The plan is for Matrix to support both arbitrarily deep threading (like https://matrix.org/blog/2020/12/18/introducing-cerulean does) - as well as Slack/Discord style threading. They have very different semantics; we added Slack style threading to Element first for familiarity and bridging with Slack, but I can’t wait for fully branchy threads to be in production too for bridging to Zulip (or HN ;P)


+1 for a HN bridge


Threads is the worst feature of Slack, it required 5x mental space to keep track of all hidden conversations, as mentioned before Tabs would've been a much better solution


Threads are probably a good idea, but as many people have pointed out I still have to find an app that have a good implementation of them. Most of my experience is with Slack so maybe Twist/Zulip are better at this.

* 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


Zulip has been my personal favorite for the way threads are handled. But that's because it centers them and ends up avoiding everything people hate about the thread/channel hybrid systems


awesome explanation of a half-broken feature and a job-to-be-done. We're working hard to fix that.


1-level threads is not enough. You fork a thread for a new topic, and users can keep derailing the topic with tangents inside of that thread.

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.


Maybe rapid ejection for new threads? i.e. single level threading, with a UI that makes it easy to range select a bunch of messages and eject them into their own thread 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.


None of these "innovative chats" that already use a browser to display them can even come up with the idea of tabs.

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.


I don't think your desire for tabbed windows is shared among the general public, to be honest; we've seen a trend away from early 2000s separate windows to full screen "experiences" and the general public doesn't seem to mind. This could be because all native applications have been simplified down to laggy web UIs designed for toddlers, but even in the typical nerd spaces the old stack of hierarchies has disappeared.

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.


Absolutely. I miss having multiple windows, each with one or more tabs, all respectful of my screen real estate!

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


> 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.

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.


This is a fair point.

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.


Yeah as kadoban says, Matrix has no such restriction only Element does. You can do exactly what you're talking about above with other clients.


We use Rocket Chat and it's even worse than that. The entire channel is marked as "there're new messages" but you have no idea which one of the threads has new messages so you have to look through all of them. Good luck if it's some old thread from weeks ago. Or maybe there's some option in the UI to quickly find it but I'm not aware of such.


Nothing does stop you from having multiple browser tabs open for Element. It is kind of wasteful and awkward though. I agree that this would be useful, though getting to ux nice might be challenging.


> It is kind of wasteful and awkward though.

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.


I'm not sure I completely follow, aren't tabs still within the same window? How would tabs solve the 'keeping everything inside a single window' problem?

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.


You can open threads and windows in separate tabs, and switch between them without losing where they are and having to search for them


What are people using Element for? I know that Element is a chat app... I actually have it installed. But it's not for work or anything. I thought it could be a cool replacement for Discord.

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?


Not sure what you are talking about. Those Open-Source projects that use Matrix as a official chat are as active as any other open-source project rooms.


Most of the discussions on Rust graphics stack around wgpu (WebGPU implementation) happen on the Matrix protocol. There you can find our official rooms for communication both intra within developers and extra with community. It’s been working very well for us, and I’m quite excited to finally have threads.


I run my own homeserver and bridges for IRC, WhatsApp, Telegram, Google Chat and Discord, so that I can access all my chats in a single place instead of several separate apps/browser tabs.


Most people I know who host a Matrix homeserver run it in closed federations or completely unfederated, out of concerns for people joining larger rooms and flooding the poor budget server.


How do you all find element channels. I'm interested in trying matrix but I also haven't really found channels I'm that interested in.


Each home server has a room directory. You can rooms in your client (top left in Element, I believe) or you can try browsing this list: https://view.matrix.org/


I really want to make a matrix servers not listed there list.. but I suppose it would have to be broken up into different pages and hosted in different parts of the world for different issues.

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.


The list contains several NSFW rooms so although federation would probably be the only problem.

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.


So the problem here is that this is still difficult for discovery. And when I look at some of the rooms all I'm seeing is that users are added and no actual activity.


What I’d love for threads, in any chat client:

- 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


This is really cool. I love threads, especially in larger channels!

If there are no threads everyone just has to patiently wait in line, when there is one conversation going on.


There needs to be a way for rooms to communicate to clients which features they support.

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.


How's managed (not self-hosted) Element/Matrix for E2E these days? I want to give it a shot but i regularly use Signal for secure communication (financial stuff/etc), so the E2E impl has to be on-par with Signal. Thoughts?




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: