Erlang

MongooseIM 2.0.0beta1 is out! Explore the new features

2016-07-05 by Michał Piotrowski

MongooseIM 2.0.0beta1: strong mobile focus

We are proud to present the latest step on our road to the MongooseIM 2.0.0 release. Enjoy MongooseIM 2.0.0beta1 - now available on GitHub, and see the scope of changes that made us jump to 2.0.0.

What's new

MongooseIM 2.0 is about new features. We added support for several XEPs and we created our own open extensions to the XMPP protocol developed as solutions to customer problems.

New XMPP extensions

Publish Subscribe for real-time non-chat applications

Over the last year or more, many customers required the XEP-0060: Publish Subscribe extension. We decided to restore the support for it along with XEP-0163: Personal Eventing Protocol. This opens doors for many use cases which were hard to achieve before. It is now possible to seamlessly integrate MongooseIM with services such as Movim or other micro blogging engines based on XMPP. More generally, it opens a wide range of possibilities in the real-time application space.

Blocking Command for enhanced and simpler privacy enforcement

In many cases XEP-0191: Blocking Command (which is simpler version of XEP-0016: Privacy Lists) does the required job which is blocking a communication with specified users. These two functionalities do not exclude each other, so it is still possible to have more sophisticated privacy settings when required. The added support for this extension makes the life of a client side developer significantly easier.

Client State Indications for bandwidth and battery savings

The XEP-0352: Client State Indication is a very important extension for mobile clients. It allows the application to notify the server that from now on it is in an inactive state. The server then reduces the amount of data sent to the user which lowers the battery and bandwidth consumption.

Innovative extensions

MUC light for contemporary and simpler group chats

For over 2 years now we noticed that mobile-first and mobile-only approaches in application development are the most popular. For the majority of our customers the current MUC as described in XEP-0045: Multi-User Chat was too big and too focused on presence, so they had to invent workarounds.

This is why we came up with a simpler, presence-less version of MUC: "MUC light". When the user goes offline, the user automatically leaves the MUC room, but stays subscribed to the MUC light room. When back online, the user must automatically re-join the MUC room in order to receive the latest messages (potentially losing some of them), while, using the MUC light room feature, it is a matter of only retrieving a message archive (no message loss).

We believe this is a good step towards making a group chat more straightforward and up-to-date from both client developer’s and user’s perspective. There is already some traction and support for the MUC light.

Token-based authentication

Mobile clients (and some laptops with wifi) can lose the connection more often than desktop clients. In such cases it is required to quickly reconnect (including re-authentication) the client when Internet connectivity is back. One way of doing this is to store user's password on the device and use it while reconnecting. This is not the most secure solution. In order to avoid the password storage on the device we propose a new authentication mechanism based on tokens obtained from the server. More info is available here

Other changes and improvements

Parallelised tests

As a team we always think about how to test what we create and how to improve existing tests. Adding new test cases may have its downfalls, especially when you want feedback quickly or you run on a public infra like travis-ci.org and you are closing the max allowed job time (which is around 50 min). In order to optimise we decided to rewrite many of our test suites to run test cases in parallel. This shortens a single job execution significantly but there is still room for further optimisations which we're going to do.

Many more valuable improvements

There is also many other smaller and bigger improvements. All of them can be found in the changelog.

Mobile libraries with feature parity to faster time-to-market

Over the last couple of months, we have significantly contributed to third party, opensource XMPP libraries. We are targeting Android and iOS, respectively with Smack and XMPPframework. Basically, we are offering feature parity with MongooseIM. This enables mobile apps developer and sysadmin to develop and integrate MongooseIM features much faster and more easily in their apps.

Movim, real-time social media over PubSub

We have had a lot of fun playing with Movim on top of MongooseIM, in order to test a decentralised social media network, working over PubSub. We have contributed a Docker image to the project.

Thanks

Many thanks to our contributors: @zsuidakra, @arkdro, @bernardd, @kshamko.

Many thanks to Florian Schmaus (@Flowdalic), Chris Ballinger (@chrisballinger), and Timothée Jaussoin (@edhelas) for their kindness, availability, openness, support, and guidance.

Next step

We will release a 2.0.0beta2 in the coming weeks, adding even more value to MongooseIM, enabling you to significantly lower costs and time-to-market. Stay tuned.

Meanwhile, get our fresh news: subscribe our announcement mailing list.

Go back to the blog

×

Request more information:

* Denotes required
×

Thank you for your message

We sent you a confirmation email to let you know we received it. One of our colleagues will get in touch shortly.
Have a nice day!