Facebook XMPP Server

Facebook XMPP Server


After having had a very productive Sunday, I seem not to be able to stop doing stuff :)

So I started playing with chat.facebook.com (Facebook’s XMPP Server).

Having read P1’s article that Facebook would be using Ejabberd made me curious, as I don’t believe Ejabberd would scale anywhere near the needs of Facebook.

So I investigated the XML responses, and got a hint by Artur that the message IDs look nowhere near the message IDs of any server.

Now, if Facebook would’ve used an existing piece of code, they wouldn’t rewrite the message ID generation. That would be useless.

So, I checked every server I had access to, and I can say, it doesn’t behave like: Tigase, M-Link, Ejabberd, Jabberd14, Jabberd2, Prosody and Google’s XMPP Server.

Thus my conclusion: They have written their own XMPP server.

Update: Or maybe they are actually using EJD:

You realize that the process one folks said that a ‘customized ejabberd’ was used. And you also realize that Facebook engineers have said publicly that they are using eJabberd? Right? Of course they customized it, just like they have with other Open Source products that they use (e.g. memcached). See the Facebook engineers talk about it in the link provided in the Process One post.


So, in my opinion, if you are going to publicly ‘call bullshit’ on the Process One (and Facebook) folks, you should at least have provided some kind of verifiable evidence to back it up. You provided nothing.