element-hq / element-web

A glossy Matrix collaboration client for the web.
https://element.io
GNU Affero General Public License v3.0
11.28k stars 2.02k forks source link

Threaded Messaging #2349

Closed ajvsol closed 2 years ago

ajvsol commented 8 years ago

Extending the Quote functionality to allow for threaded messaging.

This could be a simple 'Quote 2.0'-style like WhatsApp where the quoted text is hyperlinked and when clicked makes you scroll up to their message: WhatsApp Quote-Reply

Or the more sophisticated Threaded Messages panel like Mattermost: Mattermost Threaded Messaging

Perhaps allowing for both could be done by having the Threaded Messages panel open when you left-click on the 'reply' part of the Quote 2.0 message: WhatsApp Quote-Reply

Or by having 'Message Thread' popup as an option in the context menu to allow opening the Threaded Messages panel: WhatsApp Quote-Reply

ara4n commented 8 years ago

The plan is to do REALLY good threading in Riot. There's a lot of work on this currently on the Matrix spec, backend, and we're starting work on the frontend next week. matrix-org/matrix-spec#411 is the design bug for this (although there's nothing there yet). I'll keep this one around too. Thanks for the overview of what other folks are up to here!

ajvsol commented 7 years ago

Looks like Slack have implemented this now as well.

Threaded messaging

Cool UI:

Threaded messaging

And an overview page:

Threaded messaging

clopez commented 7 years ago

flowdock also implements threaded conversations in a nice and very usable way

https://www.flowdock.com/help/chat

ghost commented 7 years ago

Twist from creators of Todoist uses the very interesting concept of threaded channels:

In these channels every message must be in a thread, and it makes conversations much more organised than a continuous stream of messages.

It's the modern version of forum, except you get the benefits of organisation and don't miss out on integrations, mentions, presence, bots etc.

richvdh commented 7 years ago

this is not p1.

markwooff commented 7 years ago

I believe this should be a p1 issue, almost all other chat platforms have some sort of implementation of threaded messages. Would be happy to assist in the development of this!

colans commented 7 years ago

I see this as more of a nice-to-have. Slack didn't even have it for a while. I'd say vector-im/element-meta#347 is more important as there's currently no way to reset the message pointer, which most other systems have had for a while.

britthurley commented 7 years ago

I definitely see this as a p1, not a nice to have. Constant noise is a major complaint for utilizing chat platforms in business settings, and threading cuts down on that noise by grouping conversations and allowing a user to essentially ignore it. This was a major improvement in Slack, and most people who have used threaded messaging do not want to go backwards.

tysonclugg commented 7 years ago

I'm evaluating Riot.im for use at my work and with a couple of NPOs that I'm involved with, but sadly the answer is a firm NO until 1st class threading (like Flowdock, unlike Slack) is implemented. 1st class threading means each message can be it's own thread, and each reply has all chat features available. Slack screwed this up, you can't add attachments to thread replies etc.

sunjam commented 6 years ago

Hi, I just want to say that I am also evaulating Riot for an organization... this feature is critical in making the move to this cool software. I'll certainly be watching for updates. Cheers

chaoticbear commented 6 years ago

Also, adding my experience, that when trying to convince groups to use Riot instead of Slack, threading was sited as the reason to stay with slack. And I can't disagree, noisy topics can be a real pain. But I'd really like to move to an open source option with end to end encryption like Riot

andrewperry commented 6 years ago

metoo

vlcek commented 6 years ago

For our organization is also a very important feature. Without it is almost unusable for us.

ptman commented 6 years ago

I've heard a lot of good about threading in Zulip, but it might be hard to implement in Matrix due to the focus on rooms instead of topics

MurzNN commented 6 years ago

Yes, Zulip is interesting solution for threads in chat, but the problem that topic is obligatory field - this is not hard to implement, but this will got problems for people with free chatting (offtopic chats). Maybe good solution will be do this feature at per-room basis, to require all messages with topic only on specific rooms. But as for me - Slack implementation of threads is more useful for base functional, because we can convert already posted message to thread, missing feature is only group/move several already posted messages to the thread.

smacz42 commented 6 years ago

I'm surprised that no one has pointed to Microsoft Team's implementation of threaded conversations. It's nothing to write home about, but it's good to have to keep different conversations separate.

Just wanted to point out another competitor that has that implemented.

dessalines commented 6 years ago

So far mattermost has this down .

Has there been any movement on this?

ptman commented 6 years ago

someone is working on replies, is it @t3chguy ?

t3chguy commented 6 years ago

Yup, https://github.com/matrix-org/matrix-react-sdk/issues/1741

andrewperry commented 6 years ago

Exciting, almost there! Thanks!

Andrew

On 27 Apr 2018, at 7:09 pm, Michael Telatynski notifications@github.com wrote:

Yup, matrix-org/matrix-react-sdk#1741

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

ghost commented 6 years ago

In my opionion the last missing Riot feature preventing slack users to migrate to Matrix/Riot.

Looking forward, thx to all devs working on this!

ghost commented 6 years ago

Could also use this feature

yann-soubeyrand commented 6 years ago

In my opinion, Twist has the best UX in this domain.

eras commented 6 years ago

Just one data point: I use weechat with wee-slack to Slack and wee-slack's support works like this: you enter /thread abc where abc is a generated thread id that is visible next to existing thread beginnings in the screen. The command makes that thread to appear as a "sub channel" in the channel list (ie. right below the parent channel, in a lower level of hierarchy) and works similarly to all the other channels.

You can close (remove from the list) and re-open them again according to your interests.

This "view thread as a sub channel" in my view is great feature that Slack as well could have, as it enables following even old threads and seeing activity in the interesting ones more easily. I believe many threads in Slack die not because the subject matter has been handled and interest diminished, but rather because it's practically impossible to attend multiple threads with it.

Perhaps the thread feature of Riot could have a similar functionality, in addition to how they are currently being designed. It would probably be a button like "attach to channel list" but with a much more succinct label or icon :-).

dessalines commented 6 years ago

Why have two panes? It might be possible to just do reddit / flowchat style:

t3chguy commented 6 years ago

That's not threading fwiw, thats nested replies. The order of the two green ones is completely circumstantial

edit: (they're ordered based on time and not directly related to each other)

t3chguy commented 6 years ago

(and doesn't work very well when reversed like for chat)

t3chguy commented 6 years ago

and as you can even see on that example its unclear what came first between the tiers of replies, you have to read the timestamp. Whereas in threads things happen in a determined order, here its harder to follow

dessalines commented 6 years ago

Not really understanding this one. How is threading different from nesting? You're replying to specific messages. The order of nested replies could be bottom=recent, just like the matrix chat window currently is.

How does a 3 or more deep "threaded" reply look?

t3chguy commented 6 years ago

Threads are not direct replies to their previous, they're like a sub-room based on an initial forking point

ptman commented 6 years ago

In what context? Since when? Threading in email since before I was born is quite like the threading in reddit: http://www.davep.org/mutt/screenshots/index.png

t3chguy commented 6 years ago

right and it doesn't work very well when you flip the table and look from a leaf as you would in a messenger

dessalines commented 6 years ago

So if I'm understanding you right @t3chguy , you're under the impression that "threading" means a max depth of 2, while nesting means unlimited max depth? Email is considered threaded, and it has unlimited max depth.

t3chguy commented 6 years ago

not explicitly no, Email is considered threaded yes but implementing that style of threading in real-time chat such as riot, slack etc is considered by many not good UX

dessalines commented 6 years ago

I mean, I've already coded an example of this working with websockets, here's an example.. Live-updating, threaded messaging. But I'd love for matrix to have this too.

t3chguy commented 6 years ago

implementing threads in matrix by each event including every event that preceded it would be poor, better design would be a forkable swim-lane style approach imo

smacz42 commented 6 years ago

FWIW Email is an asynchronous method of communication, while chat is widely regarded to be a synchronous method.

The requirements and workflow of chat are therefore different from email, which this type of "sidebar" threading lends itself to.

Which is not to say that allowing multiple "forks" would be a bad idea. I would love to see a mockup of that.

t3chguy commented 6 years ago

@dessalines nice example, but typically in a real-time chat application people want to see the latest thing said at the top/bottom of the viewport to see whats being discussed right now, not have to find the trunk of the thread to be able to see what the latest thing was said in it

dessalines commented 6 years ago

In the two-pane, max-depth = 2 model though, the most recent messages also are not at the bottom... In fact, you don't even see them until you click the thread, so it makes them far worse than the reddit / email style threading.

t3chguy commented 6 years ago

The latest messages would be at the bottom of the left pane?

t3chguy commented 6 years ago

I'm not saying reddit style is bad. It has much higher data density and vastly different priorities.

timeandtimeago commented 6 years ago

Any update on when we can expect this functionality to start rolling out?

dessalines commented 6 years ago

I think its been implemented... the replies, and comment chains expanding on click are working now.

ajvsol commented 6 years ago

It's mostly there but there's a few improvements I'd like to see:

1) One-click thread view

This is the current method of opening a thread: Riot reply thread It would be useful to have a one-click button that can open all replies in a thread instead of repeatedly click "in reply to".

2) An overview page of all current threads

e.g. Slack's "All Threads" page Threaded messaging

3) Room setting: threads-only or threads-optional

Twist and Zulip are good examples of chat apps which force all messages to be in threads. For most large chat rooms this would result in a thread for #general and maybe an #offtopic, plus many more transient ones for side conversations that come up.

The threads-only approach keeps topics much more organised, because if conversation heads in a specific direction the participants is prompted to move their conversation e.g. from the #general thread to their own one.

In a threads-optional paradigm e.g. Slack or Mattermost, I find conversation to be far less organised and moving chats into threads happens less frequently because there's not the same reminder that conversation should stick to being on-topic.

As Riot is looking to be flexible tool for everyone to use, having the option to have a threads-only room would suit users such as myself who prefer it.

gerroon commented 6 years ago

Is this implemented as of now?

ghost commented 6 years ago

I also can't find how to use the feature - is there some doc in which version it is available and how to use it @dessalines ?

dessalines commented 6 years ago

@p-thurner click the side dots, then reply

dkasak commented 6 years ago

Apart from @neomodern's excellent suggestions, it would also be great if the threads could be named (which he touched upon but not mentioned explicitly).

gerroon commented 6 years ago

Reply does not exists on Android, btw.

aaronraimist commented 6 years ago

@gerroon it does, it is just hard to find. Tap on the message you want to reply to and you'll see that the placeholder text in the message field changed to "Send a reply"