Set up a new prosody server at xmpp.monal.im today. The DNS is still propagating but it should be up everywhere soon. SSL certs via lets encrypt. If want to add me, I am firstname.lastname@example.org . This doubles as the push server right now as well, where I hope to test APNS.
I am looking for testers for Monal 3 on iOS. Specifically I am looking for users with access to an XMPP server with push support. If you are interested, email me email@example.com .
If you look at the top of some files you will notice the year they were made is 2008. I realized today that come the new year, it will be 10 years since I began to write Monal (then called SworIM). All of this came up after a conversation at brunch one day with my brother about how our fancy new iPhone 3G didn’t have a better messaging ability and the only way we could message was by email. We could use text but SMS cost money in those days.
Back in the magical year of 2008, the iPhone was on its first iteration. iPhone OS 2 was coming out (it wasn’t called iOS until later). iMessage was not going to be a thing for at least 3 more years, whats app didn’t exist. Push notifications didn’t exist and there were no 3rd party multi tasking capabilities on the iPhone. In fact, the most popular messaging client was AIM, which stupidly disconnected every time you closed the app. Initially Monal supported both AIM and XMPP because people (including myself) used AIM a ton back then.
Much of the code for Monal is actually based on the API introduced in iOS4. With the removal of VOIP sockets, it looks like APNS push and side by side multi tasking (iPad) is the only way that Monal will multitask going forward. Additionally, I going to focus on keeping the code as modern as possible. I have been very conservative with changes to support as many older iOS versions as possible, the App Store has the ability to retrieve the last compatible version now so older OS versions will still have a functioning client. This should improve stability and make changes easier. Additionally, iOS updates do not cost money anymore so its not unreasonable to expect everyone to update.
In fact, there are some screens that are exactly the same from 10 years ago.
Something that’s been long over due is a new icon. I’ve been tinkering with the idea for a while and decided to try it out yesterday. This is the first iteration on the new icon. I would love feedback — esp since I made it myself based on vectors of the old one, so it’s hardly the most professional looking thing. The SVG is here is you want to play with it. I think we can all agree the new icon looks better in the post iOS 7 world.
I’m currently working on a feature branch that will be merged into develop when complete. If you are curious to see whats going on look here:
The storyboard board migration is almost complete and with that side by side multi tasking. For iPad users, this should be a major improvement. Additionally, dropbox and google login broke due to changes in the API. I am working on restoring both of those as well. Google for iOS is almost complete and will be followed by OSX soon .
I am currently testing side by side :
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.
I updated Monal after the 2.9.2 release to work again in the background. It appears that Apple has not just deprecated but removed the VOIP socket that Monal has used since iOS4 to run in the background. For the time being I am going to build with the iOS 9 SDK and things will continue to work. However the point where that is not a valid option will arrive at some time. When that does happen Monal for iOS will move to using an APNS notification and the XMPP push mechanism. Google talk will likely no longer work.
Xcode 8 and iOS 10 have introduced a change that breaks a deprecated feature Monal uses to maintain connectivity. Do not update to 2.9.2, the app does not run in the background anymore. I will submit a build soon that will hopefully get the app working again.
If you are eager to test out the new image handling, check out the new beta for OS X . I have made this an opt in only feature for now. To get inline image support, go to preferences -> display and check the option for inline images. While you are testing this, try out drag and drop to the text field and markup (the little arrow in the upper right of the image when you attach it). Clicking an image in chat will bring up preview and you can use the export button to send that image anywhere you want. Animated gifs are not animated in the thread (yet) but will be when you click them.
I had a few spare minutes today, so I decided to finish support for inline images in chat in the OS X client. Most of this will come to the iOS client as well. It does not yet support the privacy setting to disable checking the HTTP head of every link to identify an image but beyond that it is mostly done. I also added support to OS X’s quick look as well as markup for images that can now be dragged into the text field before uploading.
For those who are interested in the collaborative effort to have a standard modern encryption scheme on the major mobile and desktop clients. You can see where things are for Monal and Chatsecure at the github issue.