4 ms·
WhatsApp used to use Erlang, not anymore. Facebook rewrote it completely in C++. https://www.quora.com/When-did-Facebook-switch-away-from-using-Erlang-for-Face
by aloknnikhil 7y ago
WhatsApp used to use Erlang, not anymore. Facebook rewrote it completely in C++.
https://www.quora.com/When-did-Facebook-switch-away-from-using-Erlang-for-Facebook-Chat-What-was-the-reason-for-it-What-did-they-replace-it-with https://www.quora.com/When-did-Facebook-switch-away-from-usi...
- i_feel_great 7y agoThat Quora post refers to Facebook Chat - not WhatsApp. As far as I am aware, it is still implemented in Erlang.
- elgenie 7y agoThat system was the backend of the functionality currently known as Facebook Messenger, not WhatsApp. One might note, snidely [1], that three-four years after freezing development of an Erlang-based messaging system, starving maintenance work on that system of engineering effort, devoting massive engineering resources to a from-scratch C++ rewrite, and in the meantime blaming the language for relatively minor system design issues that could have been improved with a fraction of the effort (including, but not limited to, Erlang's ability to wrap allegedly critical C++ components) … Facebook plowed $19B into the acquisition of an Erlang-based messaging system. [1] as a main author of the Facebook Chat version written in Erlang
- dmitriid 7y ago> after freezing development of an Erlang-based messaging system... > Facebook plowed $19B into the acquisition of an Erlang-based messaging system. They didn't care what it was written in. They would've spent it on Whatsapp even it was written in PHP (like Slack). They paid for users and market penetration.
- rdtsc 7y agoThe irony is still there though
- bdd 7y agoThis isn't true at all. Major functions of WhatsApp are implemented in Erlang and they're actively worked on. Source: Self. Engineer at FB.
- hackerbabz 7y agoI thought they use Elixir (like Kotlin :: Java).
- bdd 7y agoNot only WhatsApp but there are no files checked into any Facebook source repository with .ex or .exs suffix and looks like Elixir.
- zerr 7y agoThey (you) had to modify beam vm heavily though.
- fouc 7y agoWhatsApp did modify Erlang but it's interesting that Elixir/Phoenix was able to hit the same scale on a single server without any such optimizations. [1] [1] https://changelog.com/podcast/208 https://changelog.com/podcast/208 > I wasn’t thinking we could actually get WhatsApp-like scale, because when I read about WhatsApp, they were using FreeBSD and they forked Erlang and made some optimizations, they fine-tuned FreeBSD… So I was thinking that it was gonna be very difficult to try to replicate that kind of scale. > So we were doing extra work, and it was really fulfilling to actually see that with minor changes in our initial best-effort approach with just a few tweaks was able to go to something that was able to get millions of connections. That was incredibly fulfilling to come full circle, and also it’s a great brag slide now, of showing that two million connections chart.
- rapsey 7y agoAt that scale you are generally modifying your entire stack or building it from scratch no mater what you are using. Also they were on a pretty old version and a number of their fixes are in Erlang itself now. WhatsApp engineers have been quite clear that using Erlang was a great choice.
- rdtsc 7y ago> WhatsApp used to use Erlang, not anymore. Facebook rewrote it completely in C++. Highly doubt it. Here is Maxim Fedorov talking about scaling their cluster to 10000 nodes in 2018 https://www.youtube.com/watch?v=FJQyv26tFZ8 https://www.youtube.com/watch?v=FJQyv26tFZ8 it would be pretty ridiculous for them to completely rewrite that in C++ one year later.
- mister_hn 7y agoWhich is far better, IMHO
- mister_hn 7y agowhy so many negative votes? Isn't C++ a far more battle-tested language than Erlang? Hasn't C++ a far bigger community than Erlang? To all whose concern is Memory Management, learn about C++11 (and newer standards): smart pointers and heavy use of RAII pattern work shamefully good
- eikenberry 7y agoI think it is because with Erlang you get Beam and it is the real treasure of the Erlang ecosystem. It not only manifest the philosophy of Erlang well but, more specifically, provides a battle tested run-time for concurrent applications that you cannot get with C++ as you have to (re-)write that concurrent run-time each time.
- snowAbstraction 7y agoExactly. I worked at a few smaller but established FinTech companies delivery Trading Systems to banks, hedge funds, etc that had built their own unique systems written in C++ for concurrent applications. These systems were battle tested but they were not open-sourced and anyway they could not easily be re-purposed.
- samvher 7y agoI did not downvote but possibly because the idea of "good" and "better" programming languages does not mean much. Different tools have different purposes. If you want to write a network driver for the Linux kernel C++ is probably more suitable but if you quickly want to build a simple chat system Erlang is almost certainly going to make your life a lot easier.
- atemerev 7y agoYes, it is battle-tested, and the testing result was the big failure: memory-related issues and vulnerabilities alone caused billions of dollars of damage, and on their way to cause more. It is generally not a good idea at all to use C++ in network-facing applications.
- mytrile 7y agoMaxim Fedorov talking about Erlang at Scale in WhatsApp two months ago - https://soundcloud.com/elixirtalk/episode-148-feat-maxim-fedorov-erlang-at-scale-in-whatsapp https://soundcloud.com/elixirtalk/episode-148-feat-maxim-fed...
- fastball 7y agoThat post is about Facebook Chat, not WhatsApp.