-
Notifications
You must be signed in to change notification settings - Fork 23
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
Self-removal/muting support MVP #441
Comments
Here's how this task could be done using floating proposals (no longer recommended): There are two parties here, the ‘proposer’ and the ‘committer’. The proposer needs to create an intent, and make sure that the proposal makes it onto the group successfully, before deleting the group on their end. Logic to add for the proposer:
Once the committer receives the proposal, they can 'lazy commit' it the next time they interact with the group. Logic to add for the committer:
Ideally the member list is updated immediately once the proposal is received. It is also possible to commit immediately, rather than just lazily, but it is additional work. Stretch:
|
I wrote all of this up, but with XIP-46 coming, I just realized it may actually be easier to wait for that, and have the proposer just propose an update to the members list on the group context, and have the committer handle resolving the list of installations to remove. That might simplify the above significantly. In fact, it may be worth considering rolling this into the identity work. |
Simpler metadata-based approach without floating proposals:
Reason for this is there are some complexities with doing it through floating proposals:
|
Related to ephemeraHQ/converse-app#931 |
PR started here: #1090 |
Added by Rich:
MLS allows you to publish proposals and commits. In some systems, the proposals are sent separately, and then a later commit is published by someone else that commits all of the previous proposals. In our current implementation, all proposals are immediately committed by the proposer, so we don't use separate proposal messages, just commits that include the proposals.
The problem with removing yourself is that MLS prohibits commiting a Remove proposal that removes the committer. I think the reason is that generating commits requires deriving secrets to use for the next epoch of the group, and therefore anyone being removed from the group should not have access to those secrets.
It seems there are two ways to solve this problem:
Add support for separating out proposals and commits. So to remove yourself, you publish a proposal, and then somebody else commits it. This requires a bunch of changes to how we do proposals/commits today. We will need to chat about how to design this.
You remove yourself from the group, but don't update the group encryption state (in essence, you've effectively 'muted' the group without changing the group membership). I don't like this so much, because you still need a way to notify your other devices you've done this, otherwise you're only muting for your current device.
The text was updated successfully, but these errors were encountered: