-
Notifications
You must be signed in to change notification settings - Fork 10.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[NEW] Slack Like Threading #13394
[NEW] Slack Like Threading #13394
Conversation
@khaledalyawad thanks for opening the PR - and thanks for cleaning the history so we can see what you did! Now, I can give you some more profound feedback. I created a screencast (sorry for the slow typing in there), so you can hopefully follow my points. I opened two sessions, Subscriptions and notificationsYou chose a lightweight approach, which means that the thread is not an own entity (such as a room), but merely exists due to the relationship of messages. Compared to making the thread an own room, this is particularly more challenging when it comes to subscribing to it and notifying the user about new messages inside the thread. Once a new message is sent in a thread by I see a major issue here, since Rocket.Chat's model sees the OrderingAlso, it's a bit tricky when it comes to ordering the messages. Once a thread contains a newer messages compared to the last one in the parent channel, the thread is effectively newer. Thus, it should be ordered below the last message. (at least I'd expect that, MS Teams does this nicely) However, the ordering is determined by the ScopingThis one is manageable, but tricky in detail: There are various interactions which address the current room, such as the typing indicator (does a user currently respond to the thread or its parent?) Also, I would like to know how you solved the other tabbar's semantics in the thread (how can a user see the attachments/pins/mentions in the thread - and are they hidden from the parent? LifecycleThere are a couple of nasty things when changing messages: MobileLast not least, there are the non-browser clients. How's the display on the apps? I'd expect it to be just as if there was no thread at all: all messages written inside threads and outside in one continuous stream (unless you adapt the apps, of course ;-) ). This makes display not worse than it currently is without threading, but also not better - and finding a good solution for inline threads with limited space is a challenge, at least to me. Please don't get me wrong: I really think you've done a decent job! Most of the challenges arise from the functionality of lightweight threading itself in combination with Rocket.Chats models. Nevertheless, I believe one can combine the heavyweight approach with displaying the thread in the tabbar. Having a room which holds the thread's messages, you can have subscriptions and use them to notify and navigate. Hope I could make me points clear without having you frustrated! Oliver |
@mrsimpson thanks for your comment. I understand .... I was thinking to bring the slack reply functionality to rocket.chat |
@khaledalyawad I really didn't want to scare you off! I really think (and this is also feedback from some community members), that the slack-like presentation is welcomed by many! |
I strongly support this version of threading over the 'Create a new channel for each thread' implementation. This feels a lot more intuitive, and less likely to clutter stuff up. When using slack with friends, we can use 10+ threads in a matter of hours, which would get really unwieldy if it was 10 new channels. With the new channels I think I'd be really likely to get lost on what thread went where. |
This type of UI can be implemented potentially with a per channel model implementation. |
"This type of UI can be implemented potentially with a per channel model implementation." @geekgonecrazy only if it's possible to identify the "parent" channel of any thread channel. Is that possible now that people can rename thread channels? |
yes.. thread rooms have a property called |
|
@khaledalyawad Can you please rebase the PR? It has multiple conflicts. |
@ggazzo I know you are working on something like this now. Is this being used as base? Rebasing this likely will be a lot of work so if we can save them the extra time and effort and point to our WIP would be good. |
@khaledalyawad @ggazzo Can you, please, rebase? |
Thank you @khaledalyawad for the hard work on this PR and @mrsimpson for the feedback and deep technical considerations about the underlying data model. We have used this code as the bases for our implementation and the feedback to make improvements to address most of the listed issues and concerns. The result is the ongoing PR #13996 bu @ggazzo which will be marked as coauthored with you both. Thank you again for helping us build such a complex and highly demanded feature. |
Closes #1112