Nheko-Reborn / nheko

Desktop client for Matrix using Qt and C++20.
https://nheko-reborn.github.io/
GNU General Public License v3.0
1.82k stars 196 forks source link

Spacetimelines (or simply aggregated timelines) #927

Open lboklin opened 2 years ago

lboklin commented 2 years ago

The Problem

A lot of spaces suffer from having several low-activity rooms. In isolation, they seem kind of dead, which may discourage participation out of stage fright or assuming you won't get good responses anyway.

On top of that, Nheko could use a highly unique client-specific killer feature that sets it apart from all the other clients.

The Solution

A novel feature like aggregated spacetimelines would make a community feel more active by combining activity across an entire space. Events would be visibly tagged with the room of origin, which would make rooms feel more like a way to categorise message topics than isolated places. You could participate directly by sending messages into any one of the rooms through any of the following methods:

You could have various extra client-side QoL features and settings, such as:

I've ideated around the concept of cross-messaging before, but part of the motivation for such a feature could be satisfied by a client-side feature like this. The best part is that it doesn't depend on any new spec features, since the timeline is determined solely by the rooms in a given space.

Alternatives

Aggregated timelines don't have to be intrinsically tied to spaces, though the more you decouple it from features in the matrix spec the more reliant you are on local user configuration which could be lost/reset unless manually synchronised between devices or accounts. Could have both, though: aggregated timelines as an independent client feature which defaults to displaying spacetimelines.

Additional context

Examples of this type of feature can be seen in many MMORPGs where you may have a chat that displays messages from one or more channels, distinguished usually by a tag, icon or text colouring.

The equivalent of creating a tab for specific channels in an MMORPG could be to

  1. create private spaces specifically for the purpose of aggregating the timelines of certain rooms, and/or
  2. choosing a subset of all the rooms in a space to include in the spacetimeline via client-specific settings.

Happens in the latest version

lboklin commented 2 years ago

It doesn't seem like we're getting throoms (thread rooms), given that implementing threads as part of the spec seems favoured by the main developers (revealed at FOSDEM 2022). But in an alternative universe where we have rooms-as-threads and spaces-as-thread-origin-rooms, this feature would feel like a natural complement to it by exposing a timeline of activity across all (sub)threads in a given room.

In this universe, however, it would still complement any eventual implementation of threads by encouraging a less obscuring and isolating way of organising topics (assuming most clients end up tucking away thread discussions in a traditionally controversial manner a la Slack and Discord).

lboklin commented 2 years ago

Regarding UX: I would suggest displaying the spacetimeline when a space is selected in the left side room panel. Mostly it would look like a normal timeline, except that an event's room of origin would be displayed next to its author in the form of a room icon, name or both (and either colour-coded or not). I'm being deliberately ambiguous by saying "next to" because there are many ways to do it.

<avatar> <username> in <icon> <room>
  <message in $room>
[<icon> <room>] <avatar> <username>
  <message in $room>
-- <icon1> <room1> --------------
<avatar1> <username1>
  hi room1ers
<avatar2> <username2>
  πŸ‘‹
-- <icon2> <room2> --------------
<avatar1> <username1>
  hello room2ers
<avatar3> <username3>
  hello there
<icon1> | <avatar1> <username1>
        |   hi room1ers
        | <avatar2> <username2>
        |   πŸ‘‹
--------|------
<icon2> | <avatar1> <username1>
        |   hello room2ers
        | <avatar3> <username3>
        |   hello there

The composer would just have an extra indicator for which room you're sending to.

deepbluev7 commented 2 years ago

Having some kind of sneak peak into rooms from the space overview does sound interesting, indeed. But I'll probably won't have time for that in the near future and it is fairly complex. But it might be a good thing to add to make spaces feel more alive!