i have been testing out delta chat for two days… i really like the concept because i always tried to convince other to use GPG for email, but it generally turned out to much to ask. and delta chat solve this problem… And i love the idea of using email for messaging…
but unfortunately within one day of use i have to conclude that its not really “usable” jet (for my use case). And i specially signed up here to write about this “bug”.
background
im using the latest version on android and my chat partner also… we live half a world apart, with my chat partner living i a very strict government controlled country.
We started testing all the general features like sending pics, videos, audio recording… And everything seemed to work find… but after testing and having fun, finding that everything works, we really started to use it for conversations, that’s where problems start.
the problem
each message is sent by email, but not all arrive in a timely manner. about 70% of the messages arrive on time (keeping the normal flow of conversation) about 1% don’t arrive (but give no warring or any thing, we only found out by comparing screen shots) and the rest of the messages come in random times sometimes with a 5 min delay sometimes with an delay of up to an hour or so…
but the biggest problem isn’t even the delays, but that the messages are displayed in order off arriving, which makes the contestation look like a random mess. we really kept trying but when our conversations starting to end in small fights on what was and wasn’t said we finally switched back to our old messenger.
Expected behavior
obviously the expected behaviour would be that even if messages arrive late, they still get placed on the right spot in the conversations! so that when you read back the chat, it all at least makes sense.
How to implement?
of course this is up to the makers, but my guess would be to introduce the concept of a “conversation message counter” i guess that if their has been radio silents between 2 chatters for more then lets say 3 hours, the conversation counter can be resets (if reset is needed)… then when you start to chat, each text does +1 on the counter. and every messages sent knows its own count. so when my client receives message 3 and 5 but 4 has not arrived yet, it can already place a orange place holder text cloud that says that it still waiting on a delayed message. it would be great if the app knew where in the conversation to place the missing text, so if ever message didn’t only contain its own count but also the time stamps of the last 3 messages. it should in general be able to keep in tact the natural flow of the conversation, and exactly know where to place each text even if it didn’t arrive jet… and then their could also be a timeout period, like if a orange message still didn’t arrive after 1 hour it becomes red… or maybe even create a mechanism that waits 5 minutes and then negotiates with the senders client to automaticity resent the delate message using the count as message count or maybe their can be a longer hexdec message ID and use that instead of the message count. and then of course if the message was replace by resending, and then later the old messages still arrives, the message gets discarded. but the time it arrived late could be logged… by keeping statistics on delayed messages on how much to late they arrived, the users can know be informed of their “bad connection”…
closing thoughts
anyway, the current lack of “conversation flow fidelity”, makes it only useful for sending a few messages, but surly not for chatting… which is really a petty, because it’s otherwise a really nice messenger… but their are ways to fix it. so i hope this gets some priority, because this pertains the the general usability of the app…
let me know if you find this a reasonable request, or if see an other solution to solve this problem…