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

MSC4201: Profiles as Rooms v2 #4201

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

FSG-Cat
Copy link
Contributor

@FSG-Cat FSG-Cat commented Sep 25, 2024

Rendered

Signed-off-by: Catalan Lover catalanlover@protonmail.com

Disclosures: As it has been requested in #matrix-spec:matrix.org the following disclosures in line with matrix-org/matrix-spec/issues/1700 are made. Im writing this MSC as a foss contributor independently of my work for The Draupnir Project nor the Community Moderation Effort.

@FSG-Cat FSG-Cat changed the title MSCXXXX: Profiles as Rooms v2 MSC4201: Profiles as Rooms v2 Sep 25, 2024
@tulir tulir added proposal A matrix spec change proposal client-server Client-Server API kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. labels Sep 25, 2024
Copy link
Member

Choose a reason for hiding this comment

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

Implementation requirements:

  • Server
  • Client

Comment on lines +20 to +22
Profiles as rooms is a long established dream in the matrix ecosystem that has been declared as the solution
to a whole bunch of our problems. This MSC aims to realise that dream via packaging up a idea that has been circulating
in the spec room. Just abuse /profile and the nature of profiles to bypass the Peeking problems.
Copy link
Member

Choose a reason for hiding this comment

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

This fails to answer "Why?" -- it being a desire isn't enough. Why is this helpful?

Comment on lines +38 to +40
Profile rooms are special rooms with the dedicated purpose of storing profiles. These rooms will be created
with the `type` being `m.profile` in line with [MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772)
established precedent on that specialised rooms like these are what room types are for.
Copy link
Member

Choose a reason for hiding this comment

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

Please link to the spec for merged features.

Comment on lines +115 to +117
A subset of the profile fields can be requested using the `filter` query parameter type being `string`.

The response to a `GET /_matrix/client/v1/profile/{roomID}` is a set of Stripped state events responsive to the query.
Copy link
Member

Choose a reason for hiding this comment

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

I assume this is something like filter is the state keys of events in the profile room? This isn't clear though. The response is the stripped m.profile state events?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yup you filter based on the state keys you care about and the response is stripped m.profile events responsive to the query.

Comment on lines +198 to +202
This MSC sees it self as the better alternative if perfected because it brings Per room and private profiles
and a path to the original vision of Profiles as Rooms that use Federated peeking. This proposal brings
Trust and Safety as a Nr 1 priority but ofc this is a very hard thing to deal with as we are essentially
bringing something akin to a steam profile with this MSC. That's very intentional as Steam profiles are a
inspiration for this MSC UX wise.
Copy link
Member

Choose a reason for hiding this comment

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

I don't really see how this helps T&S concerns TBH. Why is it easier to redact events in a room than to update a profile?

Choose a reason for hiding this comment

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

I, as a user on homeserver A, cannot update the profile of a user on homeserver B.

bringing something akin to a steam profile with this MSC. That's very intentional as Steam profiles are a
inspiration for this MSC UX wise.

## Security considerations
Copy link
Member

Choose a reason for hiding this comment

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

Having all historical data via state events sounds like a big privacy violation that would be surprising to users?

Comment on lines +42 to +43
They are plain old normal matrix rooms except for that they store profile information as their defined
purpose and server implementations or future MSCs are free to provide powerlevel templates that reflect this purpose.
Copy link
Member

Choose a reason for hiding this comment

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

What happens if other events are sent in this room? I'm confused at who is expected to be joined to this room.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Its not clarified properly but the parties expected to be present in ones profile room is traditionally only the user them self and optionally bots that can update their profile if that isnt handled via scoped access tokens.

Copy link

Choose a reason for hiding this comment

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

Its not clarified properly but the parties expected to be present in ones profile room is traditionally only the user them self and optionally bots that can update their profile if that isnt handled via scoped access tokens.

Without reading this comment, it's not clear that the room should be joined only by the user and bots. Maybe that should be explicitly specified in the MSC?

Comment on lines +45 to +46
These rooms contain `m.profile` state events to store profile data as the state key determines
the profile field this data is for.
Copy link
Member

Choose a reason for hiding this comment

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

An example of this event would be useful!


`visibility` of `restricted` restricts who can look up a profile to users who are
in a room that has a `m.profile` value set to this profile.
For this value to be legal it must be sent by the creator of the profile.
Copy link
Member

Choose a reason for hiding this comment

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

I was confused that this is referring to the sender of the m.room.member as opposed to in the m.profile.privacy event.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes this is a bit confusing i can agree.

The intent is essentially that only the profile owner can create valid pointers for non public profiles.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client-server Client-Server API kind:feature MSC for not-core and not-maintenance stuff 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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants