element-hq / element-web

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

resizing sublists in the roomlist is completely unusable on medium/large accounts #18512

Open ara4n opened 3 years ago

ara4n commented 3 years ago

Roomlist performance on Nightly is currently disasterous on larger accounts due to us having shifted Nightly back to using React dev-mode. For instance, it takes 4-5s to filter the roomlist on my account. Therefore, to try to get performance better i went and shrunk all the roomlists down to just show ~10 entries However, the app seems to have forgotten I did this - after upgrading to today's nightly, the Room sublist re-expanded to 400 users. The only way to shrink it back to 10 items is then to expand it to show all 2000 (which takes about 20s of CPU), and then click collapse (which takes another 20s or so). The fact you can't resize the sublists by overscrolling means you can't resize them by dragging the slider; you have to do it page by page (having first shrunk the window to let your mouse overscroll into the desktop), plus the performance for doing so is disasterous.

So, various problems here:

In terms of where we take the roomlist UX in future: we are at least five main choices on the table right now:

  1. we could permenantly expand all the sublists and rely on spaces to organise the rooms (i don't think this will work, given spaces are hierarchical, and i don't want to give up my ability to have a global view of the account. the roomlist has to scale to handle hundreds/thousands of rooms).
  2. we could keep it as it is, but fix the resizing UX so that resizing is usable and could even spark joy
  3. we could switch back to letterboxes (having a separate scrollable sublist section per sublist, which might make casual medium-power users feel claustrophobic)
  4. we could do a double-scrollbars - letting you expand letterboxes so the overall list is taller than a page, and then scroll either the full list or the sublist depending on where the mouse is. (Bruno prototyped this, and it was okay but it felt pretty clunky with the double scrollbars)
  5. we could have a hybrid of letterbox & resizeable sublists, letting users pick whether they want to be able to scroll within a given sublist or not. (Perhaps a nice solution to the double-scrollbar problems might be to let users click to select the thing they want to scroll? If a sublist has focus and you scroll, it scrolls the sublist. If the overall leftpanel has focus and you scroll, it scrolls the whole panel?

My hunch is that we should try option 2 first: fix the resizing UI of today's implementation, and see whether that is sufficient to make things usable again.

ShadowJonathan commented 3 years ago

May i present a 6th option;

Have tabs at the bottom or top of the room list, with which you can switch between different known categories, the room list then becomes a full list for that category, and nothing else.


The other options to me feel like over-engineering a solution to the current problem, which is (imo) that sub lists start already getting unwieldy for a medium-large poweruser, and I think this is mostly due to the weird relationship between sub lists and the room list, where scrolling down the room list doesn't scroll down a sub list, but instead that a sub list is a static truncated view into another list of rooms. All of that on one scroll list, with a finicky resize mechanism, where there's almost never a "right size" for the sublist (I often find my people list to be either too small or too large, depending on how many people I'm talking to at that moment)

To that, further expanding complexity and going down the rabbit hole of editing the current view (please don't nest scrollbar, it'll be incredibly frustrating to use) would be counterproductive, imo.