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.

8 Comments, RSS

  1. GR 16. November, 2009 @ 9:25 am

    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.

  2. Florian Jensen 16. November, 2009 @ 11:42 am

    Thanks for the slideshow. Haven’t seen that one before.

    I just find it weird, that they would change the Message IDs. That looks like something very deep down in the server core.

    But hey, nothing is impossible 🙂

  3. Sebastiaan Deckers 16. November, 2009 @ 4:17 pm

    Actually it’s not that surprising the IDs are different. There could be any number of reasons for changing the way they are generated. I think most likely this helps to route packets more efficiently between nodes in their cluster. Similar to how the GTalk server rewrites resource identifiers for internal routing purposes. Also, as GR said, it wouldn’t be the first time Facebook heavily modifies existing open source projects. They practically rewrote memcached to scale with their userbase. I see absolutely no reason to doubt ProcessOne’s claim and the achievement of the Ejabberd team.

  4. Gerard Braad 16. November, 2009 @ 7:28 pm

    The video of the slides is also available at: http://www.vimeo.com/6699769

  5. Ed Jolanski 3. December, 2009 @ 6:03 pm

    Who cares what server software they’re using…did you figure out how LOG IN to it?

  6. Florian Jensen 5. December, 2009 @ 6:25 pm

    @Ed Jolanski
    Not yet 🙁

Your email address will not be published. Required fields are marked *