ejabberd Community Server 13.03 is launched in beta

ejabberd_community

We are announcing two major changes in ejabberd development today:

  • a new version of ejabberd, called ejabberd Community Server (eCS), as opposed to ejabberd Business Edition (eBE)
  • a change in version numbering, and thus our workflow

 

Both ejabberd editions are targeting different goals and audience:

  • ejabberd Community Server is open source code, in an effort lead by ProcessOne as always, and supported by contributions coming from all horizons. The project is community driven and focus on the kind of features, innovations and experiments that are expected from an open source project
  • ejabberd Business Edition 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

ejabberd Community Server

ejabberd Community Server, released today in beta, provides huge improvements regarding performance and memory consumption. It will be an excellent basis to accelerate the community development effort. This release switches internal representation of data from list to binary to reduce memory consumption, all over ejabberd code.

For those interested in technical details, ejabberd started its existence using list to represent string, as it was the available approach at this time. It was causing increased memory consumption, but at that time there was also other limiting factors on less powerful servers (like CPU consumption use by the TCP/IP connections themselves).

Erlang now allows the use of binaries, which reduces the memory consumption, but ejabberd didn’t adopt this solution yet because it involved many changes in the code. That major change was delayed for ejabberd 3.0.0-alpha attempt, which used the new exmpp library and binary representation. However, the switch to exmpp library involved not only a major representation change, but also an enormous major and unnecessary API rewrite; not only in ejabberd core, but also in all the modules and all the contributed modules. So, we stepped back to use a more adequate method and the usage of exmpp in ejabberd internals has been deprecated.

There is a new ejabberd master branch, which comes from taking the good 2.1.12 and converting it from using strings to binaries. No other major changes. Simple and concrete. This is just performance improvements and internal changes that makes it possible for the community to happily build the next features.

New versioning scheme

Along with this new release comes a new versioning scheme. Ten years ago, ejabberd 0.1-alpha was released. Three years later, ejabberd 1.0.0 appeared with full XMPP compliance. And two years later, ejabberd 2.0.0. And after two more years, ejabberd 2.1.0.

Those major releases included big and small features, improvements and bugfixes just like the periodic minor releases. They never introduced unstability or major API changes: they were numbered as major versions only because it was time to increase the version number. In practice, improvements and bugfixes are introduced as they are available, efficient and stable, without considering if it’s a major or minor release.

The problem we had is that we had been referring internally to ejabberd3 as the commercial version. ejabberd community server was akwardly stuck in a 2.x version numbering.

To solve that problem, we decided to switch to an Ubuntu-like version numbering for ejabberd community server. The next releases will be numbered as “Year.Month-Revision”, instead of “Major.Minor.Bugfix-Revision”. It will reflect more precisely how we work. You can thus expect a change in our worfklow and more interim stable releases in the future.

In conclusion, three years after the last major ejabberd release, we are pleased to announce ejabberd 13.03-beta1 and we are sure you will all love the changes.

 

Where to find the source code

You can find it in usual places:

  • Code source is developed on ProcessOne Github account: ejabberd on Github. If you had the old master branch, please, delete it to avoid git pull problems (as it has been moved).

Please, do not hesitate to watch, star, clone the repository on Github.


Let us know what you think 💬


9 thoughts on “ejabberd Community Server 13.03 is launched in beta

  1. Great News.

    It seems that you’ve done more thant just binaries:
    – you’ve also switched from plain xmlelement tuple everywhere to xmlel records…
    – you’ve added typespecs()

    Thank you, good Work !

  2. wont compile on my system :(

    Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

    ~/src/ejabberd-13.03-beta1/src# make
    /usr/bin/erlc -W -DSSL40 -pa . -DNIF -DHAVE_MD2 cyrsasl.erl
    ./cyrsasl.erl:69: syntax error before: ‘,’
    ./cyrsasl.erl:70: bad attribute
    ./cyrsasl.erl:51: Warning: type props() is unused
    make: *** [cyrsasl.beam] Error 1

  3. Two questions:
    – is there a difference at the source code level between eCE and eBE ?
    – is there a difference in licensing terms between the two?

  4. Got the same compilation error

    root@precise64:/opt/ejabberd-13.03-beta1/src# make

    gcc -g -O2 -Wall

    expat_erl.c

    -lexpat

    -L/usr/lib/erlang/lib/erl_interface-3.7.5/lib -lerl_interface -lei

    -I/usr/lib/erlang/lib/erl_interface-3.7.5/include -I/usr/lib/erlang/usr/include -DSSL40

    -o expat_erl.so

    -fpic -shared

    /usr/bin/erlc -bber_bin +der +compact_bit_string +optimize +noobj XmppAddr.asn1

    /usr/bin/erlc -W -DSSL40 -pa . XmppAddr.erl

    /usr/bin/erlc -W -DSSL40 -pa . cyrsasl.erl

    ./cyrsasl.erl:69: syntax error before: ‘,’

    ./cyrsasl.erl:70: bad attribute

    ./cyrsasl.erl:51: Warning: type props() is unused

    make: *** [cyrsasl.beam] Error 1

Leave a Reply to Cory Radcliff Cancel Reply


This site uses Akismet to reduce spam. Learn how your comment data is processed.