The road to ejabberd 3
In this article, we would like to explain and share details on the mid-term and long term roadmap to ejabberd.
What’s up with ejabberd 3?
ejabberd 3 has been in preparation for a long time now. The reason we are taking our time to reach that milestone is that we are actually trying several approaches in production systems to validate our assumptions and our improvements. ejabberd is deployed in thousands of companies and run critical services. Upgrading to this new version should bring benefit in all cases to make the upgrade effort worth it. We were not totally happy with the initial result of ejabberd 3, so we kept it in the work, exploring new visions. It means that ejabberd will not look like the current master branch in our code repository, and this is for good. We have one of the longest and largest experience in the world on building scalable XMPP system and we wanted to take the time to reflect that experience in future ejabberd versions.
The second reason why we took our time is that we are changing our internal ejabberd architecture to allow us to manage more easily our dual versions, open source and commercial ones. This business model is commonly known among open source companies. Since many years now, we have been offering an open source version to the community along with a commercial version. However, in the current state of ejabberd, it was difficult to manage both in parallel. The new architecture will be more modular and it will be easier to handle different code to handle different behaviors or feature in ejabberd.
So, what can you expect in ejabberd 3?
Here is a few things you will find in the next release of ejabberd:
- Memory optimization: we have reduced memory consumption. That means more scalability.
- Architecture change: ejabberd is more modular, especially for the largest module.
- Web oriented module for web chat, including rewritten Bosh module and websockets support.
- Cleaner code for better readability and homogeneity across modules.
- Refactoring for I/O optimisations.
- New XEP implementation / helper modules.
The commercial version will add much more to this, for deployment where scalability and flexibility matters:
- Large scale cluster engine, to make ejabberd support even more massive deployments.
- Mobile stack including mobile reliability, fast reconnect, Apple push notification support.
- Improved and clusterable Multi-User Chat.
- Flexible PubSub: XMPP PubSub is a huge spec that needs to be tuned depending on your use case, if you need performance. A flexible PubSub module can more easily be tuned and thus can give more performance in real life usage.
- Gateways to legacy networks.
- Monitoring and statistics framework.
- Provisioning kit: API to integrate ejabberd with other services.
- And many more features that are expected to come in 3.x like NoSQL alternative backends.
When will it be ready?
We want to make sure the new architecture allows smooth transition to ejabberd 3. For that reason we’ll focus all our efforts and won’t apply other changes to ejabberd 2.1.x except critical fixes. We expect the transition work to be ready in October 2012.
However, the good news is that commercial ejabberd 3 is available on the 15th of June 2012 for customers that want to benefit from today’s improvements.
Credits: Photo Take the straight road by Arnar Valdimarsson.