Skip to content
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

Slow joins lead to poor UX #1383

Open
Half-Shot opened this issue Nov 2, 2020 · 10 comments
Open

Slow joins lead to poor UX #1383

Half-Shot opened this issue Nov 2, 2020 · 10 comments
Labels
A-Performance O-Occasional Affects or can be seen by some users regularly or most users rarely S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Enhancement X-Needs-Design Z-Community-Testing

Comments

@Half-Shot
Copy link
Member

Half-Shot commented Nov 2, 2020

This issue hopes to sum up a general bad feeling about joining rooms for the first time on a smaller homeserver, which is particularly relevant to people who have their own server (either through a paid or self hosted offering). This issue is categorically not about room joins being slow, but rather that slow room joins are handed in a unfriendly way.

Matrix has evolved to the point now that there are several large communities running their own homeservers, each with their own set of users who will be joining rooms from the first time from that server. For example, it's expected that a user from kde.org may want to join #matrix:matrix.org, or that a user from gnome.org may want to join #linuxgaming:half-shot.uk. These rooms may be rather large, or the homeservers may be rather busy which causes room joins to take a long time to complete.

As a result, it's not uncommon to see a "Joining room..." dialog box that will sit there for minutes at a time while a join takes place. There are several problems with this dialog though.

  1. It doesn't communicate that joining a room is an asynchronous operation in Matrix. There is no option to dismiss the join to take place in the background, and certainly a number of users fear clicking away from the join window to another room will prevent them from joining. The ideal solution here would be an effective way to tell the user that a join is asynchronous. Slack does this by adding the room immediately to the sidebar of the user's client, and then showing a limited preview in the timeline until the join has completed.

  2. The join doesn't appear to progress. While work is going on in the background, it's not clear to the user that there has been any change. This is harder to solve as Matrix offers no present solution to determine how far a join has progressed, but nonetheless it's not clear to the user how far their request has gotten.

  3. Another problem which is more down to the backend but is unfortunately presents a problem in Element is that should a join take a very long time to complete, it may time out the HTTP request before the join has finished, presenting an error to the user rather than telling them the truth: the join is still going but may take longer. Again, there isn't much we can do for this in Matrix but is another pain point.

I believe 1 is the most solvable, insofar that we could create the illusion of progress by showing a ghost representation of a room with a title and avatar, while the join is still going on. It's also something that I expect a lot of folks will have opinions on :). This is element-hq/element-web#15451

Related issues:

@ara4n
Copy link
Member

ara4n commented Nov 2, 2020

Other related issues:

@dbkr dbkr added T-Defect P1 S-Minor Impairs non-critical functionality or suitable workarounds exist labels Nov 2, 2020
@emorrp1
Copy link

emorrp1 commented Nov 8, 2020

Oh yes please, especially useful for low-end homeservers. Wouldn't peeking MSC2753 also mitigate this by letting you inspect a room before deciding whether to join it, or does that also depend on lazy loading?

@Half-Shot
Copy link
Member Author

Peeking would mitigate the UX nastiness a bit, insofar that you could see a preview of the room you are joining. I don't think that interacts with lazy-loading -- the federated server would send you a snapshot.

@kittykat kittykat added O-Occasional Affects or can be seen by some users regularly or most users rarely S-Major Severely degrades major functionality or product features, with no satisfactory workaround Z-Community-Testing and removed S-Minor Impairs non-critical functionality or suitable workarounds exist labels Sep 30, 2021
@kittykat
Copy link
Contributor

I'm bumping severity on this some rooms take so long to load that users give up. This issue came up during the last community testing session.

@novocaine novocaine added X-Needs-Design O-Frequent Affects or can be seen by most users regularly or impacts most users' first experience and removed O-Occasional Affects or can be seen by some users regularly or most users rarely labels Oct 4, 2021
@novocaine
Copy link

I think the right way to handle this (until join performance improves) is to make room join display asynchronously rather than blocking.

@kittykat kittykat removed the P1 label Oct 12, 2021
@novocaine novocaine added O-Occasional Affects or can be seen by some users regularly or most users rarely and removed O-Frequent Affects or can be seen by most users regularly or impacts most users' first experience labels Oct 14, 2021
@novocaine
Copy link

Downgrading to O-Occasional as this is specific to small home servers

@waclaw66
Copy link

I took me nearly 3 minutes to join #synapse:matrix.org. Join failed many times before I realized that it's because of Apache reverse proxy timeout, it could help other homeserver owners. Nevertheless the join experience is terrible at this time.

@davidak
Copy link

davidak commented Jan 31, 2022

I also have the issue that i can't join one room: https://matrix.to/#/#wearefairphone:matrix.org

The strange thing is that it sais i already joined and i'm also in the rooms users list.

Screenshot from 2022-01-31 17-25-43

I have sent a debug log and linked this issue.

Update: When i opened the webapp again now i am joined. So it only took 18 hours to join.

@ewtoombs
Copy link

It took me a whole day for my self-hosted user to join libera.chat##politics through the matrix bridge. Which is fine, but yeah that room joining UI was super unhelpful. I had to tail my synapse logs to figure out what the hell was going on.

@paboum
Copy link

paboum commented Jan 1, 2023

I noticed a significant difference in performance on Cinny. It should be easy enough to benchmark one room/homeserver/account on both clients compare the profiling data. I'm not a frontend dev so please someone let's provide the data, then the dev team can see which API calls take longer, etc.

@t3chguy t3chguy transferred this issue from element-hq/element-web Apr 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Performance O-Occasional Affects or can be seen by some users regularly or most users rarely S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Enhancement X-Needs-Design Z-Community-Testing
Projects
None yet
Development

No branches or pull requests