element-hq / element-hq/synapse
MSC4429: Profile Updates for Legacy Sync (stabilization and unstable feature tracking)
- 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
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