element-hq / element-hq/synapse

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

Open
#19,891 0 comments 0 reactions 0 assignees View on GitHub
A-Profiles A-Sync Z-Spec-Blocked
Dominant language
Python
Stars
4.6k
Forks
600
Avg merge
5d 22h
Merged PRs (30d)
51

Description

PR https://github.com/element-hq/synapse/pull/19556 will add support for MSC4429 (https://github.com/matrix-org/matrix-spec-proposals/pull/4429) using the unstable identifiers.

This issue tracks stabilizing the identifiers once MSC4429 lands into stable spec. The unstable prefixes are documented [here](https://github.com/matrix-org/matrix-spec-proposals/blob/anoa/legacy_sync_profile_updates/proposals/4429-legacy-sync-profile-updates.md#unstable-prefix).

#### Context for why this feature is in Synapse

This feature is an addition to support User Status as per https://github.com/matrix-org/matrix-spec-proposals/pull/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 https://github.com/matrix-org/matrix-spec-proposals/pull/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

Please see https://github.com/element-hq/synapse/issues/19981 as a tracking issue.

##### 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 https://github.com/matrix-org/matrix-spec-proposals/pull/4259

Contributor guide

Open the contributing guide

Research direction

Start by reviewing PR 19556 and the MSC4429 proposal, including its unstable-prefix documentation, to identify the implementation and identifiers that must change. This is done when MSC4429 is stable and Synapse uses the stable identifiers while preserving the compatibility and configuration behavior described here.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.