5 ms·
The short answer is network effects. The longer answer: SMTP is an old protocol; it really predates much of what we'd think of as the Internet (e.g., it predat
by jcranmer 4y ago
The short answer is network effects. The longer answer:
SMTP is an old protocol; it really predates much of what we'd think of as the Internet (e.g., it predates DNS or even IPv4). This means that during the big initial growth phase of the Internet, SMTP was already an established standard that could be used to transfer email. Indeed, for email routing on the internet, you kind of had to support SMTP anyways, which makes it difficult for any other protocol to gain traction.
That's not to say that there weren't alternative protocols. The biggest of these was X.400, which many in the 90s saw as the eventual replacement of SMTP. But this was hampered by the already existing install base of SMTP. Other failures leading to the failure of X.400 was its reliance on the OSI stack, which lagged behind in implementation compared to the TCP/IP stack, and the rather cumbersome addressing model of X.400 compared to SMTP. The value added in supporting X.400 in addition to SMTP wasn't worth the cost of implementing X.400, and it wasn't really feasible to support only X.400 given the already widespread use of SMTP.
In this model, XMPP actually works closer to X.400 than it does to SMTP. It came about after the protocols it aimed to replace were already in existence--and wide use. (See also IRC, which is still alive and active). So implementing XMPP means you need to justify the value-add of XMPP over existing legacy protocols. If you were implementing your own, new chat service, it might make sense to build it on top of XMPP instead of a custom protocol. But replacing existing chat protocols with XMPP was again a costly move with benefits rarely justifying the move. The further federation goal of XMPP would have been an anti-goal to many of the chat implementations.
- kjellsbells 4y agoIf I recall, Exchange Server back in the day was built on an X.400 stack and SMTP was a extra connector yiu could buy. That all got turned around when Exchange 5.5 hit and it was clear that even the US Government, who were a massive motive force behind X400/500, were moving on.
- baobob 4y agoXMPP shares another feature in common with X.400: implementation complexity. Where XMPP had numerous implementation options and XML, X.400 has ASN.1. It's probably straightforward to write another solid explanation that phrases SMTP's success entirely in terms of its simplicity
- mmmm2 4y agoAs an old sendmail hacker, it amuses me to see SMTP called simple. I suppose it is though, at it's most basic level. It's the extra layers added over the years (MIME, text encodings, security, ...) and sendmail itself that make it complicated. Email address routing used to be ugly too, but the consolidation on the <user>@<host> standard really helped there.
- jotm 4y agoI mean, it's in the name :P
- cryptonector 4y agoSMTP was simple then. It grew organically via grafting of new things. It's not simple now, but nothing would be.
- fulafel 4y agoEmail has grown without fragmentation, because interoperation is seen as a basic requirement by the users and operators. Also strictly speakng MIME and other content layer things aren't part of, and didn't need changes to, SMTP. This is of practical importance because it means email server infrastructure doesn't need to know about email content format evolution, only end user email software does.
- cryptonector 4y agoYes, this.
- deleted 4y ago[deleted]
- mjevans 4y agoI recall reading that XMPP also wasn't always fully implemented / federated between services. E.G. wasn't advertising basic client online / busy / etc janky between different siloed implementations?
- technothrasher 4y ago> it predates DNS or even IPv4 I don't know about IPv4... IPv4 was RFC 760 (Jan 1980) while SMTP was RFC 821 (Aug 1982). DNS was certainly later, RFC 1034 (Nov 1987).
- tremon 4y agoI can't confirm nor deny any claims about protocol age, but still want to point out that the RFC numbering only indicates the order in which these protocols were standardized (or at least proposed for standardization), not when they were first used.
- technothrasher 4y agoSure, and they both had several predecessors. But everything sort of blends together if you don't pick a specific point to define when a protocol 'begins'. Standardization through RFC seems like the best choice for the core internet protocols.
- zinekeller 4y agoNope, SMTP is the older one. RFC 821 standardized SMTP, RFC 760 created IPv4, and in fact if you read RFC 801 it required a switchover from the previous Network Control Protocol (NCP) to then-new TCP/IP on the start of 1983. As the grandparent points out: > RFC numbering only indicates the order in which these protocols were standardized (or at least proposed for standardization), not when they were first used. Even today, many things are de-facto implemented before standardized so I personally don't think that it's correct to look at the RFC date as the date to consider.
- jcranmer 4y agoThe first SMTP RFC is RFC 788, not RFC 821. RFC 780 and RFC 772 are RFCs for MTP. IPv4 is defined by RFC 760 and RFC 791, although I don't know if RFC 760 actually implements something that looks like modern IPv4 (one of the challenges with old RFCs is that they were actually requests for comment, and I don't have a good sense of when this practice actually stopped). I was going by Wikipedia's dates, which give the actual use of IPv4 on ARPANET as January 1983, which I believe postdates the actual use of SMTP on ARPANET.
- Macha 4y agoThat said, the initial protocols that were too challenging for XMPP to unseat (MSN, AIM, Skype...) have been unseated by newer tech anyway (Whatsapp, iMessage, Telegram), so it clearly wasn't a perpetually insurmountable challenge.
- cryptonector 4y ago> Other failures leading to the failure of X.400 was naming. The biggest failure of X.400 was naming. X.400/X.500 style naming was and remains an unqualified disaster. Not that the pre-DNS alternative (UUCP) was great, but that name@domain turns out to be infinitely better than X.400.