yet another XMPP instant messenger

yaxim 0.9.9 - FOSDEM Edition

We are proud to present to you yaxim version 0.9.9 “FOSDEM 2020 Edition”. Many things have changed under the hood (reliable messaging with MAM and Push, new UI with runtime permissions), and some exciting new features like even easier onboarding, service browsing and Matrix support. Taken together, yaxim now fulfills the Core IM and the Advanced Mobile profiles of the XMPP Compliance Suite 2020.

yaxim 0.9.9 screenshot

Material Design

Starting with this version, yaxim follows Google’s “Material Design” style. To comply with last year’s strictened Google Play publishing requirements, we had to replace the deprecated ActionBarSherlock library with Google’s own appcompat, which provides the Material style.

This also means that yaxim now requires at least an Android 4.0 device. As 4.0 was released in 2011, this only affects a single-digit number of devices. Users with a ten years old phone need to stay with older yaxim versions, which run on Android 2.3+.

Furthermore, on Android 6+ devices, the user will be asked to grant permission at the moment when they are actually needed (i.e. when sharing a file or taking a photo).

runtime permissions screenshot

On Android 8+, the new notification channels are used by yaxim. A new channel will be created for each contact with a custom ringtone. Once you receive a message from such a contact, you need to use the Android notification settings to change the ringtone, though.

Even Easier Easy Onboarding

yaxim 0.9 introduced Easy XMPP, using the purely client-side XEP-0379: Pre-Authenticated Roster Subscription, which required a server with active In-Band Registration.

The new XEP-0401: Easy User Onboarding allows you to invite new users to your server without being abused by spammers.

Here, you can see a poezio user on a prosody server creating an invitation that is used by yaxim to register and auto-add the inviter:

The invitation page in the example is making use of Google Play Install Referrers to let the newly installed yaxim know the inviter’s address, which has a privacy impact, and therefore is not rolled out to the official landing page yet.

Chat Rooms

There is a new view of your (bookmarked) rooms and a browser of public rooms powered by search.jabber.network.

room search screenshot

Your nickname (“display name”) is now synchronized to the server using XEP-0172: User Nickname, and you can change it in the account settings.

Service Discovery and Matrix Support

The room browser can also be used to discover services by entering a valid XMPP address into the search field:

prosody.im search screenshot

prosody.im browser screenshot

prosody.im rooms screenshot

This is not limited to servers and rooms, you can also search for users, chat with them and add them to your contact list:

ge0rg search screenshot

While initially introduced as an April Fools’ Day joke, Matrix support (using the Bifröst bridge is now actually integrated into yaxim, using the official bridge on matrix.org, which has also been made ready for FOSDEM 2020.

Reliable Messaging

For users who are using yaxim in parallel to another client, the new support for XEP-0313: Message Archive Management (MAM) is good news. When connecting to the server, yaxim will now activate MAM and request all messages since the last synchronization. This will ensure that yaxim receives all messages which already were delivered to the other client.

Furthermore, when installed on devices with Google Play Services, yaxim will register for XEP-0357: Push Notifications via the push.yax.im server. This will ensure that the app is woken up from deep sleep or launched when somebody sends you a new message.

These important changes are also reflected in the app privacy policy.

Under the Hood Changes

The internal chat message database has been optimized by adding database indexes for all frequent operations, making yaxim much faster at loading chat windows with long histories.

Furthermore, yaxim was upgraded from the ancient Smack 3 to the Smack 4.3.x XMPP library.

Road to 1.0

This release brings significant changes, and we had hoped to be able to finalize even more to make a glamorous and exciting 1.0 release for the 10 years anniversary. However, the current code base brings some major improvements for reliability and usability and we did not want to hold them back even further.

More work is needed on the contacts view, to allow sorting by conversation age and to quickly search your contacts. Furthermore, the creation of rooms and inviting your friends into them need to be integrated.

MAM was long overdue, and for now only your private messages are queried for. Room history is still obtained using the legacy mechanism, meaning that sometimes, you might miss out on parts of room history.

The embedded image view does not have proper caching, and it will attempt to load any attachment, regardless its size and whether it can be displayed in yaxim. This needs to be restructured in a way that limits downloads to actual image files of a certain maximum size.