element-hq / element-hq/element-meta

Device dehydration: switch to stable identifiers

Open
#3,265 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
112
Forks
25
Avg merge
6h 6m
Merged PRs (30d)
4

Description

Once MSC3814 is approved, we will need to switch our draft implementations (synapse, matrix-js-sdk) over to use stable identifiers.

One particular sticking point is likely to be the SSSS key: existing users of the draft implementation will have stored their dehydration keys under an unstable identifier in SSSS, meaning that, in the natural order of things, their existing dehydrated devices will stop working when we switch to stable identifiers. We will need to consult with known users of the prototype implementations, to establish if (and for how long) we need to continue to support the old identifiers.

Additionally:

- [x] ~~Remove the temporary code in `matrix-js-sdk`'s `src/rust-crypto/DehydratedDeviceManager.ts`, the `rehydrateDeviceIfAvailable` method which stops polling if `events` is empty. This was kept to prevent an infinite loop if we encountered a server providing the earlier version of the API.~~ This was not needed because, since the API also switched from POST to GET, no server will be offering a GET endpoint that does not comply properly with the correct paging style.
- [ ] Delete `DehydratedDeviceEventsServlet.do_POST` from Synapse, which was added for compatibility with old clients.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by checking MSC3814's approval status and reviewing matrix-js-sdk's src/rust-crypto/DehydratedDeviceManager.ts, then identify how existing SSSS keys use the unstable identifier. Consult known prototype users to decide whether old identifiers need continued support, and remove Synapse's DehydratedDeviceEventsServlet.do_POST once compatibility requirements are settled.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend-api-design
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.