Message deletion, synchronization, and conversation deletion

Hi, there

With Skype dying, Jami is really a great P2P replacement. However, after playing it for a while and reading through the documentation. I haven’t found a clear explanation (or any explanation) on message and conversation deletion, and message synchronization. Yes, there is explanation of the SWARM technology but what behavior is expected has to be interpreted and guessed by the lay person. Please point me to the right place to read, if I missed them.

  1. If A and B are in a conversation, when A deletes an old message. Does B receive the message deletion and removes it from its own store?
  2. Should there be a limit (e.g. 3 hours) of how old a message can be after which it can no longer be deleted?
  3. If A deletes the entire conversation, how does he do it ? By leaving the conversation ?
  4. What happens if A and B both have multiple devices. I noticed that when A resumes a new conversation with B, all old messages come back.
  5. Message synchronization time limit: assume A is offline and missed some messages from B, when A becomes online, messages can be synched from B’s devices. However, shouldn’t there be a time limit so that messages that are too old won’t be synched ? This is to prevent the problem not able to delete very old conversation.

Deleting conversation is the most unclear operation. Deleting messages/sync messages without any time limit seem to be wrong/problematic to me.

This is a great tool. But I think it’s user documentation is lacking. More efforts should be put in documenting for the end user.

Thanks!

This documentation is community-driven and anyone can contribute!

In jami, a conversation is represented by a tree of events. This tree is synchronized.
Each events got a parent, so when you sync the conversation, all previous events are also synched.
Time is not really used because it cannot be trusted (topology is the most important point)

If A and B are in a conversation, when A deletes an old message. Does B receive the message deletion and removes it from its own store?

Yes when the event is received. But it’s more hidden than deleted as it’s event based.

Should there be a limit (e.g. 3 hours) of how old a message can be after which it can no longer be deleted?

Message édition/deletion is a bit tricky and got several threads of discussion for years. I don’t have an answer for this

If A deletes the entire conversation, how does he do it ? By leaving the conversation ?

Yes. Conversation are stored on every devices participating on the conversation. If you do not want the conversation, delete it on one device, it will sync with your devices. However this will not remove the conversation from other participants devices. If you join it back later, it will sync again.

What happens if A and B both have multiple devices. I noticed that when A resumes a new conversation with B, all old messages come back.

This avoid duplicated contacts. To remove a conversation definitely, both contacts must remove the conversation they have together.

Message synchronization time limit: assume A is offline and missed some messages from B, when A becomes online, messages can be synched from B’s devices. However, shouldn’t there be a time limit so that messages that are too old won’t be synched ? This is to prevent the problem not able to delete very old conversation.

I don’t agree

Thanks for the detailed reply.

I’d like to contribute the user documentation if I first understand the behavior. I posed a series of questions because I ran into behaviors that I couldn’t understand. LOL

For example, two users A and B, with a total of 4 devices: A1, A2, B1, B2, all on the same LAN.
A and B engaged in a conversation for a while, which appeared on all 4 devices.
Then A leaves the conversation on A1, B didn’t do anything. Later A starts a new conversation with B on A1, at this point, strangely, two conversation appeared on A1 (as well as A2), one is the old conversation A has left and another is the new conversation.

But the strangest yet is that when A leaves one conversation again, both conversations disappeared on the A1 device.

The above behavior that 2 conversation appeared (old and new) and disappear together when leaving one, has occurred more than once.

Also there were out of order messages in the conversation on some devices. For example, in the new/resumed conversation, I have just posted a video link with a one comment. The video link appeared under a separator called “Today”, followed by “a series of messages” under “Yesterday”, and then followed by “Today” with the video comment.

Is this expected ? I understand you said the correct way to terminate a conversation is for all participants to choose “leave the conversation”. Okay, this may work for 2 people conversation, but for conversation with a lot more people, it’s difficulty to do. And what if not all of them leave the conversation, what would the corner case behave ? Would the multiple thread issue be expected?

Thanks!

There should be only one conversation in 1:1. If it’s not the case it’s a bug. Re-adding a contact should retrieve the oldest conversation

So no it’s not expected.