# Ejabberd

ejabberd is an Extensible Messaging and Presence Protocol (XMPP) application server and an MQ Telemetry Transport (MQTT) broker, written mainly in the Erlang programming language. It can run under several Unix-like operating systems such as macOS, Linux, FreeBSD, NetBSD, OpenBSD and OpenSolaris. Additionally, ejabberd can run under Microsoft Windows. The name 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 GPL-2.0-or-later. As of 2009, it is one of the most popular open source applications written in Erlang. XMPP: The Definitive Guide (O'Reilly Media, 2009) praised ejabberd for its scalability and clustering feature, at the same time pointing out that being written in Erlang is a potential acceptance issue for users and contributors. The software's creator, Alexey Shchepin was awarded the Erlang User of the Year award at the 2006 Erlang user conference.
ejabberd has a number of notable deployments, IETF Groupchat Service, BBC Radio LiveText, Nokia's Ovi, KDE Talk and one in development at Facebook. As of 2009 ejabberd is the most popular server among smaller XMPP-powered sites that register on xmpp.org.
With the next major release after version 2 (previously called ejabberd 3), the versioning scheme was changed to reflect release dates as "Year.Month-Revision" (starting with 13.04-beta1). It was also announced that further development will be split into an "ejabberd Community Server" and an "ejabberd Commercial Edition [which] targets carriers, websites, service providers, large corporations, universities, game companies, that need high level of commitment from ProcessOne, stability and performance and a unique set of features to run their business successfully."

## Project history

Alexey Shchepin started ejabberd in November 2002 for three main reasons: success with Tkabber (his previous project, an XMPP client), a rather unstable first alpha release of jabberd2, and his wish to play with Erlang features. Shchepin has stated that he would have not started ejabberd without Erlang. Ejabberd hit version 1.0 in December 2005.

## 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/XMPP 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 Linux, macOS, and Windows, ejabberd is also available in several operating system distributions as is typical in FOSS, including Debian, Fedora, Gentoo, Ubuntu, Arch Linux, OpenSolaris, FreeBSD Ports, OpenBSD 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). An old version of ejabberd is included in the Unison unified communications software.

## Notable deployments

ejabberd is known to be used by XMPP-related sites and a number of companies, either for providing an XMPP 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 XMPP-related sites are usually run using ejabberd, both in case of large and small servers. One large public XMPP servers runs ejabberd: the Russian jabber.ru, that handles between 10,000 and 20,000 concurrent users at any time. Among smaller XMPP-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, named Yabberd. Nokia's Ovi uses ejabberd with some customizations. Major League Baseball offers instant messaging and chatrooms using a customized ejabberd. Mxit was a large server for mobile instant messaging client that started using ejabberd in 2005, but was replaced with a custom IM engine. Universities known to use ejabberd include: Saint Petersburg State University, Taganrog State University and the Division of Information Technology of the University of Wisconsin–Madison.
In the FOSS world, there is 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 novel 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/XMPP 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.
In 2008 Facebook announced that they will support XMPP for their chat service. Facebook developers made a presentation on the topic at Commercial Users of Functional Programming (CUFP) 2009 conference, and in November 2009 chat.facebook.com was detected as running a modified version of ejabberd. Om Malik commented on the development as "disruptive" competition for "older IM networks such as AOL's AIM and Microsoft's MSN". On Feb 10th 2010, the Facebook blog announced the opening of the XMPP interface to Facebook chat, based on ejabberd.
Another social media and blogging service that uses ejabberd is LiveJournal Talk. The Spanish-focused Tuenti social network uses a modified ejabberd to provide a live chat service.
The worldwide jabber.org XMPP server, with a userbase of 330,000 users and 15,000 users online at any one time in December 2009, have used ejabberd since February 2006 until January 2010. (In 2010 Jabber.org migrated to M-Link XMPP server from Isode Limited.)
Nintendo Switch uses ejabberd in its "Nintendo Switch Push Notification infrastructure" (NPNS) handling 10 million simultaneous connections.

## Publications and reception

Two articles are published about ejabberd in magazines: "Démarrer avec ejabberd" in the French magazine PROgrammez! and "Passing notes in class", a post in Free Software Magazine.
Computerworld Australia interviewed Erlang creator Joe Armstrong in June 2009, and he referred to ejabberd in this way:
* Q: "What's the most interesting program(s) you've seen written with Erlang for business?"
* A: "That's difficult to answer, there are many good applications. Possibly Ejabberd which is an open-source Jabber/XMPP instant messaging server. Ejabberd appears to be the market leading XMPP server and things like Google Wave which runs on top of XMPP will probably attract a lot of people into building applications on XMPP servers."
Builder Australia interviewed Andre Pang in September 2007, and referred to ejabberd in those terms: "the apps that Erlang is suited for really aren't CPU bound that often, if you look at ejabberd, it serves some absolutely crazy amount of concurrent connections, well over 100,000, and they're running it on, I'm not sure, but it's something like a Quad core XEON machine."
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. A 2006 internal review paper in the IT department of Cambridge University found it the best choice amongst Jabber servers. In the same year Alexey Shchepin was awarded the "User of the Year" award at the 12th International Erlang/OTP User Conference.
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)
* "Fedora 11 and Red Hat Enterprise Linux Bible" (Wiley, 2009)
ejabberd was used in research works of papers published in international conferences proceedings and journals:
* XMPP for cloud computing in bioinformatics supporting discovery and invocation of asynchronous web services
* Kestrel: an XMPP-based framework for many task computing applications
* IM'ing overload: Libraryh3lp to the rescue
* Towards an Enhanced Adaptability and Usability of Web-Based Collaborative Systems
* Leveraging Visual Tailoring and Synchronous Awareness in Web-Based Collaborative Systems
* Adding New Communication Services to the FIPA Message Transport System
There are four patent applications published in the United States Patent and Trademark Office that involve ejabberd:
* US 2007/0271367 A1: Systems and Methods for Location-Based Social Web Interaction and Instant Messaging System
* US 2008/0062969 A1: Instant Message Call Connect System Apparatus and Database
* US 2008/0062970 A1: Instant Message Call Connect System Method and Interface
* US 2008/0235189 A1: System for Searching for Information Based on Personal Interactions and Presences and Methods Thereof