And here is Moxl! The new Movim’s XMPP library

It has been several weeks in intensive development, and now Moxl (Movim XMPP Library) the new XMPP library that will replace Jaxl is merged into Movim’s development branch and will be released with the next version.

Why develop yet another XMPP library?

Movim has specific needs and Jaxl didn’t provide for some of them. Jaxl was conceived as a standalone framework that works in a synchronous fashion with a heavy javascript part whereas Movim is asynchronous and has a heavy and complex server-side. Jaxl is also very complex and difficult to maintain, much of the code provides unnecessary modularity and dirty hacks were needed to link it with Movim.

Example: The requirement to parse for a second time each packet received by Jaxl to extract informations while keeping the structure, the base parser “putting flat” all packet informations.

The Jaxl complexity was heaving performances and code size (almost 65% of Movim), causing serious delays on small machines moderately stressed. The last major defect was related to the integration with Movim: sessions.

For instance, interfacing Movim’s sessions with Jaxl’s relied on very dirty glue code that created a maze of callbacks and exceptions so that Movim could be synchronised with Jaxl’s status and vice versa.

Moxl cleans this all up

The Jabber class that previously glued Jaxl and Movim has disappeared altogether. The sessions system could be cleaned up and simplified further. We now only have a single session managed by Movim instead of two, which means that when the XMPP session is disconnected, so will the web session.

Moxl features a powerful events system called XEC (XMPP Events Controller) that lets it smartly route communication packages and thus simulate a stateful system. You can find XEC’s documentation online.

Moxl lets Movim connect to existing XMPP accounts

Thanks to Moxl, Movim can now connect to an existing XMPP account straight through. There is no need for a web-server side registration any more, and thus Movim does not store user account details, leaving this responsibility to the XMPP server and preventing data leaks. The project’s documentation is online and you can find the project’s code on Launchpad.

What of its support in Movim?

Testing of Moxl happens within Movim. Therefore the library is entirely supported by the social network only 2.5 weeks after the development started. Movim on Moxl has already reached the same feature level as Movim 0.5 but with a much cleaner and maintainable code. It is furthermore possible to connect to a large variety of accounts and to connect without first registering on the web interface.

Conclusion

Moxl give a boost to Movim and accelerate its development by simplifying the code and provide easier error management. This also benefits the user with more granular error messages to take better decisions. With Movim 0.5, when an XMPP error happened, Movim just skipped it, Jaxl didn’t provide error reports.

Porting Movim to the new library took only 2 weeks, thus it is realistic to expect a new release with only Moxl by the end of the year.

 

4 thoughts on “And here is Moxl! The new Movim’s XMPP library

  1. I think you guys didn’t gave Jaxl v3.x (https://github.com/abhinavsingh/JAXL/tree/v3.x/) a try which not only have addressed and fixed all the issues listed above (from Jaxl v2.x) but also provide a lot more convenience when it comes to writing networking applications in PHP (XMPP or HTTP). For example here (https://github.com/abhinavsingh/JAXL/tree/v3.x/examples/xmpp_rest.php) in 10 lines of PHP code an example demonstrate how to write an HTTP REST interface to your XMPP clients. Jaxl v3.x also have an exhaustive documentation http://jaxl.readthedocs.org and follows a very modular/OOP’s based approach now.

    Having said that I can understand the urge of writing your own XMPP library for your own custom needs and use case. All the best with Moxl

  2. hello
    PLEASE help me! i wan to install movim on my host, how can i this!??
    i tried to install movim on my host, but i don’t known whats XMPP
    server address and BOSH server address!!!?
    can you help me please?

    thank you

  3. This is one of the hardest social network scripts to install. I try 20 times and i cant make it work.
    Do something more easy to install!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>