this post was submitted on 12 Aug 2025
544 points (96.9% liked)
Murdered by Words
2171 readers
1 users here now
Responses that completely destroy the original argument in a way that leaves little to no room for reply - a targeted, well-placed response to another person, organization, or group of people.
The following things are not grounds for murder:
- Personal appearance ("You're fat", "You're ugly")
- Posts with little-to-no context
- Posts based on a grammar/spelling error
- Dick jokes, "Yo mama", "No, you" type responses and other low effort insults
- "Your values are bad" without any logcal or factual ways of showing that they are wrong ("I believe in capitalism" - "Well, then you must be evil" or "Fuck you you ignorant asshole")
Rules:
- Be civil and remember the human. No name calling or insults. Swearing in general is fine, but not to insult someone else.
- Discussion is encouraged but arguments are not. Don’t be aggressive and don’t argue for arguments sake.
- No bigotry of any kind.
- Censor the person info of anyone not in the public eye.
- If you break the rules you’ll get one warning before you’re banned.
- Enjoy the community in the light hearted way it’s intended.
founded 2 years ago
MODERATORS
This is how I would do it (and I think how it’s done but can’t confirm):
There’s really no complexity at all because you can just store a table of group members with 256 entries and send the index into that table with each message to each user. The users have a copy of the table on their client and when they receive the message the client looks it up in the table and stores it in the local message history.
You would not store message history on the server. Only messages which have not been delivered to all group members would be stored on the server. When people leave/join the group, you send group membership notices to all members and their clients update their tables accordingly.
Since you don’t store message histories on the server, new people who join the group can’t see messages that were sent before they joined. This eliminates the need to send UUIDs with every message and furthermore it eliminates the need to send large message histories all at once when someone joins a group. Since clients store their own histories with UUIDs attached to messages (not table indices) there is no issue with table index reuse.
Disclaimer: I don't use WhatsApp, mostly slack at work and signal personally.
Then the tradeoff is that you can't rely on the server for replay. What if you have two clients, desktop and mobile for instance? A message is delivered to the desktop while the phone is offline, I shut down the computer, turn on the phone and I won't see the message on there. All to save 7 bytes on a message of potentially hundreds? Weird tradeoff. Even less than 7, given compression.
I think it’s helpful to bring up a bit about WhatsApp’s history.
WhatsApp was developed in 2009 (for the iPhone) to provide status notifications (Away, Busy, At Work, etc) back when SMS was the only way to message people on phones and SMS did not have such statuses. It soon morphed into a drop-in replacement for SMS messaging which helped it take off in many countries around the world where SMS delivery fees were extremely expensive but small (<1 GB) data plans were cheap (or relatively cheap, on a per-byte basis).
For most of that early history and rapid growth there was no desktop app, only the phone app. You didn’t need to create an account either: your phone number was your account. This model meant that you didn’t want someone else receiving all your messages just because they inherited your phone number, so server-side history was a non-starter to begin with. I think at some point they added the ability to backup your chat history from your phone to a cloud account such as iCloud or Google Drive.
When they launched the desktop version of WhatsApp they tied it to your phone. You had to use your phone to sign in and if your desktop lost connection to the server it could not reconnect by itself.
Anyway, if you think about users in countries like India or Brazil where SMS messages were either unavailable or cost a fortune and data plans were expensive (but still much cheaper than SMS per-byte) then it makes total sense to save as many bytes as possible over the wire. Also consider that WhatsApp’s killer feature, its group chats, are a perfect match for larger families to keep in touch. However, I think even the largest families have the need for fewer than 256 people in one group chat.
The situation for chat history may have changed more recently under the stewardship of Meta / Facebook. I think they have begun to target Slack by marketing WhatsApp Business.