From Signal to Molly-FOSS and Unified Push

As you might know, I’m using the ‘Conversation’ XMPP based messenger app on Android and my Linux notebook for text, audio and video communication with friends and family. A federated self-hosted XMPP server keeps me independent from- and interconnected with others at the same time. And then there are friends and associates in a somewhat wider circle for whom it is not very appealing to use yet another messenger. Perhaps as unappealing as it is for me to use Whatsapp. But perhaps there is a middle ground?

Signal and its Reliance on Google

For me, that middle ground is Signal. The client app is open source, it is tailored around privacy, has a good reputation and is more mainstream than XMPP. And I use it with quite a few people. Apart from the closed source server, the one main shortcoming for me is that Signal requires Google’s Firebase Cloud Messaging (FCM) service. As I didn’t have any Google services installed on my LineageOS Android devices in the past, I always used Signal on a ‘burner’ device on which I had as little personal data as possible together with a number of other proprietary apps requiring Google services. From a psychological and free software point of view, Signal did not belong on that burner phone, but its FCM requirement didn’t leave me a choice. True, Signal can also be used without FCM, but in this case it establishes its own push connection to the server which is not optimized at all and sends keep-alive packets every few seconds. Totally unusable from a power consumption point of view.

Signal on GrapheneOS

Things started to change for me with GrapheneOS. As described in previous posts, I’ve created an Android Private Space on my smartphone in which I have all apps that require Google services. Nicely contained and separated from my personal data. My first idea was thus to perhaps migrate Signal from that ‘burner’ phone to the Private Space on GrapheneOS. This would probably have worked but would have had one major shortcoming: I like to lock my private space when not using any of the proprietary apps, which shuts down all of them, including the Google messaging service and, of course, Signal. It’s a feature and not a problem for all of these apps, apart from Signal, as it would also be terminated and could not show incoming messages until the point where I open the Private Space again.

But then I found Molly

But then, by a stroke of luck, I found Molly, and its sister Molly-FOSS. Molly is a fork of the open source Signal messenger and compatible with the official Signal server. In other words, I can use Molly to communicate with anyone using Signal. The advantage of Molly for me is that it implements a number of additional privacy enhancing features, including an interesting option to receive push notifications for incoming messages:

Instead of Google’s proprietary and centralized FCM push solution, Molly uses UnifiedPush. While not quite suggested by the name, Unified Push is a generalized and federated push notification service that can be used by any app on a device for push notification instead of its own TCP connection for incoming push notifications. In short: UnifiedPush is an alternative to Google’s FCM which apps can use for getting notifications.

UnifiedPush Configuration in the Conversations App

OK, nice, I thought at first, if only Molly used UnifiedPush on my device, not much is gained. But I quickly noticed that I was wrong because the conduit, i.e. the connection UnifiedPush can use on my device for receiving notifications for any app that uses it is the Conversations app. So in other words, the Conversations app now has a double role: It’s there for my text, voice and video messaging needs and now also to get and distribute push notifications for and to other apps on the device. In my case these other apps than can receive notifications via Conversations are Molly, and as it also turned out, Tusky, my Mastodon client. Once Molly receives a notification via UnifiedPush over Conversations, it opens its own TCP connection to the Signal server and receives the actual message, be it text, voice or video.

Conversations is not the only app that can be the front-end for UnifiedPush on a device, so you don’t have to have another messenger on your device to get Molly to work. Have a look at the UnifiedPush web site for further details. After testing my Signal / Molly setup setup for 2 weeks, I’m convinced of its stability and will now migrate my contacts from Signal on the ‘burner’ phone to Molly on GrapheneOS!

And one more thing for completeness sake: There are two versions of Molly: Molly and Molly-FOSS (Free Open Source Software): The main difference: While Molly has both FCM and Unified Push included, Molly-FOSS comes without any FCM code. As I don’t need or want FCM support, I’m using the Molly-FOSS variant of the software.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.