iOS 3.7 Change list

The near final 3.7 beta should be going out to testers right now. This is what will change in the next release.

  1. Fixed OMEMO session creation errors on some servers
  2. Fixed performance with attachment downloading
  3. Fixed wrong/older image being shown in chat cells
  4. Added ability to set nick names on contacts
  5. Added a photo browser for conversation images
  6. Show full name and not JID on notifications
  7. Fixed bug that might cause duplication of sent messages
  8. Notifications now have image previews
  9. Fixed a bug that wrongly showed messages as failed to send
  10. Fixed a bug that didn’t update messages when retrying
  11. Reduced network and battery use
  12. Fixed a bug that caused a disconnect loop in certain network conditions

Why do I have so many accounts?

If you have talked to me on XMPP you will notice that I often switch accounts. I keep four active accounts, two accounts on two different server platforms each that I test with the most (Prosody and ejabberd). I am a big fan of dogfooding, as in using my own product to see where the pain points are for users. This is often what spurs me to go in and fix something seemingly random. It annoys me.

I originally stated the end goal of this app was to be a replacement for expensive SMS plans. That was a decade ago, I now want to have a respectable open source alternative to WhatsApp and Facebook Messenger. This current iteration of Monal will be “done” when someone can just tell their family and friends to contact them on Monal. You shouldn’t have to explain much else. If you do then there is something to fix. This often requires me to find a balance on default settings that preserve privacy but cause the least amount of friction for users. I know from experience (and a decade of metrics I’ve collected) that every additional screen in setup causes a a large drop off in users. Every additional exposure to the of the inner workings of XMPP (e.g. the roster, online/offline e.g.) causes people say this isn’t user friendly and drop off. If you are wondering what the product direction for Monal on iOS is, it is a balance between secure and private and simple. This may be infuriating at times to other people who are techies but bear with me, if we can get more people to use XMPP, it is better for everyone.

There are about 25,000 devices using the Monal push sever at the moment. The good news is there have been very few errors on the server and my AWS instances have been able to handle this traffic without problems. This also provides me with a lot of data points for the effectiveness of push. For most people it near 100% reliable. I am trying to nail down some issues with notifications. I think I have found issues on both prosody and ejabberd’s push modules and will file bugs to work with the developers. They are two different issues, prosody servers seem to send hundreds of extra pushes and will drain your battery (this is especially true if you have group chats, which is how I found this). The battery drain at times is pretty terrible. On an iPhone X it was using 20% of my battery at least and was running for 14 hrs in the background. Ejabberd in comparison uses maybe 1% battery in a day with a few min in the background. Interestingly the bug I have found in ejabberd is the opposite, occasionally, for example at night, when there is a prolonged period of inactivity, some pushes do not arrive and there isn’t a notification for the message.

If you want to help me test things out, feel free to send messages to any of these addresses:

My Prosody test accounts:

My Ejabberd test accounts:

Notification Names and Image Previews

As I’ve mentioned in the past, a focus of Monal development going forward is going to be improving the UI/UX. I have been thoroughly modernizing many components of the app that have been largely untouched for years. Notifications and image handling is one of them. This is how I added the aesgcm: encrypted link support as well as grouped notifications. Building on that, I have updated notifications to show a preview of the image (which is transparently decrypted in the background) as well as showing the senders name instead of the JID.

Progress on OMEMO and Push

There are several bug fixes coming in the next release. I have been working in improving OMEMO and i think I have identified the issue preventing some people from starting new sessions. I am also fixing performance issues in the image handling introduced by the aesgcm links. After those are resolved I will add support for sending aesgcm links for attachments. In the process of looking at performance I have noticed higher then expected battery use when connected to some prosody servers. I hope to work with the server side developers to figure out whats going on there. Generally speaking it appears to me to be due to push notifications sent for more than just new messages. I am also testing with ejabberd to see if there is a problem there as well. Genreally speaking though I believe that XEP-0357 that defines how this is supposed to work is flawed and needs to be updated. It is very trusting and does not give the actual app developer the ability to regulate pushes based on the capabilities of his app. A few minor changes to the specification would let us make something that can compete with the experience of proprietary chat clients.