[ejabberd] ejabberd 16.02: Happy Leap Day

Jérôme Sautret jerome.sautret at process-one.net
Mon Feb 29 21:03:07 MSK 2016

To celebrate leap day, we are happy to release ejabberd 16.02, which
mark huge leap for ejabberd both in terms of features and

In terms of features, we see in this release the culmination of our
work in several areas:
– Support for flexible offline retrieval, aka XEP-0013
(http://www.xmpp.org/extensions/xep-0013.html). This is a big win for
mobile developers.
– Improvements on archiving, with Message Archive Management (MAM) now
supporting version 0.4.1 of the specifications.
– Full Elixir compliant packaging with the ability to deploy ejabberd
as an Hex.pm dependency from your own application. See ejabberd on
hex.pm: https://hex.pm/packages/ejabberd
– Performance improvement with faster and more memory efficient XML
parsing and TLS encryption.
– Better stream compression with the ability to enable stream
compression after SASL.
– Easier adoption of ejabberd with a new migration script from Prosody
XMPP servers.

As usual, this version is the product of a great community team work,
with special kudos to Holger, Alexey, Evgeny, Pawel, Christophe,
Badlop, Mickaël for their large contributions in this release.

That community effort is what makes ejabberd is such a popular
project, with 2260+ stars on Github, availability in most Linux
distributions and showing amazing number of downloads! Thank you all!

Here is the full list of changes:

* Changes

** New XMPP Extensions support

- New Flexible Offline Message Retrieval (XEP-0013) support

** Admin
- New migration script from Prosody to ejabberd
- Fix –disable-debug compilation flag
- don’t escape ERL_OPTIONS
- Two new global timeouts configurable: c2s_hibernate, receiver_hibernate
- Make it possible to define ‘sm_db_type’ per virtual host
- configuration checker: Describe option type in code for
‘domain_balancing’ option
- Log failed SQL requests
- Include mod_muc.hrl and fix records
- mod_http_upload: Expand ‘docroot’ before using it, also expand @HOST@

** Commands

- New import_prosody command
- Start documenting arguments in mod_admin_extra commands
- We added a way to get all ejabberd_commands, not only those that was
- Allow to pass \n in argument to ejabberdctl
- Add error handling to send_stanza
- Fix format_result so get_room_options command works again after
commit reference aa5caa3

** Dependencies

- lager is the default (and only) logging module and we removed p1_logger
- Handle spaces in vsn attribute of app file when installing deps
- Renamed dependencies and modules for consistency but also to reflect
huge performance gains:
. p1_iconv -> iconv
. p1_stringprep -> stringprep
. p1_stun -> stun
. p1_tls -> fast_tls
. p1_yaml -> fast_yaml
. p1_zlib -> ezlib

** Message Archive Management

- Advertise MUC MAM v0.4.1 in room JID’s disco#info
- Add “delete_old_mam_messages” admin command
- Add ‘from’ attribute to tag
- Add “request_activates_archiving” option
- Respond to form requests
- Support XEP-0313 v0.2 MUC archive queries
- Check whether MUC message is desired
- Reject -based paging
- Limit result set page size
- Sort messages returned by Mnesia
- Strip existing JID tags from MUC messages
- Expose MUC occupant JID in more cases
- Don’t let outcasts access MUC archive
- Send new preferences when they are set
- Stream management (XEP-0198): Let MAM take care of pending messages

** GroupChat

- Send presence with code 170 in initial presence from MUC
- Add most status codes only to initial MUC presence
- mod_muc_room: Don’t expose JIDs in anonymous rooms
- mod_muc_room: Let members see admin/owner JIDs

** PubSub

- Fix presence-based delivery
- Make caps warning less confusing
- Fix host/serverhost usage
- Add support of pubsub#itemreply=publisher

** Other

- Accept stream compression request after SASL
- Make C2S session establishment optional to better conform to XMPP
specifications and still be friendly with older clients.
- MUC: new regexp_room_id option to limit possible room names.
- ODBC: Set utf8mb4 charset on MySQL connection to support emoji
storage as default.
- LDAP: Improve LDAP shared roster support.
- mod_register_web: Allow setting host when deleting account or
changing password.
- Rename timestamp_to_iso functions in jlib.
- Stream management (XEP-0198): Fix session timeout corner case.
- Several improvements in Elixir support.
- Updated many translations.
- Improve web admin stylesheet to fix rendering issues in some browsers.

** Packaging

- ejabberd is now available as an hex.pm package and can be easily
included as a dependency in any Elixir or Erlang application.
- Installers include latest OpenSSL patches.

* Feedback

As usual, the release is tagged in the Git source code repository on Github:

The source package and binary installers are available at ProcessOne:

If you suspect that you’ve found a bug, please search or fill a bug
report on Github:

More information about the ejabberd mailing list