This post provides information on current status of mod_archive2 development: rewritten version of ejabberd module supporting history archiving standard XEP-136.
UPDATE 2013.12.14: because ejabberd 3.x branch was dropped, mod_archive2 was changed to support ejabberd 2.x, so all references to ejabberd 3.x in this blog post or its comments are no longer relevant. Note that you need to have exmpp library installed in order to compile mod_archive2. Also note that ejabberd 13.x branch is currently not supported, and I don’t have any immediate plans to support it. On the brighter side, the code was updated to support all latest features added to the standard, like stream-level control over auto recording settings, plus support for full message storage was added.
mod_archive2 is a new version of ejabberd history archiving module supporting XEP-136 standard. It is loosely based on mod_archive_odbc.
Main design goals of mod_archive2 are:
- Support ejabberd 3.x exmpp-based series.
- Provide unified support for both Mnesia-based storage and RDBMSes.
- Support current version of XEP-136 with all enhancements added there after mod_archive_odbc release.
- Improve standard conformity for already present features compared to what mod_archive_odbc had.
- Fix several important bugs/shortcomings, such as collections expiration problems.
- Proper automated module testing.
So far I consider all these goals met. Current test coverage is around 92% of all source lines.
- The module is not yet ready for production usage! (as well as ejabberd 3.x itself)
- No tests were performed other than automated ones: it’s currently unknown how well it behaves with real-world usage patterns, real-world messages and database sizes, etc.
- There’s currently no way to migrate databases from mod_archive_odbc to mod_archive2.
These shortcomings are going to be addressed as soon as ejabberd 3.x matures enough so that I consider using it for my own server, and hence face the need to migrate database/use it in real-world scenarios.
Current mod_archive2 sources are available at github. Note that the primary git repository is hosted on my private server, so github one is going to be used only to push releases/snapshots there.
Comments/suggestions/bug-reports are welcome!
Bug-reports in the form of failed test case + patch to fix it are preferred