why is it so easy to edit an instant message but not an email after sending?


Basically the title. For example, on things like Slack, WhatsApp, Teams and other IM services, you can edit messages after sending but with an email you can’t. I believe Microsoft Outlook has a feature that allows you to edit emails but afaik, it isn’t the same. What is the difference (technology wise) between the two that accounts for this difference?

Note: I know they are different systems. I’m asking what specific aspect of these applications makes emails difficult to edit, or would it (again, techwise) be easy to integrate this into an email system and for whatever reason, it hasn’t been done?

In: 4

An email is the electronic version of physical mail. Think about it, once you write a letter and leave it in a post box, you can’t take it back and change it.

Email was built to replicate this process, once you hit send your message is not in your possession anymore and can’t be changed.

Instant messaging is a completely different application, and was built differently, including the idea that messages are always accessible by the sender.

IMs use a single app (typically) that is created by a single company that controls all of the sender’s client, the central server, and the recipient’s client. A message goes from A (sender) to B (server) to C (recipient), and is under the same company’s control the entire time. They can let you do whatever they want with it.

Email is not an app, it’s a protocol, and there is no single ’email company’ in control of it. A message might go from A to Q to R to N to B to F to C, all of which are owned by different companies/organizations. None of them control it, they merely know how to communicate with each other and pass a message along.

In theory, if they can pass along a message, they could also pass an “amend/replace this previous message” message along as well, and *if* the client understood it, that could work. But it was never designed in from the beginning and now there are countless systems and clients that wouldn’t understand it.

Also, people use email as a record or paper trail, and wouldn’t want it changing out from under them. You could theoretically design clients to keep a revision history and give a UI for that, but that just adds more complexity and again it would be different (or missing) for every system.

For a messaging service like slack, what usually happens is that you have a client on your PC or phone that connects to a server (or set of servers that in practice act as a single server) owned by the developer/provider of the messaging service. When you write a message to another user, or in a chat channel, your client informs the server about that, and the server then stores a database entry containing among other things your user ID, the message content, and the recipient user ID or the ID of the chat channel it was written in. When another user wants to see their received private messages, they connect to that same server and it responds with all database entries it can find where they are listed as the recipient. When they want to see messages in a chat channel, it pulls all database entries where that chat channel is listed as the one it was written to. The message service provider has ultimate control over what happens with the message because it always remains on their server, so if they allow your client to tell the server to edit it after it is created, then the server will do it.

Email is different. In theory any computing device can send an email directly to another device that is configured to accept email messages, but in most cases you have an email account on an email server somewhere, and use an email client on your PC or phone to connect to it like you would with a message service. What happens when you write an email is where it differs. When your client tells the email server to send a new email, the server looks up what server the recipient has their email account on. This is determined from the part after the @ in their email address. The server then makes a connection to whatever server it found and tells it “Hey strange server, I have a message for <user>@<you>, do whatever it with it. Bye!”. What happens next is then entirely up to the recipient server. Maybe it just ignores it entirely, maybe it is configured to forward the message to elsewhere, maybe it is a normal email server, and when the recipient user connects to it from their account, it goes “hey, there was a message delivered to you!”. Whatever the case, once the the email is on this recipient server, your server has zero control over what happens with it. Some people configure their email servers to allow other servers to provide “updates” for emails they previously delivered, but these additional configurations are not universally adopted and would require the servers for both the sender and recipient to agree on how it should be handled.