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.
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.
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.
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.
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.