I’m sure you have noticed that there hasn’t been an update to Monal in almost a year. I’ve been incredibly busy and haven’t had the free time to work on this project.  Development has restarted again and  I hope to put out an update soon.  There are certain things that I will focus on in this next update and depending how it goes may be one of the biggest updates since Monal 2.

Code Modernization

Much of the Monal code was written for iOS 2 in 2008.  I have adapated it to work with changes in recent updates but it is in severe need of a clean up.  Part of my hesitance to adopt every new feature has been to support older OS versions.  I have decided to focus on iOS 9 and up.   This will reduce the scope of work, testing, and allow quicker changes.


I never adopted storyboards when they came out in iOS6.  Storyboards do a lot of nice things for you but they have certain downsides for code reuse.  Apple has done a lot to improve it in the last half decade, and for graphically simple Apps like Monal however, they are perfect.  Using a storyboard to handle the presentation will allow me to focus on the backend XMPP code more than fiddling with the UI for various screen sizes.

Multi tasking

Storyboards will allow me to quickly deploy side by side multi tasking that came with iOS9. This is even more important now because of multitasking changes in iOS10.

The VoIP socket I used to multitask is deprecated and appears to be done. I will be deploying a server on AWS to handle APNS push notifications.  This will require adding push modules to your XMPP server  but should have much better reliability than the older approach — one of the reasons apple got rid of it after 6 years.  This is also one of the primary source of crashes in the App.

XMPP Parser

There as a bunch of bugs in my XMPP parser. PArt of the reason for that is I do not use the streaming parser introduced in iOS5. This is much further along the way but will likely result in a major rewrite of the XMPP code.

Continuous Integration

The improvement to Xcode Server in Xcode 9 means that I can reliably run tests now on commit.  I am setting up Prosody, Openfire and jabberd servers that I can test all the basic XMPP functanility on with every commit. This should reduce surprises post release.


4 thoughts on “I’m back”

  1. Awesome! Please let me know if I can help you out financially, regarding the AWS instance for example.
    Do you know whether push notifications will work even if the user closes the app?

    1. Will do. I will probably set up some sort of community funding mechanism for the push server so that monal can be free. With APNS, it will continue to work until you actually go back in the client and log out. It will behave more like iMessage than XMPP. Its a bit of paradigm shift but I guess the persistent connection is not now people expect apps work in 2017 so we are just going to have to adapt.

Comments are closed.