Ejabberd

ejabberd is an XMPP application server, written mainly in the Erlang programming language. It can run under Microsoft Windows and several Unix-like operating systems such as Mac OS X, GNU/Linux, FreeBSD, and NetBSD. ejabberd stands for Erlang Jabber Daemon (Jabber being a former name for XMPP), and is written in lowercase only, as is common for daemon software.

ejabberd is free software, distributed under the terms of the GNU General Public License.

Features
ejabberd has a high level of compliance with XMPP. It provides a web interface which can be translated into other languages. ejabberd supports distributed computing by clustering, supports live upgrades, shared roster groups and provides support for virtual hosts. Database management systems supported include PostgreSQL and MySQL, and ODBC is supported for connectivity to other systems. LDAP authentication is supported, as is login via SSL/TLS, SASL and STARTTLS.

ejabberd is extensible via modules, which can provide support for additional capabilities such as saving offline messages, connecting with IRC channels, or a user database which makes use of user's vCards (saving vCards in LDAP or an ODBC compatible database is possible with other modules). In addition, modules can provide support for extensions of the XMPP protocol, such as MUC, HTTP polling, Publish-Subscribe, and gathering statistics via XMPP.

Starting with version 2.0.0 ejabberd also includes support for the Proxy65 file transfer proxy which enabled jabber users behind firewalls to share files through a SOCKS 5 proxy.

ejabberd can communicate with other XMPP servers and with non-XMPP Instant Messaging networks as well, using a special type of XMPP component called transport or gateway.

Distribution Methods
In addition to the source code package and binary installers for GNU/Linux, Mac OS X, and Windows, ejabberd is also available in several Operating System distributions as is typical in FOSS, including Debian, Fedora, Gentoo, Ubuntu, FreeBSD Ports, NetBSD port, and Mac OS X's Fink.

Other methods in which ejabberd is available are the TurnKey Linux Virtual Appliance Library and Comprehensive Erlang Archive Network (CEAN).

Notable Deployments
ejabberd is known to be used by Jabber-related sites and a number of companies, either for providing a Jabber instant messaging service, as a meeting chat room service, or as middleware for other software (usually by means of the Publish-Subscribe service).

XMPP servers deployed for Jabber-related sites are usually ran using ejabberd, both in case of large and small servers. Two large public XMPP servers run ejabberd: the russian jabber.ru, that handles between 10,000 and 20,000 concurrent users at any time , and the worldwide jabber.org XMPP server with an userbase of 330,000 users in December 2009 which typically has around 15,000 users online at any one time uses ejabberd since February 2006 until a migration expected for 2010. Among smaller Jabber-related sites, ejabberd is also the most popular server. When not taking into account the size or nature of the server, ejabberd is also the most widely deployed: according to IMtrends report from July 2008 based in automated server detection, 37% of 7292 servers were running ejabberd; the second position being jabberd14 with 22.4% and the third Openfire with 18.4%.

Among generic instant messaging deployments are ISPs like the portuguese SAPO, and the german United Internet for services like GMX and Web.de. The russian search engine Yandex uses a highly modified version of ejabberd, conveniently named Yabberd. Nokia's Ovi uses ejabberd with some customizations.

In the FOSS world, there a pair of notable generic deployments of ejabberd, namely the KDE Talk and the Fellowship of the Free Software Foundation Europe.

ejabberd chatroom feature provides the IETF Groupchat Service, used by the various working groups, areas, and BOF sessions during meetings and at other times.

Other deployments use ejabberd in more novelty ways. For instance, BBC Radio LiveText uses ejabberd's Publish-Subscribe service to synchronously broadcast text content with the radio stream. sameplace.cc is a Mozilla Firefox extension that integrates Jabber in the web browser, and uses ejabberd for the XMPP server. Other deployments include Chesspark (online chess playing site), Collecta (real-time search) , and Notifixious (notifications of website subscriptions).

One Laptop per Child's School server uses ejabberd with OLPC-specific patches as the instant messaging server.

Project history
Alexey Shchepin started ejabberd in November 2002 due to three main reasons: success with Tkabber (his previous project, a Jabber client), a rather unstable first alpha release of jabberd2, and his wish to play with Erlang features (Alexey would have not started ejabberd without Erlang).


 * 16 november 2002 : Alexey Shchepin writes the first lines of code
 * 11 february 2003 : ejabberd 0.1-alpha released
 * 16 november 2003 : ejabberd 0.5 released
 * 13 july 2004 : ejabberd 0.7 released
 * 10 october 2004 : ejabberd 0.7.5 released
 * 18 april 2005 : ejabberd 0.9 released
 * 23 may 2005 : ejabberd 0.9.1 released
 * 1 august 2005 : ejabberd 0.9.8 released
 * 14 december 2005 : ejabberd 1.0.0 released
 * 24 april 2006 : ejabberd 1.1.0 released
 * 28 april 2006 : ejabberd 1.1.1 released
 * 27 september 2006 : ejabberd 1.1.2 released
 * 2 february 2007 : ejabberd 1.1.3 released
 * 3 september 2007 : ejabberd 1.1.4 released
 * 21 february 2008 : ejabberd 2.0.0 released
 * 20 may 2008 : ejabberd 2.0.1 released
 * 28 august 2008 : ejabberd 2.0.2 released
 * 15 january 2009 : ejabberd 2.0.3 released
 * 13 march 2009 : ejabberd 2.0.4 released
 * 3 april 2009 : ejabberd 2.0.5 released
 * 13 november 2009 : ejabberd 2.1.0 released

Publications
Two articles are published about ejabberd in magazines: "Démarrer avec ejabberd" in the french magazine PROgrammez! and "Passing notes in class" in Free Software Magazine

ejabberd is mentioned in several books related to the XMPP protocol and the Erlang language. XMPP The Definitive Guide (O'Reilly Media, 2009) refers to ejabberd in those terms: The server is well-known for its scalability, and it can be clustered across multiple instances.. Other published books that mention ejabberd are:
 * "Programming Erlang: Software for a Concurrent World" (Pragmatic Bookshelf, 2008)
 * "Erlang Programming: A Concurrent Approach to Software Development" (O'Reilly Media, 2009)
 * "Openfire Administration: A practical step-by-step guide to rolling out a secure Instant Messaging service over your network" (Packt Publishing, 2008)
 * "Java Power Tools" (O'Reilly Media, 2008)
 * "Fedora 11 and Red Hat Enterprise Linux Bible" (Wiley, 2009)