Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I\'m working on an application to providing chat service for a social site users

ID: 657712 • Letter: I

Question

I'm working on an application to providing chat service for a social site users. Before starting that, I didn't know about the XMPP protocol, and I developed almost 50% of basic chat operation in server without following this protocol. But now I want to use this protocol and one of the open source servers that are available, and throw away my own program (which is very hard for me).

I need an XMPP server which

is scalable
can handle between 10 and 15 million users
runs on Linux and/or Windows
is Open Source

I need most of their connections alive in most of the time.

We want to deliver all messages immediately even when the user is not in the application (e.g in Android by running a service activity/thread).

I need help, please introduce a Jabber/XMPP server open source program which is able to do that (and runs on Linux and/or Windows).

I need to provide a program like Nimbuzz with some difference and customization.

Explanation / Answer

I recommend one of the Erlang-based servers: either MongooseIM or ejabberd. MongooseIM was originally a fork of ejabberd, but the codebases have diverged quite a bit in recent years.

These servers stand out among the other options not in terms of feature-richness (they do offer lots of features, though), but because they leverage the scalability mechanisms offered by the Erlang/OTP platform. To address your points:

is scalable

Erlang is amazingly scalable. WhatsApp is the latest poster child for Erlang scalability, but if you google around, you'll find lots more.

can handle between 10 and 15 million users

If you want to scale to millions of users, be prepared to build a cluster of beefy machines with lots of RAM (both these servers are memory-bound). There are deployments in the wild with ~2 million users that I know of. The League of Legends chat runs several federated clusters that handle 70 million users, but they're using a very heavily modified ejabberd.

runs on Linux and/or Windows

You're probably better off running on Linux. Erlang does work on windows, but I'm not sure how well large-scale applications perform on the platform.

is Open Source

Yes, both are open source, licensed under the GPL.