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

MSC3883: Fundamental state changes #3883

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

timokoesters
Copy link

@timokoesters timokoesters commented Sep 6, 2022

Rendered

This is a draft. I plan to explain everything in more detail later, but if you have comments already, please share them

@timokoesters timokoesters marked this pull request as draft September 6, 2022 10:55
@timokoesters timokoesters changed the title Draft: MSC3883: Fundamental state changes MSC3883: Fundamental state changes Sep 6, 2022
@@ -0,0 +1,27 @@
# MSC3883: Fundamental state changes (Draft)
Copy link
Contributor

@FSG-Cat FSG-Cat Sep 6, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok so Initial Review from me.

Resolved Meta issues: Rendered is missing from the PR descript.

Onto actual review.

So if i read this right this is working on the concept of making the servers be the members of the room and then having them track their own users? So in the case of Synapse admins the state complexity should land somewhere at the 2300 mark instead of the 20143 it is at now according to Synapse Admin on feline.support.

Like i assume we will still have to track server memberships in state but still that is way less events. For the Synapse admins room we are talking 2000 users from matrix.org that wont contribute to the state. Tho Synapse Admins is a special case i would say due to that its a worst case for this since the room is well very decentralised and the fact that even in a room like that it will help shows why this is a good idea.

I say that if this can be executed correctly i say that this plus Fed peek for Profiles as Rooms is a realistic step forward for matrix. It would also work as an option to keep membership in the room a secret for homeservers that dont have access to history where a particular member interacted. If you only need to track server membships the users can come and go as they please without leaving a trace that is permanently vissible.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review!

still have to track server memberships in state

I hope to get rid of that too because:

  • In a p2p future we would have many state events again
  • A spammer could set up thousands of servers and spam room state that way.
  • State can not be removed

I think it's possible to send the list of participating servers in make/send_join and then keep it up to date using edus.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this seems like it might be interesting for matrix-org/matrix-spec#840, since if servers can track their own users in a room then they can unilaterally join or send messages with any user for a room they are already part of.

@turt2live turt2live added proposal A matrix spec change proposal s2s Server-to-Server API (federation) needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. kind:maintenance MSC which clarifies/updates existing spec labels Sep 6, 2022
Each server is responsible for tracking kicks, bans etc. of its own users.
If a server abuses this, the server should be banned as a whole.

- Displayname/Avatar updates should be EDUs that trigger a /profile query. While servers still fetch the picture, at least it is not in the timeline.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think factoring out profiles from the room state to a more central "object" is a generally a good idea. The room only retains a link to the user's chosen profile, in case the user has multiple (e.g. space-local nick/avatar). I think that proposal or issue exists somewhere. @ShadowJonathan we talked about this, do you have something handy?

Copy link
Contributor

@ShadowJonathan ShadowJonathan Sep 9, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, but the general concept is that the membership state event refers to another room, which can then be peeked by servers/clients to get up-to-date information on profiles.

profiles can be logically separated this way, a membership state event updated to a new room to follow a new profile room

the problem right now is that peeking over federation does not exist (even though a proposal exists for it, which hasn't had attention for a long while), which prevents this being viable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind:maintenance MSC which clarifies/updates existing spec needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal s2s Server-to-Server API (federation)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants