So, as I wrote in the (currently not-yet-published) Dev Pulse this week, Elemental Chat has some weird bugs that only an engineer can love. I am an engineer and I love these bugs, because (a) they tell me that Holochain is working exactly as it should, and (b) it exposes some interesting properties of Holochain’s eventually consistent DHT that are worth unpacking.
Here’s how the bug manifests:
- Alice sends a message.
- Alice’s message appears in Bob’s UI.
- Alice’s message disappears from Bob’s UI.
- Alice’s message reappears in Bob’s UI.
What’s happening here? Let’s take a look using a good ol’ sequence diagram (inputs and outputs have been simplified):
- Can you see what’s going on here? Where is the message getting lost?
- If you have UI dev experience, how do you think this design was arrived at?
- What do you think would be a good design to make sure the messages Bob’s already received don’t disappear?
- An eventually consistent DHT combined with live signals means there are certain times when, from Bob’s perspective, the message doesn’t actually exist but he knows about it anyway. What sorts of UX patterns might communicate the almost-but-not-yet nature of some of this data?
- Would Alice appreciate knowing that Bob has seen her message? What would that sort of design look like, in terms of both DNA and UX?