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.
- ejabberd page on ProcessOne website.