Article URL: https://marindedic.com/groups/ Comments URL: https://news.ycombinator.com/item?id=48849258 Points: 33 # Comments: 18

Tradeoffs that need to be addressed to provide a group-chat experience in decentralized systems I’ve recently released the initial version of Kiyeovo - a decentralized P2P messenger desktop app. I cannot emphasize how much time went into thinking about group chats. Each model that I came up with had a major flaw, and this was really where the “no server” aspect started to hurt. I realized that there is no “best” way to do this, and that I must choose some tradeoffs in order to keep the app fully decentralized. With a central server, you have a trusted authority that answers these questions: Even E2E encrypted apps that can’t read your messages still use servers for these questions. They hand the group state to newly added users, and simply stop the removed users from receiving updates and messages. The content is encrypted, but the coordination - who’s in, what’s the latest state, what came first, what you missed - is answered centrally. Delete the server and what happens? There’s no “place” that for sure knows the roster, no sequencer machine for ordering, and no 24/7 mailbox for the people who were offline. The content is E2E encrypted, but a server (or homeserver) still holds everything described a moment ago. Group key schemes here are usually: