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 Community Server
Original author(s)Alexey Shchepin
Developer(s)ProcessOne
Initial releaseFebruary 11, 2003 (2003-02-11)
Stable release
23.04[1][2] / April 18, 2023 (2023-04-18)
Repository
Written inErlang
Operating systemCross-platform
Available in28 languages[3]
List of languages
Albanian, Catalan, Chinese (Simplified), Czech, Dutch, Esperanto, French, Galician, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Norwegian Bokmal, Polish, Portuguese, Portuguese (Brazil), Russian, Slovak, Spanish, Swedish, Thai, Turkish, Ukrainian, Vietnamese, Walloon
TypeXMPP server, MQTT broker, SIP service
LicenseGPL-2.0-or-later
Websitewww.process-one.net/en/ejabberd/ Edit this at Wikidata

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.[4] 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.[5] The software's creator, Alexey Shchepin was awarded the Erlang User of the Year award at the 2006 Erlang user conference.[6]

ejabberd has a number of notable deployments, IETF Groupchat Service,[7][8] BBC Radio LiveText,[9] Nokia's Ovi,[10] KDE Talk[11] and one in development at Facebook.[12][13] As of 2009 ejabberd is the most popular server among smaller XMPP-powered sites that register on xmpp.org.[14]

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."[15]

Project history

edit

Alexey Shchepin started ejabberd in November 2002[16] 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.[17] Ejabberd hit version 1.0 in December 2005.[18]

Features

edit

ejabberd has a high level of compliance with XMPP.[19] It provides a web interface which can be translated into other languages. ejabberd supports distributed computing by clustering, supports live upgrades,[20] 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,[21] 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.[22]

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

edit

In addition to the source code package and binary installers for Linux, macOS, and Windows,[23] 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.[24][25]

Other methods in which ejabberd is available are the TurnKey Linux Virtual Appliance Library[26] and Comprehensive Erlang Archive Network (CEAN).[27] An old version of ejabberd is included in the Unison unified communications software.

Notable deployments

edit

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,[28] that handles between 10,000 and 20,000 concurrent users at any time.[29] Among smaller XMPP-related sites, ejabberd is also the most popular server.[14] 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%.[30]

Among generic instant messaging deployments are ISPs like the Portuguese SAPO,[31] and the German United Internet for services like GMX and Web.de.[32][33][34] The Russian search engine Yandex uses a highly modified version of ejabberd, named Yabberd.[35] Nokia's Ovi uses ejabberd with some customizations.[10] Major League Baseball offers instant messaging and chatrooms using a customized ejabberd.[36][37] Mxit was a large server for mobile instant messaging client that started using ejabberd in 2005, but was replaced with a custom IM engine.[38] Universities known to use ejabberd include: Saint Petersburg State University,[39] Taganrog State University[40][41] and the Division of Information Technology of the University of Wisconsin–Madison.[42]

In the FOSS world, there is a pair of notable generic deployments of ejabberd, namely the KDE Talk[11] and the Fellowship of the Free Software Foundation Europe.[43][44]

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

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.[9] sameplace.cc is a Mozilla Firefox extension that integrates Jabber/XMPP in the web browser, and uses ejabberd for the XMPP server.[45][46] Other deployments include Chesspark (online chess playing site),[47] Collecta (real-time search),[48] and Notifixious (notifications of website subscriptions).[49]

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

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,[12] 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".[13] On Feb 10th 2010, the Facebook blog announced the opening of the XMPP interface to Facebook chat,[51] based on ejabberd.

Another social media and blogging service that uses ejabberd is LiveJournal Talk.[52][53] The Spanish-focused Tuenti social network uses a modified ejabberd to provide a live chat service.[54]

The worldwide jabber.org XMPP server, with a userbase of 330,000 users[55] and 15,000 users online at any one time in December 2009,[56] have used ejabberd since February 2006[57][58] until January 2010.[59] (In 2010 Jabber.org migrated to M-Link XMPP server from Isode Limited.[60])

Nintendo Switch uses ejabberd in its "Nintendo Switch Push Notification infrastructure" (NPNS) handling 10 million simultaneous connections.[61]

Publications and reception

edit

Two articles are published about ejabberd in magazines: "Démarrer avec ejabberd" in the French magazine PROgrammez![62] and "Passing notes in class", a post in Free Software Magazine.[63]

Computerworld Australia interviewed Erlang creator Joe Armstrong in June 2009,[64] 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,[65] 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.[66] A 2006 internal review paper in the IT department of Cambridge University found it the best choice amongst Jabber servers.[67] In the same year Alexey Shchepin was awarded the "User of the Year" award at the 12th International Erlang/OTP User Conference.[6]

Other published books that mention ejabberd are:

  • "Programming Erlang: Software for a Concurrent World" (Pragmatic Bookshelf, 2008)[68]
  • "Erlang Programming: A Concurrent Approach to Software Development" (O'Reilly Media, 2009)[69]
  • "Openfire Administration: A practical step-by-step guide to rolling out a secure Instant Messaging service over your network" (Packt Publishing, 2008)[70]
  • "Fedora 11 and Red Hat Enterprise Linux Bible" (Wiley, 2009)[71]

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[72]
  • Kestrel: an XMPP-based framework for many task computing applications[73]
  • IM'ing overload: Libraryh3lp to the rescue[74]
  • Towards an Enhanced Adaptability and Usability of Web-Based Collaborative Systems[75]
  • Leveraging Visual Tailoring and Synchronous Awareness in Web-Based Collaborative Systems[76]
  • Adding New Communication Services to the FIPA Message Transport System[77]

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[78][79]
  • US 2008/0062969 A1: Instant Message Call Connect System Apparatus and Database[80]
  • US 2008/0062970 A1: Instant Message Call Connect System Method and Interface[81][82]
  • US 2008/0235189 A1: System for Searching for Information Based on Personal Interactions and Presences and Methods Thereof[83]

See also

edit

References

edit
  1. ^ "23.04". GitHub.
  2. ^ "ejabberd 23.04". 18 April 2023.
  3. ^ "Localization | ejabberd". Retrieved 2021-07-27.
  4. ^ Francesco Cesarini, Simon Thompson, Erlang Programming, O'Reilly Media, 2009, ISBN 0-596-51818-8, p. 2
  5. ^ Peter Saint-André, Kevin Smith, Remko Tronçon, XMPP: The Definitive Guide: Building Real-Time Applications with Jabber Technologies, O'Reilly Media, 2009, ISBN 0-596-52126-X, p. 253
  6. ^ a b "Erlang User Conference 2006". Erlang.se. 2006-11-09. Archived from the original on 2010-08-12. Retrieved 2012-02-10.
  7. ^ a b "IETF Groupchat/Chatroom Service". Archived from the original on 2012-05-10. Retrieved 2012-02-13.
  8. ^ a b "online verification of jabber.ietf.org service". Archived from the original on 2011-07-13. Retrieved 2009-12-17.
  9. ^ a b LiveText-via-IP upgrade and other synchronously delivered content
  10. ^ a b "online verification of ovi.com XMPP server software". Archived from the original on 2011-07-13. Retrieved 2009-12-20.
  11. ^ a b KDETalk.net, the KDE XMPP server
  12. ^ a b "Functional Programming at Facebook" (PDF). Cufp.galois.com. 4 September 2009. Archived from the original (PDF) on 24 December 2012. Retrieved 2012-11-12.
  13. ^ a b "Facebook Pokes XMPP. MSN, Yahoo & AIM Better Watch Out — Tech News and Analysis". Gigaom.com. 2009-11-05. Archived from the original on 2010-01-30. Retrieved 2012-02-10.
  14. ^ a b Public XMPP Services
  15. ^ ejabberd Community Server 13.03 ejabberd mailing list, posted by Mickaël Rémond. 2013-03-22. Retrieved 2013-06-02.
  16. ^ Initial revision
  17. ^ "aleksey speaks (interview to Alexey Shchepin)". Archived from the original on 2010-02-26. Retrieved 2009-12-21.
  18. ^ For full release history, see https://ejabberd.im/releases
  19. ^ "Release Note ejabberd 1.0.0". ProcessOne. 14 December 2005. Retrieved 2008-03-11.
  20. ^ Rémond, Mickaël (July 16, 2007). "Live code upgrade: A must-have feature for high-availability deployments". ProcessOne. Archived from the original on 2008-03-06. Retrieved 2008-03-11.
  21. ^ XMPP.ORG, "XEP-0045: Multi-User Chat"
  22. ^ "XEP-0065: SOCKS5 Bytestreams". XMPP Standards Foundation. 2007-05-21. Retrieved 2008-03-11.
  23. ^ ejabberd Download Archive
  24. ^ "ejabberd downloads counter with links to OS distributions". Archived from the original on 2014-10-11. Retrieved 2014-10-07.
  25. ^ "Arch Linux package details". Archived from the original on 2010-09-25. Retrieved 2010-10-09.
  26. ^ TurnKey Linux Appliance for XMPP and Web Chat Archived 2009-11-24 at the Wayback Machine
  27. ^ "CEAN package for ejabberd". Archived from the original on 2011-07-24. Retrieved 2009-12-18.
  28. ^ "online verification of jabber.ru XMPP server software". Archived from the original on 2011-07-13. Retrieved 2009-12-18.
  29. ^ "online statistics of jabber.ru XMPP server". Archived from the original on 2009-12-17. Retrieved 2009-12-18.
  30. ^ Usage estimation of public XMPP servers per domain
  31. ^ "Novo servidor online". pedrocs from SAPO. 2007-02-16. Archived from the original on 2011-08-20. Retrieved 2009-12-17.
  32. ^ GMX bringt eigenen Instant Messenger heraus
  33. ^ GMX plant Instant-Messenger für viele Protokolle
  34. ^ "online verification of gmx.de XMPP services". Archived from the original on 2011-07-13. Retrieved 2009-12-17.
  35. ^ "online verification of yandex.ru running yabberd". Archived from the original on 2011-07-13. Retrieved 2009-12-17.
  36. ^ Hitting a home run with IM
  37. ^ Major League of Baseball teams up with ProcessOne to deploy large scale chat system
  38. ^ "Inclusion of Mxit plugin into Pidgin". Archived from the original on 2011-07-09. Retrieved 2009-12-24.
  39. ^ "online verification of spbu.ru XMPP server software". Archived from the original on 2011-07-13. Retrieved 2009-12-24.
  40. ^ XMPP TSURE Server Archived 2010-10-07 at the Wayback Machine
  41. ^ "online verification of jabber.tsure.ru XMPP server". Archived from the original on 2011-07-13. Retrieved 2009-12-24.
  42. ^ "online verification of doit.wisc.edu XMPP server version". Archived from the original on 2011-07-13. Retrieved 2009-12-24.
  43. ^ FSFE Jabber wiki Archived 2012-02-22 at the Wayback Machine
  44. ^ "online verification of jabber.fsfe.org XMPP server". Archived from the original on 2011-07-13. Retrieved 2009-12-17.
  45. ^ Back in game Archived 2008-06-18 at the Wayback Machine
  46. ^ "online verification of sameplace.cc XMPP server". Archived from the original on 2011-07-13. Retrieved 2009-12-20.
  47. ^ Choosing An XMPP Server
  48. ^ "online verification of XMPP server". Archived from the original on 2011-07-13. Retrieved 2009-12-22.
  49. ^ Switch from Openfire to Ejabberd: done! Archived 2009-04-23 at the Wayback Machine
  50. ^ Run a jabber server
  51. ^ "Facebook Chat Now Available Everywhere | Facebook". Blog.facebook.com. Retrieved 2012-02-10.
  52. ^ New LJTalk server Archived 2009-08-03 at the Wayback Machine
  53. ^ "online verification of livejournal.com XMPP server". Archived from the original on 2011-07-13. Retrieved 2009-12-23.
  54. ^ "Chat in the making; written by Carlos Abalde, Backend Engineer in Tuenti". Archived from the original on 2012-07-07. Retrieved 2010-09-13.
  55. ^ Server Migration Coming Soon Archived 2009-12-20 at the Wayback Machine
  56. ^ At the jabber.org service we typically have ~15,000 users online at any one time
  57. ^ e-jabbering Archived 2011-07-21 at the Wayback Machine
  58. ^ Saint-Andre, Peter (February 26, 2006). "jabber.org upgrade". Juser mailing list. Jabber.org. Retrieved 2009-12-16.
  59. ^ To Our Users Archived 2010-06-10 at the Wayback Machine
  60. ^ Update from jabber.org
  61. ^ ProcessOne (2019-06-05). "ejabberd & Nintendo Switch NPNS". ProcessOne Blog. Retrieved 2020-03-09.
  62. ^ "Démarrer avec ejabberd" at magazine PROgrammez!
  63. ^ "Passing notes in class" at Free Software Magazine Archived 2009-09-23 at the Wayback Machine
  64. ^ The A-Z of Programming Languages: Erlang
  65. ^ "Interview: The importance of being Erlang". Archived from the original on 2009-12-27. Retrieved 2009-12-23.
  66. ^ Peter Saint-André, Kevin Smith, and Remko Tronçon's XMPP: The Definitive Guide
  67. ^ Tony Finch, University of Cambridge Computing Service, [1], p. 4
  68. ^ Joe Armstrong (Pragmatic Bookshelf, 2007, ISBN 978-1-934356-00-5)
  69. ^ Francesco Cesarini, Simon J. Thompson (O'Reilly Media, 2009. ISBN 978-0-596-51818-9) - Erlang Programming: A Concurrent Approach to Software Development Archived 2019-10-16 at the Wayback Machine
  70. ^ Mayank Sharma's Openfire Administration: A practical step-by-step guide to rolling out a secure Instant Messaging service over your network
  71. ^ Christopher Negus's Fedora 11 and Red Hat Enterprise Linux Bible
  72. ^ Wagener, Johannes; Ola Spjuth; Egon L Willighagen; Jarl ES Wikberg (September 2009). "XMPP for cloud computing in bioinformatics supporting discovery and invocation of asynchronous web services". BMC Bioinformatics. 10. BioMed Central Ltd.: 279. doi:10.1186/1471-2105-10-279. PMC 2755485. PMID 19732427.
  73. ^ Stout, Lance; Michael A. Murphy; Sebastien Goasguen (2009). "Kestrel: an XMPP-based framework for many task computing applications". MTAGS '09: Proceedings of the 2nd Workshop on Many-Task Computing on Grids and Supercomputers. New York, USA: ACM. doi:10.1145/1646468.1646479. ISBN 978-1-60558-714-1.
  74. ^ Theiss-White, Danielle; Jenny Dale; Melia Erin Fritch; Laura Bonella; Jason Coleman (2009). "IM'ing overload: Libraryh3lp to the rescue". Library Hi Tech News. 26 (1/2). Bingley, United Kingdom: Emerald Group Publishing Limited: 12–17. doi:10.1108/07419050910966481. ISSN 0741-9058. S2CID 60501628.
  75. ^ Lukosch, Stephan; Mohamed Bourimi (December 2008). "Towards an Enhanced Adaptability and Usability of Web-Based Collaborative Systems". International Journal of Cooperative Information Systems. 17 (4). Singapore: World Scientific Publishing Co.: 467–494. doi:10.1142/S0218843008001944. ISSN 0218-8430.[permanent dead link]
  76. ^ Bourimi, Mohamed; Stephan Lukosch; Falk Kühnel (2007). "Leveraging Visual Tailoring and Synchronous Awareness in Web-Based Collaborative Systems". Groupware: Design, Implementation, and Use. Vol. 4715/2007. Springer Berlin / Heidelberg. pp. 40–55. doi:10.1007/978-3-540-74812-0_4. ISBN 978-3-540-74811-3. ISSN 0302-9743.
  77. ^ Palanca, Javier; Miguel Escrivá; Gustavo Aranda; Ana García-Fornes; Vicente Julian; Vicent Botti (September 2006). "Adding New Communication Services to the FIPA Message Transport System". Multiagent System Technologies. Lecture Notes in Computer Science. Vol. 4196/2006. Springer Berlin / Heidelberg. p. 1. doi:10.1007/11872283_1. ISBN 978-3-540-45376-5. ISSN 0302-9743.
  78. ^ Patent US 2007/0271367 A1 in Google Patents Archived 2011-07-22 at the Wayback Machine Application Number: 11/796,304 Filing Date: 27 Apr 2007 Publication Number: US 2007/0271367 A1 Publication Date: 22 Nov 2007 Inventors: Zohar Yardeni, John Londono
  79. ^ Patent US 2007/0271367 A1 in Free Patents Online
  80. ^ Patent US 2008/0062969 A1 in Google Patents Archived 2011-07-22 at the Wayback Machine Application Number: 11/853,640 Filing Date: 11 Sep 2007 Publication Number: US 2008/0062969 A1 Publication Date: 13 Mar 2008 Inventors: Donald Picard, Robert DeBenedictis, Jose Capo, Ray Jimenez Assignee: Common Voices
  81. ^ Patent US 2008/0062970 A1 in Google Patents Application Number: 11/853,642 Filing Date: 11 Sep 2007 Publication Number: US 2008/0062970 A1 Publication Date: 13 Mar 2008 Inventors: Donald Picard, Robert DeBenedictis, Jose Capo, Ray Jimenez Assignee: Common Voices
  82. ^ Patent US 2008/0062970 A1 in Free Patents Online
  83. ^ Patent US 2008/0235189 A1 in Free Patents Online Application Number: 11/855,851 Filing Date: 14 Sep 2007 Publication Number: US 2008/0235189 A1 Publication Date: 25 Sep 2008 Iventors: Drew Rayman, Brad Alperin, Timothy Driscoll, Stuart Goldstein, David Levin, Benjamin Simon
edit