Document information | ||||||||
Description: | this document compares the six big open source XMPP/Jabber servers on different topics | |||||||
Author: | Frank Niedermann (XMPP / Mail) | |||||||
Version: | 2.3 | |||||||
Last change: | 2006-08-14 | |||||||
Note: | the comparison is based on the latest stable or development versions of the servers. | |||||||
Thanks to all the developers, server admins and other people that helped collecting and updating the informations (see the Changelog below) |
Select which columns you want to see open or closed. Unfortunately this does not work with all browsers and JavaScript has to be enabled. If you know a better solution let me know :) Known to work with Mozilla and khtml based brwosers. | ||||||||
Wildfire | ejabberd | Jabberd 2 | Jabberd 1.4 | OpenIM | WPJabber | Description / Example |
Section: Basic - Medium - Advanced
Feature | 1. Wildfire | 2. ejabberd | 3. Jabberd 2 | 4. Jabberd 1.4 | 5. OpenIM | 6. WPJabber | Description / Example |
---|---|---|---|---|---|---|---|
Status |
up to date
|
up to date
|
up to date
|
up to date
|
needs update
|
needs update
|
|
Websites |
|
|
|
|
|
|
|
License | Open Source (GPL) | Open Source (GPL) | Open Source (GPL) | Open Source (JOSL and GPL, user can choose) | Open Source (BSD) | Open Source (GPL) | |
Platforms | anything that can run Java 1.5 | anything that can run Erlang: many unices (including Linux, Solaris, *BSD), Windows and Mac OS X | many unices (including Linux, Solaris, *BSD) and Windows | many unices (including Linux, Solaris, *BSD) and Windows | anything that can run Java 1.4 | Linux only, for the native c2s a vanilla Linux 2.6.x or 2.4.x with epoll patch necessary | |
Features |
|
|
|
|
|
|
Section: Basic - Medium - Advanced
Feature | 1. Wildfire | 2. ejabberd | 3. Jabberd 2 | 4. Jabberd 1.4 | 5. OpenIM | 6. WPJabber | Description / Example |
---|---|---|---|---|---|---|---|
Stability | high, there are many deployments, code base has been under development for several years | high, it works stable on several big hosts, code base has been under development for several years, good s2s stability | In production on many mid-size sites and some large sites | high, works stable on several big hosts | successfully used in production since January 2004 | high, works stable on several big hosts | |
Development | active, developing new enhancements and fixing open bugs | active, developing new enhancements and fixing open bugs | active, developing new enhancements and fixing open bugs | active, developing new enhancements | inactive, fixing open bugs | inactive, no changes for a longer time | |
Amount of developers | two main developers (Gaston Dombiak, Matt Tucker) and some contributors from Jive Software, Ryan Graham working on plugins and bug-fixes, some contributors also working on plugins | one main developer (Alexey Shchepin, interview) and several other contributors. Code is also being exchanged with the J-EAI project, some contributions are available on the website. | two (Justin Kirby, Stephen Marquard) | one (Matthias Wimmer) | two (Alexis Agahi) and many contributors | one (Lukas Karwacki) | |
Support | website (Wildfire support site), forum (discussion forum), knowledgebase (Jive Software knowledgebase for Wildfire), commercial support (wildfire support) | mailing list (ejabberd), Chatroom, Forum, Commercial support | mailing list (jabberd) | website with comments (adminguide, adminfaq), mailinglist (jadmin) | mailing list ([email protected]), forums | jabberstudio.org (wpjabber on jabberstudio.org) | |
Bugfixes | issue database for bug and enhancement reports (JIRA) | bugzilla | bugzilla | bugzilla | issue tracker on java.net | bugtracker on jabberstudio.org | |
External components / Transports | possible | possible, there are a lot transport tutorials available | possible (information), most transports with JCR or wrapped inside Jabberd 1.4 (sometimes with limitation of transport functions), some transports don't require Jabberd 1.4 and can easily be used (pyMSNt, jabber-gg-transport) | possible JEP-0114, also support for session protocol of jabberd2 | none | JIT native, other transports wrapped inside Jabberd 1.4 or JCR | Note: often the integration of transports is easier on Jabberd 1.4 |
Rostermanagement / Rosterchanges | possible through the Wildfire API | possible via web interface, XMPP compliant with workaround for JIT (allowing JIT to automatically add items from ICQ contact list) | iq:roster is almost XMPP compliant, a template with JIDs for new rosters available, users only have entries on their roster which they have asked for | very flexible and dynamic with mod_groups (existing rosters can be adjusted) but deprecated and extremely buggy, users only have entries on their roster which they have asked for (XMPP compliant, no roster pushes allowed any more) | possible using custom plugin | no extra tools available | |
Shared Roster Groups | possible | possible | not possible (but it's possible to edit the roster tables in the database, but this is not explicitly supported by the server) | not possible | not possible | not possible | |
vCards | complete records | complete records | subset of records | complete records | complete records | complete records | |
Multi-User Chat (JEP-0045) | possible out-of-the-box | possible out-of-the-box (default enabled module), and also possible in the jabberd2 way (http://ejabberd.jabber.ru/mu-conference) - remark: only for geeks :) | possible with transport wrapped inside Jabberd 1.4 or with JCR | possible with plugin | not possible | possible | Note: Multi-User-Chat is also available as JEP-0114 component |
Message logging | possible via XML files, custom handling is possible | possible as extension with code from the J-EAI project, also external tool available (Bandersnatch, Bandersnatch Tutorial) | external tool available (Bandersnatch) | possible | possible | possible | |
Security/encryption (server-side, s2s) | s2s-encryption possible (TLS and SASL External) | s2s-encryption possible (STARTTLS+dialback and SASL External), see http://ejabberd.jabber.ru/s2s-encryption | s2s-encryption possible (STARTTLS) | s2s-encryption possible (STARTTLS and SASL External) | s2s-encryption with SSL | no s2s-encryption | |
Security/encryption (client-side, c2s) | SASL, TLS, SSL on separate port (deprecated) | SASL, STARTTLS, SSL on separate port is also possible (but deprecated) | SASL, STARTTLS | SASL, STARTTLS, SSL on separate port is also possible (but deprecated) | SSL on separate port (deprecated) | SSL on separate port (deprecated) | |
Web client | possible with Flash (XIFF API), JWChat tested by a few people | possible with JWChat (via http-polling), manual | not yet, missing a http polling/binding proxy or component that works with Jabberd 2. Could work with Punjab but this is not tested yet. | possible with JWChat addon | not yet (but can be embedded as a servlet using HTTP Merlin facility) | not possible | |
Tools | Smack (open source XMPP client library also developed by Jive Software) | ejabberdctl (show users, register new users, remove users, backup/restore database to/from files, reopen the log-files), some contributions on http://ejabberd.jabber.ru/contributions like ejabberdctl-extra, mod_chatcommands, webadmin-commands | not many tools available yet, support for service administration (jep-0133) is planned for version 2.1 | many tools available | none | none | |
Ease of use to install/administer |
|
|
Jabberd 2 is already included in many Linux distributions, manual installation should be straightforward (standard unix configuration/make/make install + DB setup). I'ts fairly well documented and works out-of-the-box |
|
installation is very easy (download merlin and type merlin-config http://www.dpml.net/ openim/configs/ openim-server-1.2.2.xml http://www.dpml.net/ openim/blocks/ openim-server-1.2.2.block) | installation should be easy, standard unix installation process | |
Administration utilities | web-based console | command line utility ejabberdctl, web-based interface, simple configuration file including help text, also have a look at the Tools section | few scripts on http://scriptrepo.jabberstudio.org | some scripts on http://scriptrepo.jabberstudio.org | JMX console via Merlin could be possible | none | |
Maintenance simpleness | easy because all data is stored in external databases, current binaries get replaced, database contents get upgraded with scripts | easy, read the release notes included in new versions if you install from source. Usually few manual changes are needed. Installation via distribution package system is even more easy. Database tables will be automatically upgraded (if changed) when the new ejabberd version is started. | new versions should install over the top, no database changes necessary, restart required | new versions should install over the top, data will be converted by the server if necessary, adaptions to the configuration may be required | easy | standard unix way, there are patches and cvs versions | |
Documentation | available | Installation and operation guide, ejabberd book | installation and administration guide | manual-pages, a lot of documents about administration and configuration, faqs, developer guide out of date | installation guide and some short tutorial | some faq | |
Packages for operating systems | Windows 2000/2003/XP, RedHat and Unices with tar.gz package | Binary installers for Windows and Linux, Debian/FreeBSD/Ubuntu/..., Complete list of packages | RedHat, Gentoo, FreeBSD, Debian, PLD (Wiki page) | Debian, Gentoo, Redhat Source RPMs, Mandrake, OpenBSD, Solaris 2.6, Solaris 7, Solaris 8, Windows2000/2003/XP, Windows/Cygwin | no packages available, merlin can be used to handle a binary version of the application | no update yet |
Section: Basic - Medium - Advanced
Feature | 1. Wildfire | 2. ejabberd | 3. Jabberd 2 | 4. Jabberd 1.4 | 5. OpenIM | 6. WPJabber | Description / Example |
---|---|---|---|---|---|---|---|
Flexibility |
|
|
|
|
|
|
Example for ejabberd update while the daemon is running: a translation can be added to the server without reloading or restarting ejabberd. This is very interesting for systems that can't be putted offline for software updates (air traffic control systems or telephone exchanges for example) |
Protocol-standards compatibility (XMPP Core, XMPP IM) | not fully compatible:
|
fully compatible | not fully compatible:
|
not fully compatible:
|
not fully compatible, supported features are message, presence, roster, subscription, vCard, offline storage, oob (lan file transfer), browse and search | not fully compatible:
|
|
IPv6 | possible (but not tested) | possible | possible | possible | possible | not possible | |
Data stores | storage, auth and user info data can be stored in databases
|
only authentication data and vCards can be taken from LDAP with modules, default data is stored in Mnesia (distributed, fault-tolerant database of Erlang), ODBC data storage support (possible to use relational database storage), PostgreSQL | storage and auth data can be stored on different depositions with special modules, it is possible to create an own auth plugin.
|
storage and auth data can be stored on different depositions with special modules, storage and auth data are both handled by XDB so any XDB module can be used
|
storage and auth data can be stored on different depositions
|
storage and auth data can be stored on different depositions with special modules, storage and auth data are both handled by XDB so any XDB module can be used, not all modules are available for WPJabber (needs to be ported) | Example: Jabberd 1.4 can authenticate against LDAP, use the rosters in MySQL and store the vCards as files |
MySQL storage | supported | should be possible, but not tested | contained in base package | supported | via hibernate (experimental) and JDBC | MySQL storage possible with jabberd 1.4 as background server, xdb_sql could be wrapped into a Jabberd 1.4 and used with WPJabber (like a transport), but this needs Jabberd 1.4 because JCR has no XDB support. | |
Virtual host support | not possible yet | enhanced virtual hosting possible | possible, but only one SSL certificate per socket can be used (limitation of the SSL protocol), same for STARTTLS | possible, virtual hosting for SSL possible using STARTTLS | not possible | possible, but only one SSL certificate per socket can be used (limitation of the SSL protocol) | Description: multiple hostnames/domains on a single IP address |
XML-Namespace handling | very good | not so good yet | very good | very good | very good | not so good yet | |
Browsing (deprecated, JEP-0011) | not possible | not possible | possible, it has to be activated manually | possible | possible | possible | Note: Browsing is deprecated in favor of service discovery |
Discovery (JEP-0030) | possible | possible | possible | possible | possible | possible | |
HTTP-polling (JEP-0025) | not supported | possible via built-in module | possible | possible | possible | possible | Note: HTTP-polling is possible with every server using Tonneru |
HTTP-binding (JEP-0124) | not supported out of the box, external component that works like a proxy can be used for HTTP-binding (PunJab) | not possible out of the box, external component that works like a proxy can be used for HTTP-binding (PunJab) | not possible out of the box, external component that works like a proxy can be used for HTTP-binding (PunJab) | not yet, planned for version 1.4.5, external component that works like a proxy can be used for HTTP-binding (PunJab) | not in current bin distribution but easy to setup, also possible with external component that works like a proxy (PunJab) | not possible out of the box, external component that works like a proxy can be used for HTTP-binding (PunJab) | |
Accounting (statistics/reporting stuff) | possible (basic stats available, no complex recording backend yet), also with an external tool (V2Stats, commercial product) | support for Statistics Gathering, Statistics are also available in the web interface, also see contribution http://ejabberd.jabber.ru/mod_stats2file | not possible | some accounting possible (amount of messages, presences and iqs can get logged) | possible | possible | |
Authentication methods (client-side, c2s) |
|
|
|
|
|
|
Description: Possible are Non-SASL (JEP-0078) and SASL (XMPP-Core) |
Migration (one server to another) | possible because of open database schema, migration tools have to be written oneself at the moment | Migration from jabberd 1.4, Migration from jabberd2, Migration from WPJabber (with jabberd14) | migration of passwords and rosters from Jabberd 1.4 is possible, there is also a migration script available on http://scriptrepo.jabberstudio.org | migration (any storage) from Jabberd 1.4 to Jabberd 2 is possible with a script which is distributed with Jabberd 2, migration from Jabberd 2 to Jabberd 1.4 is possible with a special script from Matthias | not possible | possible, the directories have to be converted, there is a tool to do this convertion to wpjabber | |
User management | possible | possible via web interface, ejabberdctl (command line tool), Tkabber | planned for version 2.1 (via client, JEP-0050) | planned (management per client with admin-user) for version 1.4.5 | nothing dedicaded | none | |
Debugging | possible, can be changed without restart at the administration webconsole | very verbose debugging possible (maybe not usable for everyone), recompile and restart necessary to enable / disable debugging | possible, compiling with --enable-debug and running with -D necessary, debugging can be enabled individually for each component but the server has to be restarted, the usual C debugging tools can be used (gdb, etc.) | possible with command line parameter (-D) or configuration setting, configuration setting can be changed without restart | possible, log debug levels can be configured and jvm debug feature can be used, server has to be restarted | no update yet | |
Welcome and auto-reply messages | not possible | welcome message is possible (messages to server-jid will be dropped) | welcome message possible, auto-reply messages not possible | both can be configured in the configuration file with additional languages, an XMPP compatible client will display the appropriate version | possible with small coding addition | no update yet | |
Examples of live environment | over 1000 concurrent users in several production environments, tested to support around 5000 concurrent users | mxit.co.za, about 23000 users maximum online (test environment with benchmark tools had 29000 concurrent users), Known ejabberd Servers Page for more examples | mxit.co.za, 9000 concurrent online users reported | amessage.info, almost 2000 users maximum online, about 3500 users per day | jabber.open-im.net, almost 50 users maximun online, about 20 users per day; there are corporate environments with more users | jabber.wp.pl, almost 50.000 users maximum online during tests, about 20.000 users per day |
Ideas:
Changelog:
Copyright (c) 2004 Frank Niedermann. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available on http://www.gnu.org/copyleft/fdl.html.