Skip to content

MSC4429: Profile Updates for Legacy Sync (stabilization and unstable feature tracking) #19891

Description

@jaywink

PR #19556 will add support for MSC4429 (matrix-org/matrix-spec-proposals#4429) using the unstable identifiers.

This issue tracks stabilizing the identifiers once MSC4429 lands into stable spec. The unstable prefixes are documented here.

Context for why this feature is in Synapse

This feature is an addition to support User Status as per matrix-org/matrix-spec-proposals#4426

If applicable, why the feature is enabled by default

This feature is not enabled by default.

If applicable, setup instructions for any non-standard components or configuration needed by the feature

There are no special setup steps involved.

Design decisions behind the Synapse implementation

As per matrix-org/matrix-spec-proposals#4429, sync is the method we push data to clients, and as such it makes sense to re-use this transport to also push profile updates. Alternatives would have been making clients pull the data, which would be bad for the servers and the clients.

Any caveats around the current implementation of the feature, such as:

missing aspects
breakage or incompatibility that is expected if/when the feature is stabilised, or when the feature is turned on/off

If the config flag is removed, the feature for MSC4429 should start defaulting to true, otherwise we break clients that expect profile updates in the legacy sync stream.

Criteria for how we know whether we can remove the feature in the future.

This feature should not be removed.

Criteria for how we know whether we can default the feature to always enabled

Once clients start supporting this feature outside of labs, and the MSC has been merged, Synapse should start considering this as something clients would need and always include profile updates in sync, if clients ask for them.

We may want to block doing this behind having profile updates over federation, see matrix-org/matrix-spec-proposals#4259

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions