Do not show membership/profile events in public rooms#6360
Conversation
4be06bf to
5be1284
Compare
|
I think this one also needs product supervision @mxandreas . Also, if we were to include this, it should probably have an associated toggle in settings (maybe in advanced settings?). I was also going to say it would make sense for this to be an SDK feature, but since it's not a change that follows the spec, it's probably if we kept if in the clients. |
|
I suggest disabling this filtering if the "View source" option in the "Advanced settings" is enabled, but I'll wait for the product decision. Or, can be done by implementing #3760. |
|
What's the status of the product decision? Do I need to open a spec proposal instead of doing this change in clients? This change is very important for any public space, as messages in low-traffic rooms drown quickly from state events in the timeline. |
|
This is a bit tricky because there a number of ways how to reduce this "noise". It could be based on the room access, but it could also be a personal preference - depending on what type of event it is. We need a comprehensive "strategy" first which will take a bit more time. |
|
Some thoughts:
IMO, we should go with "Move it to an option". What do you think? How to proceed with this PR? |
|
I am looking into this, but I need feedback from also security, to make conclusions. Also, when we put something out there, it needs to "scale" for all other type of events, like what is our approach for if somebody is pinning a message or changing room topic. A couple of comments (for join events):
This very likely a no go. You do want to know who has joined your private conversation.
This is not great for two reasons. Adding an option is very often the "path of least resistance" and if we lightly take that route each time we will have millions of options eventually the users are downing into. Secondly, for private rooms, you do want to know proactively/immediately if somebody joined, not go and reactively turn the toggle of to see if anybody has joined.
This likely still the best option. If you do have a room which is invite-only and there are a lot of invitations, it must be an exception. It is hard to be believe you keep it invite-only if a lot of people are joining every day. However, the issue here is that currently room state like E2EE or join rule is not cryptographically protected (can be spoofed by a malicious HS), hence if we hide new members based on that info, it may open up new attack vectors. This is why we need check with security. |
Room topic changes are significant, infrequent and impersonal enough (public/private) to warrant keeping it in the timeline. |
I agree, but "lengthy" needs to be defined. |
Setting a 'number of lines' limit can be arbitrary so here's what I'd consider and recommend: Personally, I can tolerate up to 1/3 of my screen being system messages in an active Room, which is something like 5-8 lines of text. Messages exceeding this may be considered "Lengthy". This limit also makes closing the dropdown more comfortable as the chevron stays well in view when expanded. |
Topics are mostly one-lined, and checking the number of UI line wraps is technically challenging. It's better to define a character count instead. |
You're right, using a character count would be more accurate and simpler. 5 lines of random text on my phone: 173 characters. ~1/3 of my screen. |
5be1284 to
20d5a41
Compare
|
I've removed topic handling. |
|
FWIW, Telegram handles "membership events" by having a separate admin log screen with these kind of events. |
|
@mxandreas it've been 2 months and it's still not clear what's the status on this, is there anything from my side that can/should be done for this to proceed, or I just need to wait? |
I've tried to move this forward internally and we've got some alignment but as people have several ongoing topics, not everything can be moved forward at great velocity. I hope you understand. cc @amshakal |
|
After exploring the topic more broadly internally, I can confirm that it is fine to do the following:
Any comments or questions? |
|
No, everything is clear. That should be the current behavior, but I'll double-check test this PR about ban/kick later as IIRC that's the same event in Matrix. |
20d5a41 to
c4245fb
Compare
|
Updated according to the product decision and tested (with #6359 applied on top). Ready for review/merge |
jmartinesp
left a comment
There was a problem hiding this comment.
I would have added some kind of option to enable/disable this behaviour, but let's see how it works with real usage and decide if there's any need to change it later.
That said, I have a couple of nits 🙏 .
c4245fb to
cc81c70
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #6360 +/- ##
===========================================
- Coverage 81.25% 81.25% -0.01%
===========================================
Files 2652 2652
Lines 74373 74402 +29
Branches 9641 9649 +8
===========================================
+ Hits 60432 60455 +23
- Misses 10381 10385 +4
- Partials 3560 3562 +2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Based on bxdxnn's code, tweaked.
|
One thing that isn't clear: will this behavior be ported to iOS by the time of the next release, or it's required to create an iOS PR myself? |
I think for this one having it on iOS and Web is not a must have, but it is highly desired as it is going to cause confusion later. Thus, it would be appreciated to the corresponding PRs on Web and iOS. |
|
This will be replaced by matrix-org/matrix-rust-sdk#6644, with some changes in the Element X app. |
TimelineEventFilter
matrix-org/matrix-rust-sdk#6644
Content
Do not display membership and profile is in public rooms.
Motivation and context
Displaying join or profile events in public rooms leads to a significant amount of message flooding, which greatly negatively affects the readability of the room. This issue is especially noticeable in read-only rooms within Spaces, where, over time, you may need to scroll extensively to see actual messages, as they are often buried under numerous join and profile events.
Fixes #5528
Screenshots / GIFs
Tests
You might encounter empty days if a day only includes filtered events, fix: #6359
Tested devices
Checklist