A problem most messengers designed for peer to peer connections have is the ability to share the same chat log across multiple devices.
Most deal with this by making the phone a single point of contact and connecting subordinate desktop versions to it, which works, but really isn't ideal, if you ask me.
My suggestion here is to make a "same-as" feature instead:
- Every individual client has their own Yggdrasil keypair, which never leaves the device. Ideally, the private key is in device's secure storage, even, and is never backed up.
- Every individual client can declare another client to be another instance of the same user, ("same as me") confirmed by the user going online on both devices simultaneously and confirming this fact in-client as they communicate directly. (they're both individual yggdrasil nodes, aren't they?)
- Once messaging someone else, the client can tell them, "oh, and these other public keys are also me, share everything you send with them."
- Which key was used to initiate communication with this person doesn't matter, the clients just maintain a list of keys belonging to a user, and attempt to send a copy of every message destined to that user to all of them.
Some thought is needed on how to properly handle "wait, I lost that device, this is no longer me", but I'm sure this will be superior UX to any other messenger that tries to be peer-to-peer in any case.
A problem most messengers designed for peer to peer connections have is the ability to share the same chat log across multiple devices.
Most deal with this by making the phone a single point of contact and connecting subordinate desktop versions to it, which works, but really isn't ideal, if you ask me.
My suggestion here is to make a "same-as" feature instead:
Some thought is needed on how to properly handle "wait, I lost that device, this is no longer me", but I'm sure this will be superior UX to any other messenger that tries to be peer-to-peer in any case.