Skip to content

MongooseIM history

2011: Fork of ejabberd

MongooseIM's birthplace is a private Erlang Solutions' branch of ProcessOne's ejabberd - an XMPP/Jabber server written in Erlang. What would later become a leading, highly customisable and scalable XMPP platform, originated in a strong idea - storing all internal strings in binaries instead of lists, among other significant improvements.

The change was introduced in 0.1.0 proto-MongooseIM release and 3.0.0-alpha-X series of ejabberd. This opened the door for achieving higher performance, lower latency and introducing other subsequent improvements building up to a platform we are truly proud of.

Initial differences from the parent project

This project began its life as a fork of ejabberd v.2.1.8, and later underwent major cleanup, refactoring and optimization:

  • Bringing the project source tree to compliance with OTP project structure recommendations
  • Swapping autotools for the Erlang community-standard build tool rebar
  • Removal of obsolete and/or rarely used modules to reduce maintenance burden
  • Reduction of runtime memory consumption by refactoring the code to use Erlang's binary data type for string manipulation and storage instead of operating on linked lists of characters
  • Functional test coverage of the system according to corresponding RFCs and XEPs

2012-2015: Fully independent project growing fast

The next steps were achieving full OTP and rebar compliance, removal of obsolete and/or rarely used modules, reduction of the runtime memory consumption and functional test coverage. MongooseIM 1.0.0 was released on July 10th of 2012.

MongooseIM XMPP server fully independently went through multiple versions, following its own path with its own resources: 1.1.x in 2012, 1.2.x in 2013, 1.3.x, 1.4.x, 1.5.x in 2014, and 1.6.x in 2015.

2016: Pivot to fullstack messaging platform

MongooseIM Platform appeared in 2016, with the release of MongooseIM XMPP server 2.0.0.

The MongooseIM platform components were:

  • MongooseIM XMPP server, featuring a unique REST API for client developers and MUC light
  • WombatOAM, for monitoring and operations
  • escalus, an Erlang XMPP client for test automation
  • amoc, for load generation
  • Smack for Android in Java (third party)
  • XMPPFramework for iOS in Objective-C (third party)
  • Retrofit by Square for Android in Java (third party)
  • Jayme by Inaka for iOS in Swift

2017: Platform expansion and strengthening

We also introduced some MongooseIM platform components that are independent of the XMPP server. So far the list includes:

  • Mangosta iOS
  • Mangosta Android
  • MongoosePush
  • MongooseICE

2018-2019: Planetary architecture, to welcome IoT-scale and chatbots

The next step on our journey with the MongooseIM platform is to enable building planetary scale architectures. This is necessary to welcome the massive influx of users that come with a full stack IoT and chatbot solution. The ability to connect robots and humans is the requirement of the next technological breakthrough.

Erlang Solution's goal is to utilise XMPP features suited for chatbots, and build open standards for completeness of solution.