Google-Free Push Messaging for Google-Free Phones
UnifiedPush open-standard push messaging complements degoogled android-compatible phone OS's such as LineageOS.
People who do not want to depend on Google or have them control our devices are using android-compatible but not google-controlled phones, a.k.a. “degoogled phones”. We have been asking (ourselves) for several years if we can have google-free push notifications. Thanks to the developers of the UnifiedPush standard, the answer is now, “yes!”
The open standard UnifiedPush.org has now been created. While not a large number yet, a useful handful of apps already support UnifiedPush, including several matrix and fediverse apps. For its servers and the associated client-side “distributor” component, there are multiple successful implementations deployed.
The current situation is such that anyone can use UnifiedPush on an android-compatible device by installing their choice of UnifiedPush distributor app (which must run in the background), configuring it to connect to their chosen U-P server (compatible with chosen distributor), and then installing any number of U-P-aware apps which will then use it (without needing per-app configuration to do so).
Why Would I Care?
Why would I care how my push notifications reach my phone? What difference does it make to me?
That's a good question. Inside a building that has a good heating, ventilation and air conditioning system, we don't notice the system, we just feel comfortable. With push notification delivery, part of the answer is the same: the system just does its job and our notifications come through. Whether the delivery channel is controlled by Google or by us or by someone else doesn't change that. The immediate, concrete result is the same. So it's not about wanting it to function differently; that's not why I care.
The difference it makes to me is about freedom, privacy, independence, self-agency. I am happy to have the choice to use any particular company's service, but I am not happy to be forced to use them, to have no choice, if I can't leave no matter how bad it gets. What if I don't like Google monitoring my notifications to know what I'm doing? What if I don't like to live in fear of offending them in some way and being cut off from their service and having no replacement option? What if I just don't want to condone their business model by using it, but I still want to be notified when I have messages?
Push notification delivery is one of the many invisible technical services that underpin our online communication systems. These kinds of services are implicitly considered to be part of the public infrastructure, something that we now assume is available to everyone.
When we allow ourselves to become dependent on any particular company's service, and yet do not regulate it as a public service provider, then we subject ourselves to the company's whims, priorities and values, which are different from ours. They will inevitably act against public interests.
Building publicly owned infrastructure based on open standards and freedom software is therefore essential to ensure the independent provision of services aligned with public needs and values.
I am one of the people who feels it is my place to use, promote and build non-proprietary public services, both for my own mental wellbeing and because I believe it is important for society.
Involving the OS ROM
In android-compatible OS ROM projects such as LineageOS, implementing some core support for the UnifiedPush.org standard now seems to me like the right way to go. Exactly what form of support is to be decided.
Some ways an OS like LineageOS could usefully be involved to improve the UnifiedPush experience are:
- ensuring the U-P distributor app has a convenient way to be installed and permitted to run in the background, free from restrictions, because getting this right is critical and if the user installs the distributor manually it can be tricky to get right; (investigate: would it need to be a system app, or some kind of whitelisting (ugh), or be split into a system component and a user component, or what?)
- providing a convenient way to let the user (or the OS distribution provider) configure the distributor's U-P server address: perhaps rather than using an ad-hoc UI provided by the distributor app, it could integrate with “accounts” settings.
- potentially providing a system settings UI for monitoring the U-P connections and which apps are using them.
Thoughts on the role of microG. The purpose of microG as best I understand is to provide Google compatible APIs to apps which expect Google services. Underneath these APIs, it provides access to a mixture of actual Google services, alternative real services, and fake services. As far as I know it does not so far provide any non-Google APIs, and yet for push notifications the provision of UnifiedPush APIs might be a good fit for fulfilling its overall purpose as a compatibility layer. Or perhaps not, perhaps that is out of scope and should be in LineageOS or another add-on layer instead. I'm sure the folks involved will work out what is best.
Constraints, FCM Fallback, non-Android
Unlike the situation with some other google APIs, it is important to note that an OS compatibility layer such as microG cannot automatically divert the connections made by apps built using Google's FCM, to use U-P instead. The apps must be modified.
However, the inverse is possible: a UnifiedPush aware app can automatically “fall back” to using Google's FCM if U-P support is absent and FCM support is present. See details of the Embedded FCM Distributor in UnifiedPush documentation.
Non-Android devices can use UnifiedPush too, including Linux phones such as PinePhone and Purism Librem. The UnifiedPush D-Bus spec may be relevant. (On locked-down proprietary devices such as Apple's it is unlikely to be possible, nor to make much sense: FAQ.)
Packaging a UnifiedPush Distributor
A U-P distributor app could be built in to an OS or subsystem like microG but there is a significant down-side to that: it would support only one type, or at most a fixed small number of types, of U-P server. Choosing a distributor type is more of a whole OS packaging decision. In cases where the whole OS is related to a service provider of some kind (so not like LineageOS, but perhaps like Murena/Calyx/Graphene etc.), the service provider might choose to run a U-P server for their users and have their distributor automatically connect to it (with user consent/opt-in/opt-out). In the more generic/self-hosted case (like LineageOS) it makes more sense to leave it to the user to install their preferred U-P distributor.
I would love to see distributors of google-free phones, such as Murena, support google-free push notifications. I posted a brief sketch of a UnifiedPush Plan for Murena /e/-OS on their forum, without attempting to go into details of integrating the U-P distributor into the ROM.
A rough time line of UnifiedPush development. (From light research and having followed it through its development.)
- 2018: FOSS-Push planning
- 2019: OpenPush — defines the architectural concept
- 2020: UnifiedPush — building on OpenPush concept to a complete specification
- 2021: Gotify — a FOSS push system — was forked to add UnifiedPush support
- 2021: NextPush — NextCloud-based UnifiedPush system created
- 2022: ntfy — a FOSS push system — adds UnifiedPush support
- now: more and more apps use UnifiedPush for google-free push support
Whatever the specifics of how any android-compatible OS ROM project might choose to proceed with google-free push support, the solution space enabled by UnifiedPush now exists. Speaking as one of the people who prefer our devices not to be controlled by and dependent on Google:
What do we want? UnifiedPush!
When do we want it? Now!
I would love to work on any freedom tech project bringing UnifiedPush to a wider audience.
Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @email@example.com · use the Cactus Comments box above · matrix me · Fedi follow me · email me · julian.foad.me.uk Donate: via Liberapay All posts © Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise