<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>ntfy &amp;mdash; julian</title>
    <link>https://wrily.foad.me.uk/tag:ntfy</link>
    <description>FOSS dev, self-hosting fan, Matrix, degoogling, small tech, indie tech, friendly tech for families and schools. Let&#39;s own our own identity &amp; data.</description>
    <pubDate>Wed, 15 Apr 2026 05:44:58 +0000</pubDate>
    <item>
      <title>UnifiedPush -- Wider Developments</title>
      <link>https://wrily.foad.me.uk/unifiedpush-wider-developments</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;An article about Building the Self-Agency Mobile Ecosystem: Push Messaging&#xA;&#xA;Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently. But Who Cares Who Delivers Our Notifications? Our answer is: we care, and we do not like being locked in to depending on one mega-corp&#39;s system.&#xA;&#xA;Therefore, in our libre mobile computing devices, we require a push-messaging infrastructure built from open standard technology that gives us freedom to choose our service providers and authority over them.&#xA;&#xA;Read more in Going Google-Free with UnifiedPush in /e/OS and my other articles about UnifiedPush .&#xA;&#xA;How We Get There&#xA;&#xA;How can we build this? What is needed to get widespread UnifiedPush support in /e/ and other mobile OS?&#xA;!--more--&#xA;&#xA;The big picture involves several areas of work.&#xA;&#xA;OS integration of the distributor, including how it&#39;s configured, auto-detected, optimised, etc.&#xA;Server Software: Making sure a suitable server-side component is available, supported, optimised for this use case.&#xA;Server hosting: making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems.&#xA;Apps: Working with other apps to make sure they connect and work with UP out-of-the-box.&#xA;Sharing this work among other mobile OS projects (microG, CalyxOS, GrapheneOS, PostmarketOS, ...) .&#xA;Consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and vice-versa.&#xA;&#xA;(Links in this and the following sections lead to relevant issues or discussions, where I could find any.)&#xA;&#xA;OS Integration of the UP Distributor&#xA;&#xA;Including how the UP distributor is configured, auto-detected, optimised, Android permissions, etc.&#xA;&#xA;I recently analysed how /e/OS 2.5 has started the ball rolling&#xA;&#xA;Server Software&#xA;&#xA;Making sure a suitable server-side component is available, supported, optimised for this use case&#xA;&#xA;Nextcloud: UnifiedPush Provider -- exists&#xA;It could alternatively begin with a fork of ntfy-server for example.&#xA;&#xA;Server Hosting: Technical&#xA;&#xA;Making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems, ranging from hobbyist to serious commercial systems.&#xA;&#xA;Docker ntfy -- exists&#xA;K8s ntfy helm-chart -- exists&#xA;Nextcloud: UnifiedPush Provider -- exists&#xA;Matrix-Docker-Ansible-Deploy: ntfy-server -- exists&#xA;Yunohost: ntfy-server -- exists&#xA;SelfHostBlocks -- not yet&#xA;CoopCloud -- not yet&#xA;Fediversity (an upcoming hosting project) -- not yet&#xA;&#xA;Server Hosting: Social/Business Aspects&#xA;&#xA;Work out and write up (shareable) policies about who hosts, terms and conditions, privacy, rate limiting and other special measures, etc.?&#xA;&#xA;Apps&#xA;&#xA;Working with other apps to make sure they connect and work with UP out-of-the-box.&#xA;&#xA;Category 1: default apps in /e/OS etc., like...&#xA;&#xA;Mail: K9/Thunderbird-andriod #5165 and UnifiedPush for IMAP (NGI proposal 2024-10-535)&#xA;Nextcloud -uppush #17 -notifications #1225 -android #8684&#xA;Accounts/Calendar/Contacts (DAVx5 #36 + DAV-push)&#xA;&#xA;Category 2: other popular apps like...&#xA;&#xA;HomeAssistant #446344&#xA;Fluffychat -- exists&#xA;Element -- exists&#xA;Signal forks&#xA;Telegram-FOSS #577&#xA;Conversations.im -- exists&#xA;Pixelfed #86&#xA;&#xA;See also the UnifiedPush wish list.&#xA;&#xA;Sharing with other mobile OS projects&#xA;&#xA;Sharing this work among other mobile OS projects.&#xA;&#xA;/e/OS -- exists&#xA;microG #486&#xA;CalyxOS #1395&#xA;GrapheneOS #10455&#xA;PostmarketOS -- UnifiedPush, Push notifications&#xA;SailfishOS -- mentioned in 2023-01-12 meeting minutes as blocked by much work needed to enable background services&#xA;&#xA;And even desktop OS:&#xA;&#xA;KUnifiedPush -- exists -- note also KDE runs their own (ntfy) UP server&#xA;&#xA;Standardising UP client-server protocol?&#xA;&#xA;Should we consider standardising the UP client-server protocol? At present, by design, one must choose a UP distributor and UP server together as a pair. If we standardised the protocol between them, so any distributor would work with any server, this would certainly have some benefits, but also down-sides, and is not necessarily the right thing to do. UP was designed this way on purpose and achieves its goals without needing to standardise there. No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.&#xA;&#xA;Therefore this is an exploration rather than a development. I discuss this further in a separate article.&#xA;&#xA;---&#xA;&#xA;#unifiedPush #degoogled #awesomeFOSS #eOS #Murena #ntfy #mobiFree&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://unifiedpush.org/" title="UnifiedPush"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></a></p>

<p><em>An article about Building the Self-Agency Mobile Ecosystem: Push Messaging</em></p>

<p>Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently. But <a href="https://wrily.foad.me.uk/who-cares-who-delivers-our-notifications">Who Cares Who Delivers Our Notifications?</a> Our answer is: we care, and we do not like being locked in to depending on one mega-corp&#39;s system.</p>

<p>Therefore, in our libre mobile computing devices, we require a push-messaging infrastructure built from open standard technology that gives us freedom to choose our service providers and authority over them.</p>

<p>Read more in <a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os">Going Google-Free with UnifiedPush in /e/OS</a> and my other <a href="https://wrily.foad.me.uk/tag:unifiedPush">articles about UnifiedPush</a> .</p>

<h2 id="how-we-get-there" id="how-we-get-there">How We Get There</h2>

<p>How can we build this? What is needed to get widespread UnifiedPush support in /e/ and other mobile OS?
</p>

<p>The big picture involves several areas of work.</p>
<ul><li>OS integration of the distributor, including how it&#39;s configured, auto-detected, optimised, etc.</li>
<li>Server Software: Making sure a suitable server-side component is available, supported, optimised for this use case.</li>
<li>Server hosting: making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems.</li>
<li>Apps: Working with other apps to make sure they connect and work with UP out-of-the-box.</li>
<li>Sharing this work among other mobile OS projects (<a href="https://github.com/microg/GmsCore/issues/486">microG</a>, <a href="https://gitlab.com/CalyxOS/calyxos/-/issues/1395">CalyxOS</a>, <a href="https://discuss.grapheneos.org/d/10455-unifiedpushntfy-integration-in-the-os">GrapheneOS</a>, <a href="https://postmarketos.org/">PostmarketOS</a>, ...) .</li>
<li>Consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and <em>vice-versa</em>.</li></ul>

<p>(Links in this and the following sections lead to relevant issues or discussions, where I could find any.)</p>

<h2 id="os-integration-of-the-up-distributor" id="os-integration-of-the-up-distributor">OS Integration of the UP Distributor</h2>

<p>Including how the UP distributor is configured, auto-detected, optimised, Android permissions, etc.</p>
<ul><li>I recently analysed how <a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os" title="Going Google-Free with UnifiedPush in /e/OS">/e/OS 2.5 has started the ball rolling</a></li></ul>

<h2 id="server-software" id="server-software">Server Software</h2>

<p>Making sure a suitable server-side component is available, supported, optimised for this use case</p>
<ul><li><a href="https://apps.nextcloud.com/apps/uppush">Nextcloud: UnifiedPush Provider</a> — <strong>exists</strong></li>
<li>It could alternatively begin with a fork of ntfy-server for example.</li></ul>

<h2 id="server-hosting-technical" id="server-hosting-technical">Server Hosting: Technical</h2>

<p>Making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems, ranging from hobbyist to serious commercial systems.</p>
<ul><li><a href="https://hub.docker.com/r/binwiederhier/ntfy">Docker ntfy</a> — <strong>exists</strong></li>
<li><a href="https://codeberg.org/wrenix/helm-charts/src/branch/main/ntfy">K8s ntfy helm-chart</a> — <strong>exists</strong></li>
<li><a href="https://apps.nextcloud.com/apps/uppush">Nextcloud: UnifiedPush Provider</a> — <strong>exists</strong></li>
<li><a href="https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-ntfy.md">Matrix-Docker-Ansible-Deploy: ntfy-server</a> — <strong>exists</strong></li>
<li><a href="https://apps.yunohost.org/app/ntfy">Yunohost: ntfy-server</a> — <strong>exists</strong></li>
<li><a href="https://shb.skarabox.com/services.html">SelfHostBlocks</a> — not yet</li>
<li><a href="https://recipes.coopcloud.tech/">CoopCloud</a> — not yet</li>
<li><a href="https://www.fediversity.eu/">Fediversity</a> (an upcoming hosting project) — not yet</li></ul>

<h2 id="server-hosting-social-business-aspects" id="server-hosting-social-business-aspects">Server Hosting: Social/Business Aspects</h2>

<p>Work out and write up (shareable) policies about who hosts, terms and conditions, privacy, rate limiting and other special measures, etc.?</p>

<h2 id="apps" id="apps">Apps</h2>

<p>Working with other apps to make sure they connect and work with UP out-of-the-box.</p>

<p>Category 1: default apps in /e/OS etc., like...</p>
<ul><li>Mail: <a href="https://github.com/thunderbird/thunderbird-android/issues/5165">K9/Thunderbird-andriod #5165</a> and <a href="https://lab.trax.im/up-for-imap/up-for-imap/-/wikis/NGI-Proposal">UnifiedPush for IMAP (NGI proposal <code>2024-10-535</code>)</a></li>
<li>Nextcloud <a href="https://codeberg.org/NextPush/uppush/pulls/17">-uppush #17</a> <a href="https://github.com/nextcloud/notifications/issues/1225#issuecomment-2262644834">-notifications #1225</a> <a href="https://github.com/nextcloud/android/issues/8684">-android #8684</a></li>
<li>Accounts/Calendar/Contacts (<a href="https://github.com/bitfireAT/webdav-push/discussions/36" title="Tutorial video- How to use Push with DAVx⁵ and your Nextcloud">DAVx5 #36</a> + <a href="https://github.com/bitfireAT/nc_ext_dav_push">DAV-push</a>)</li></ul>

<p>Category 2: other popular apps like...</p>
<ul><li><a href="https://community.home-assistant.io/t/add-unifiedpush-support-to-home-assistant-android-core/446344">HomeAssistant #446344</a></li>
<li>Fluffychat — <strong>exists</strong></li>
<li>Element — <strong>exists</strong></li>
<li>Signal forks</li>
<li><a href="https://github.com/Telegram-FOSS-Team/Telegram-FOSS/issues/577">Telegram-FOSS #577</a></li>
<li>Conversations.im — <strong>exists</strong></li>
<li><a href="https://github.com/pixelfed/ideas/issues/86">Pixelfed #86</a></li></ul>

<p>See also the <a href="https://codeberg.org/UnifiedPush/wishlist/issues">UnifiedPush wish list</a>.</p>

<h2 id="sharing-with-other-mobile-os-projects" id="sharing-with-other-mobile-os-projects">Sharing with other mobile OS projects</h2>

<p>Sharing this work among other mobile OS projects.</p>
<ul><li><a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os">/e/OS</a> — <strong>exists</strong></li>
<li><a href="https://github.com/microg/GmsCore/issues/486">microG #486</a></li>
<li><a href="https://gitlab.com/CalyxOS/calyxos/-/issues/1395">CalyxOS #1395</a></li>
<li><a href="https://discuss.grapheneos.org/d/10455-unifiedpushntfy-integration-in-the-os">GrapheneOS #10455</a></li>
<li><a href="https://postmarketos.org/">PostmarketOS</a> — <a href="https://wiki.postmarketos.org/wiki/UnifiedPush" title="wiki page">UnifiedPush</a>, <a href="https://wiki.postmarketos.org/wiki/Push_notifications" title="wiki page">Push notifications</a></li>
<li><a href="https://sailfishos.org">SailfishOS</a> — mentioned <a href="https://forum.sailfishos.org/t/community-meeting-on-irc-12th-january-2023/13729/9">in 2023-01-12 meeting minutes</a> as blocked by much work needed to enable background services</li></ul>

<p>And even desktop OS:</p>
<ul><li><a href="https://blogs.kde.org/2024/10/19/kunifiedpush-1.0.0-is-out/">KUnifiedPush</a> — <strong>exists</strong> — note also KDE runs their own (ntfy) UP server</li></ul>

<h2 id="standardising-up-client-server-protocol" id="standardising-up-client-server-protocol">Standardising UP client-server protocol?</h2>

<p>Should we consider standardising the UP client-server protocol? At present, by design, one must choose a UP distributor and UP server together as a pair. If we standardised the protocol between them, so any distributor would work with any server, this would certainly have some benefits, but also down-sides, and is not necessarily the right thing to do. UP was designed this way on purpose and achieves its goals without needing to standardise there. No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.</p>

<p>Therefore this is an exploration rather than a development. I discuss this further in <a href="https://wrily.foad.me.uk/unifiedpush-standardise-up-client-server-protocol">a separate article</a>.</p>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a> <a href="https://wrily.foad.me.uk/tag:Murena" class="hashtag"><span>#</span><span class="p-category">Murena</span></a> <a href="https://wrily.foad.me.uk/tag:ntfy" class="hashtag"><span>#</span><span class="p-category">ntfy</span></a> <a href="https://wrily.foad.me.uk/tag:mobiFree" class="hashtag"><span>#</span><span class="p-category">mobiFree</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/unifiedpush-wider-developments</guid>
      <pubDate>Wed, 27 Nov 2024 14:48:00 +0000</pubDate>
    </item>
    <item>
      <title>UnifiedPush: Standardise UP Client-Server Protocol?</title>
      <link>https://wrily.foad.me.uk/unifiedpush-standardise-up-client-server-protocol</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;This is a technical article. For a more general introduction to UnifiedPush you might read the first half of Going Google-Free with UnifiedPush in /e/OS or my other articles about UnifiedPush .&#xA;&#xA;Should we consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and vice-versa?&#xA;&#xA;Not necessarily, and I will attempt to explain why.&#xA;!--more--&#xA;&#xA;UnifiedPush High Level Architecture&#xA;&#xA;UnifiedPush animation.svg&#xA;&#xA;Look at the diagrams on the unifiedpush.org home page. There are four connections involved, shown arranged in a square. UP standardises the protocol for one of the connections, the bottom one (UP distributor - app). It also standardises something about how the whole system works.&#xA;&#xA;The protocol on the top connection (App server -  UP server) has recently been upgraded to be compatible with WebPush.&#xA;&#xA;The other two (App - app-server and UP - UP-server) are two other, separate, independent protocols. The protocol the app developer uses for app - app-server is not relevant to UnifiedPush. At present, UnifiedPush standards also do not specify a protocol to be used for the connection between the UP server and the UP distributor (shown on the left).&#xA;&#xA;The ntfy distributor requires a ntfy server, whereas the nextpush distributor requires a nextpush server, and so on. They use different protocols for that link in the chain.&#xA;&#xA;Multiple Protocols or Standardised Protocol&#xA;&#xA;It would be possible to make a UP server that supports (for example) both the NextPush and ntfy protocol(s). In fact ntfy supports two different protocols (the &#34;json&#34; one and the &#34;websocket&#34; one) and you choose one in the settings. The ntfy server supports both of those.&#xA;&#xA;The point is, UP achieves its goals without needing to standardise there. In some respects it&#39;s beneficial that the user and/or service provider can choose those components and protocol that best suit their needs, while the end-user apps and app servers all still remain completely compatible (standardised) no matter what UP components are used.&#xA;&#xA;Additionally standardising the UP - UP-server protocol could make different UP servers and distributors interoperable. It could potentially help with users bringing their own choice of device (assuming it has a UP distributor built in) from one service provider to another, for example.&#xA;&#xA;But that&#39;s more of a deployment-level standard: something that service providers might want to standardise. Android-compatible mobile OS&#39;s (for example) might get together and declare &#34;we&#34; (as a loose group) like to standardise on (let&#39;s say) ntfy-websocket protocol here, because (suppose) it works best with android&#39;s OS network layer and sleep optimisations. (Just examples; I have not researched what protocol actually works best in each scenario.) Then, Linux-based mobile OS&#39;s might choose a different protocol that works better with Linux&#39;s networking and sleep optimisations. Then, if a certain libre mobile service provider wanted to support both android-compatible and linux-based devices, they might choose to support two protocols. Or would standardising on one protocol be more helpful in such a scenario? It&#39;s not clear.&#xA;&#xA;No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.&#xA;&#xA;So, at this stage this is perhaps the least important of all the areas to work on.&#xA;&#xA;---&#xA;&#xA;First explained in #unifiedpush:matrix.org.&#xA;&#xA;#unifiedPush #degoogled #awesomeFOSS #eOS #Murena #ntfy #mobiFree&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://unifiedpush.org/" title="UnifiedPush"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></a></p>

<p><em>This is a technical article. For a more general introduction to UnifiedPush you might read the first half of <a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os">Going Google-Free with UnifiedPush in /e/OS</a> or my other <a href="https://wrily.foad.me.uk/tag:unifiedPush">articles about UnifiedPush</a> .</em></p>

<p>Should we consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and <em>vice-versa</em>?</p>

<p>Not necessarily, and I will attempt to explain why.
</p>

<h2 id="unifiedpush-high-level-architecture" id="unifiedpush-high-level-architecture">UnifiedPush High Level Architecture</h2>

<p><a href="https://unifiedpush.org/"><img src="https://unifiedpush.org/img/animation.svg" alt="UnifiedPush animation.svg" title="UnifiedPush High Level Architecture diagram, from its home page"></a></p>

<p>Look at the diagrams on the <a href="https://unifiedpush.org/">unifiedpush.org</a> home page. There are four connections involved, shown arranged in a square. UP standardises the protocol for one of the connections, the bottom one (UP distributor &lt;–&gt; app). It also standardises something about how the whole system works.</p>

<p>The protocol on the top connection (App server –&gt; UP server) has recently been upgraded to be compatible with WebPush.</p>

<p>The other two (App &lt;–&gt; app-server and UP &lt;–&gt; UP-server) are two other, separate, independent protocols. The protocol the app developer uses for app &lt;–&gt; app-server is not relevant to UnifiedPush. At present, UnifiedPush standards also do not specify a protocol to be used for the connection between the UP server and the UP distributor (shown on the left).</p>

<p>The ntfy distributor requires a ntfy server, whereas the nextpush distributor requires a nextpush server, and so on. They use different protocols for <em>that</em> link in the chain.</p>

<h2 id="multiple-protocols-or-standardised-protocol" id="multiple-protocols-or-standardised-protocol">Multiple Protocols or Standardised Protocol</h2>

<p>It would be possible to make a UP server that supports (for example) both the NextPush and ntfy protocol(s). In fact ntfy supports two different protocols (the “json” one and the “websocket” one) and you choose one in the settings. The ntfy server supports both of those.</p>

<p>The point is, UP achieves its goals without needing to standardise there. In some respects it&#39;s beneficial that the user and/or service provider can choose those components and protocol that best suit their needs, while the end-user apps and app servers all still remain completely compatible (standardised) no matter what UP components are used.</p>

<p>Additionally standardising the UP &lt;–&gt; UP-server protocol could make different UP servers and distributors interoperable. It could potentially help with users bringing their own choice of device (assuming it has a UP distributor built in) from one service provider to another, for example.</p>

<p>But that&#39;s more of a deployment-level standard: something that service providers might want to standardise. Android-compatible mobile OS&#39;s (for example) might get together and declare “we” (as a loose group) like to standardise on (let&#39;s say) ntfy-websocket protocol here, because (suppose) it works best with android&#39;s OS network layer and sleep optimisations. (Just examples; I have not researched what protocol actually works best in each scenario.) Then, Linux-based mobile OS&#39;s might choose a different protocol that works better with Linux&#39;s networking and sleep optimisations. Then, if a certain libre mobile service provider wanted to support both android-compatible and linux-based devices, they might choose to support two protocols. Or would standardising on one protocol be more helpful in such a scenario? It&#39;s not clear.</p>

<p>No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.</p>

<p>So, at this stage this is perhaps the least important of all the areas to work on.</p>

<hr>

<p><em>First explained in <a href="https://matrix.to/#/%23unifiedpush:matrix.org"><code>#unifiedpush:matrix.org</code></a>.</em></p>

<p><a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a> <a href="https://wrily.foad.me.uk/tag:Murena" class="hashtag"><span>#</span><span class="p-category">Murena</span></a> <a href="https://wrily.foad.me.uk/tag:ntfy" class="hashtag"><span>#</span><span class="p-category">ntfy</span></a> <a href="https://wrily.foad.me.uk/tag:mobiFree" class="hashtag"><span>#</span><span class="p-category">mobiFree</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/unifiedpush-standardise-up-client-server-protocol</guid>
      <pubDate>Tue, 26 Nov 2024 20:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Going Google-Free with UnifiedPush in /e/OS</title>
      <link>https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; / img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/eos-logose-logo-color.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;Congratulations UnifiedPush! Congratulations Murena!&#xA;&#xA;Murena&#39;s /e/OS 2.5 ships with UnifiedPush support included as announced by a small note in the 2.5-t release notes .&#xA;&#xA;This exciting development brings Google-free push messaging to the regular users of an important player in the freedom mobile OS space.&#xA;!--more--&#xA;&#xA;So What?&#xA;&#xA;Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently.&#xA;&#xA;To achieve this, the phone operating system keeps a single network connection open to a push messaging server. The apps don&#39;t need to keep running in the background: they can go to sleep. When a push message arrives, the OS wakes up the relevant app and hands it the message.&#xA;&#xA;All our apps share this push service -- even the &#34;private&#34; ones -- if they want push messaging. &#xA;&#xA;That&#39;s great, except... Who Cares Who Delivers Our Notifications?&#xA;&#xA;Until now, most people&#39;s phones run Google or Apple software. The Big Techs operate and control those phones. Along with everything else, they provide the push messaging service. And so they, Big Tech, control it.&#xA;&#xA;The UnifiedPush public open standard changes this. With UnifiedPush, we are no longer merely &#34;users&#34; of our devices but are in charge of them. With UnifiedPush, we can choose which service provider will deliver our push messaging. Thereby we are in control of who has the ability to monitor or block our push messaging.&#xA;&#xA;UnifiedPush has been available to those interested, for a while now, but until now it has required installing extra software.&#xA;&#xA;Putting the support for push messaging into the operating system means delusers/del people who choose not to be operated by Big Tech will now be able to simply install the apps they care about and immediately have the alternative system working for them.&#xA;&#xA;Technical&#xA;&#xA;I&#39;m going to delve into the technical side of this initial release, because it&#39;s a big interest area of mine. If you are a regular user, I suggest at this stage you might concentrate on switching to /e/OS or another freedom mobile OS and expect this functionality will be maturing quickly from now on and soon be seamless. If you&#39;re an early adopter or interested in its development, read on.&#xA;&#xA;I am trying it out. I already run /e/OS on my main phone and upgrading to version 2.5 was simple with the built-in upgrader.&#xA;&#xA;The OS embeds a custom fork of ntfy, calling itself &#34;foundation.e.ntfy 1.17.0&#34;. So, congratulations also to ntfy! At this stage the developer of ntfy, Philip Heckel, told me in #ntfy room he was &#34;not yet involved&#34; in this development and this is the &#34;First I&#39;m hearing about it.&#34;&#xA;&#xA;ntfy is a notification system that can also provide UnifiedPush service. It is so good at this job that it has for some time been the UnifiedPush implementation recommended for most people. One can install the ntfy app and it provides UnifiedPush service to our other apps.&#xA;&#xA;When we install the ntfy app ourself, we may either let it use the creator&#39;s default server (at ntfy.sh) or configure it to use our choice of ntfy server, if we know of one or if we run our own. As with anything, using someone else&#39;s server comes with conditions and restrictions, especially if we don&#39;t pay for the service, so we need to think about that.&#xA;&#xA;Let&#39;s see what /e/OS does.&#xA;&#xA;If not Google&#39;s then Whose Server?&#xA;&#xA;In this push service built in to /e/OS, there is no configuration UI. There is a tiny settings UI where we have to &#34;enable&#34; the service -- see below. Technically, the full ntfy UI is also available, but not accessible through the normal system UI -- neither the app launcher nor the settings. But as curious techies we can hack in to it if we like. See below.&#xA;&#xA;What we can do is install and use the UP-example app. Click the &#34;REGISTER&#34; button, and we discover it&#39;s preconfigured to connect to... . o O (their own ntfy server?) No! It connects to ntfy.sh, the server run by the author of ntfy. Hmm.&#xA;&#xA;I should say that I found this while not signed in to Murena&#39;s &#34;e cloud&#34; services. It&#39;s possible and would make some sense if it would point to a different server if signed in. I will be interested to find out.&#xA;&#xA;The first thing to comment on, then, is Murena will surely need to run their own push server, for privacy and scaling and economic reasons, or else make an agreement with ntfy. In the short term, to get things started, it may be acceptable for everyone to be subject to the free (gratis) ntfy service&#39;s rate limits and other conditions. That&#39;s something that can be changed later, seamlessly, because UnifiedPush doesn&#39;t require app (server) developers to know or care which service provider they will eventually be connecting to.&#xA;&#xA;Secondly, for privacy and self-determination reasons, there should be a way to use our own choice of server, but not necessarily as a dedicated configuration option. A better way might be to tie it to the main Nextcloud account through a single-sign-on, so that when we set up the phone we have only to make that one choice of service provider and expect it to cover all services. That would give people the advantage of simplicity which is how the Big Techs play that game, but now with open standard technologies enabling us to have a choice among service providers.&#xA;&#xA;When an app registers for UnifiedPush service, if more than one distributor is installed, it asks which to use. A normal user would have only one, and would not see this. Here as an experimentor and developer I already had both ntfy and NextPush installed:&#xA;&#xA;  It&#39;s not ideal that it identifies as &#34;ntfy&#34;, exactly the same as the official ntfy app. I expect this will soon be changed to /e/OS branding.&#xA;&#xA;The tiny settings UI is found a the bottom of the system settings menu.&#xA;&#xA;    It&#39;s disabled by default. In this state, the UnifiedPush service is still advertised to apps, and they can register, but push messages are not delivered. (I suspect this isn&#39;t how we want the disabled state to be. Probably it should not advertise as available.)&#xA;&#xA;That&#39;s all the configuration we get in this version of /e/OS.&#xA;&#xA;(Aside: I couldn&#39;t find this in settings, to begin with. Searching in settings for &#34;ntfy&#34; or &#34;push&#34; or &#34;unifiedpush&#34; doesn&#39;t return any results, for me.)&#xA;&#xA;Let&#39;s Hack In&#xA;&#xA;As a developer we can access the ntfy UI through the system terminal, for example through an ADB shell (running this command on a USB-connected computer with &#34;adb&#34; tool installed, with ADB USB debugging enabled in the phone&#39;s developer settings):&#xA;&#xA;adb shell am start -n foundation.e.ntfy/io.heckel.ntfy.ui.MainActivity&#xA;&#xA;  Just the same as in the user-installed ntfy app. (I can compare them side by side because I also have it installed, because I was already using it before this upgrade.)&#xA;&#xA;We first notice this screen prominently shows some warnings about battery optimisation and choice of connection protocol. Are these warnings relevant to this version?, I wonder. (At first it showed only the first, and later both.)&#xA;&#xA;And it lets us open its settings. In the ntfy settings we can choose our own server, and I can confirm this takes effect and works.&#xA;&#xA;  This screen also shows the currently subscribed topics -- here, the &#34;example&#34; one -- and after configuring it to use my own server, the displayed URL confirms that. (Generally one &#34;topic&#34; corresponds to one app.)&#xA;&#xA;Ntfy Not NextPush?&#xA;&#xA;I&#39;m a little surprised Murena chose ntfy, seeing as their system is closely coupled to Nextcloud: there is also Nextpush (source on Codeberg, yay!), a Nextcloud-hosted UnifiedPush server module and its client app, that could be used instead. Perhaps they found ntfy is more stable or refined than Nextpush.&#xA;&#xA;UnifiedPush developer S1m says the &#34;Next version of NextPush will be a lot more stable, and I&#39;ve rewritten the UI.&#34;&#xA;&#xA;The Future&#xA;&#xA;While UnifiedPush is pretty good standard already, it is still maturing. Some important, recent improvements are making their way into the standard and into implementations like ntfy right now. These include full compatibility with the WebPush standard, and a better way to wake an app without it needing permission for unrestricted battery usage.&#xA;&#xA;An adjacent recent development is DAV Push, an open standard for pushing instant updates to our shared files, calendars and contacts through CalDAV, CardDAV and WebDAV, which can also work through UnifiedPush.&#xA;&#xA;To ensure people can exercise their right NOT to depend on Google, we have wider work to do. Integrating a UnifiedPush distributor is one useful step towards it. Beyond this, we need to be working with the developers of popular apps to get them supported, sharing this development across the freedom mobile OS ecosystem, deploying servers, ensuring reliability, and more. I write about this in a follow-up post: UnifiedPush — Wider Developments .&#xA;&#xA;Conclusion&#xA;&#xA;The details of this initial implementation seem to me to indicate an early preview release, with significant changes still needed. But that&#39;s OK: these technical implementation details can be changed.&#xA;&#xA;Leaving that aside, the social side of this is amazing: it&#39;s making UP available to main-stream users. That&#39;s a big deal for the libre mobile ecosystem. Hurray!&#xA;&#xA;---&#xA;&#xA;Add UnifiedPush to /e/OS to make it possible for developers to avoid FCM and better support F-Droid applications -- an /e/ community forum thread requesting UP support.&#xA;Source code of /e/ fork of ntfy: https://gitlab.e.foundation/e/os/ntfy-android&#xA;&#34;Integrate ntfy in /e/OS&#34; --merge request, including a simple settings UI (just enable/disable).&#xA;Romain Hunault of Murena is presenting it at Capitole du Libre 2024 this afternoon.&#xA;&#xA;---&#xA;&#xA;#unifiedPush #degoogled #awesomeFOSS #eOS #Murena #ntfy #mobiFree&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://unifiedpush.org/" title="UnifiedPush"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></a> <a href="https://e.foundation/" title="/e/ foundation"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/eos-logos_e-logo-color.png" style="max-height: 5em"/></a></p>

<p>Congratulations UnifiedPush! Congratulations Murena!</p>

<p>Murena&#39;s /e/OS 2.5 <a href="https://community.e.foundation/t/add-unifiedpush-to-e-os-to-make-it-possible-for-developers-to-avoid-fcm-and-better-support-f-droid-applications/46197/28" title="an /e/ community forum thread requesting UP support">ships with UnifiedPush support included</a> as announced by a small note in <a href="https://gitlab.e.foundation/e/os/releases/-/releases/v2.5-t">the 2.5-t release notes</a> .</p>

<p>This exciting development brings Google-free push messaging to the regular users of an important player in the freedom mobile OS space.
</p>

<h2 id="so-what" id="so-what">So What?</h2>

<p>Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently.</p>

<p>To achieve this, the phone operating system keeps a single network connection open to a push messaging server. The apps don&#39;t need to keep running in the background: they can go to sleep. When a push message arrives, the OS wakes up the relevant app and hands it the message.</p>

<p>All our apps share this push service — even the “private” ones — if they want push messaging.</p>

<p>That&#39;s great, except... <a href="https://wrily.foad.me.uk/who-cares-who-delivers-our-notifications">Who Cares Who Delivers Our Notifications?</a></p>

<p>Until now, most people&#39;s phones run Google or Apple software. The Big Techs operate and control those phones. Along with everything else, they provide the push messaging service. And so they, Big Tech, control it.</p>

<p>The <a href="https://unifiedpush.org/">UnifiedPush</a> public open standard changes this. With UnifiedPush, we are no longer merely “users” of our devices but are in charge of them. With UnifiedPush, we can choose which service provider will deliver our push messaging. Thereby we are in control of who has the ability to monitor or block our push messaging.</p>

<p>UnifiedPush has been available to those interested, for a while now, but until now it has required installing extra software.</p>

<p>Putting the support for push messaging into the operating system means <del>users</del> people who choose not to be operated by Big Tech will now be able to simply install the apps they care about and immediately have the alternative system working for them.</p>

<h2 id="technical" id="technical">Technical</h2>

<p>I&#39;m going to delve into the technical side of this initial release, because it&#39;s a big interest area of mine. If you are a regular user, I suggest at this stage you might concentrate on <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have" title="You Too Can Have a Freedom-Respecting Smart Phone!">switching to /e/OS or another freedom mobile OS</a> and expect this functionality will be maturing quickly from now on and soon be seamless. If you&#39;re an early adopter or interested in its development, read on.</p>

<p>I am trying it out. I already run /e/OS on my main phone and upgrading to version 2.5 was simple with the built-in upgrader.</p>

<p>The OS embeds a custom fork of <a href="https://ntfy.sh">ntfy</a>, calling itself “foundation.e.ntfy 1.17.0”. So, congratulations also to <a href="https://ntfy.sh">ntfy</a>! At this stage the developer of ntfy, Philip Heckel, <a href="https://matrix.to/#/!KQaqifczWbCaidLETg:matrix.org/$Fpj8SD6Cih0sFmtGgLgxWINMWrHJs2711YzLP5zhWMM?via=foad.me.uk&amp;amp;via=t2bot.io&amp;amp;via=matrix.org">told me</a> in <a href="https://matrix.to/#/%23ntfy:matrix.org"><code>#ntfy</code></a> room he was “not yet involved” in this development and this is the “First I&#39;m hearing about it.”</p>

<p><a href="https://ntfy.sh">ntfy</a> is a notification system that can also provide UnifiedPush service. It is so good at this job that it has for some time been the UnifiedPush implementation recommended for most people. One can install the <a href="https://ntfy.sh">ntfy</a> app and it provides UnifiedPush service to our other apps.</p>

<p>When we install the ntfy app ourself, we may either let it use the creator&#39;s default server (at <code>ntfy.sh</code>) or configure it to use our choice of ntfy server, if we know of one or if we run our own. As with anything, using someone else&#39;s server comes with conditions and restrictions, especially if we don&#39;t pay for the service, so we need to think about that.</p>

<p>Let&#39;s see what /e/OS does.</p>

<h2 id="if-not-google-s-then-whose-server" id="if-not-google-s-then-whose-server">If not Google&#39;s then Whose Server?</h2>

<p>In this push service built in to /e/OS, there is no configuration UI. There is a tiny settings UI where we have to “enable” the service — see below. Technically, the full ntfy UI is also available, but not accessible through the normal system UI — neither the app launcher nor the settings. But as curious techies we can hack in to it if we like. See below.</p>

<p>What we can do is install and use the <a href="https://f-droid.org/en/packages/org.unifiedpush.example/">UP-example</a> app. Click the “REGISTER” button, and we discover it&#39;s preconfigured to connect to... . o O (their own ntfy server?) No! It connects to ntfy.sh, the server run by the author of ntfy. Hmm.</p>

<p>I should say that I found this while <strong>not</strong> signed in to Murena&#39;s “e cloud” services. It&#39;s possible and would make some sense if it would point to a different server if signed in. I will be interested to find out.</p>

<p>The first thing to comment on, then, is Murena will surely need to run their own push server, for privacy and scaling and economic reasons, or else make an agreement with ntfy. In the short term, to get things started, it may be acceptable for everyone to be subject to the free (gratis) ntfy service&#39;s rate limits and other conditions. That&#39;s something that can be changed later, seamlessly, because UnifiedPush doesn&#39;t require app (server) developers to know or care which service provider they will eventually be connecting to.</p>

<p>Secondly, for privacy and self-determination reasons, there should be a way to use our own choice of server, but not necessarily as a dedicated configuration option. A better way might be to tie it to the main Nextcloud account through a single-sign-on, so that when we set up the phone we have only to make that one choice of service provider and expect it to cover all services. That would give people the advantage of simplicity which is how the Big Techs play that game, but now with open standard technologies enabling us to have a choice among service providers.</p>

<p>When an app registers for UnifiedPush service, if more than one distributor is installed, it asks which to use. A normal user would have only one, and would not see this. Here as an experimentor and developer I already had both ntfy and NextPush installed:</p>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241119-UP-chooser.png" alt=""></p></blockquote>

<p>It&#39;s not ideal that it identifies as “ntfy”, exactly the same as the official ntfy app. I expect this will soon be changed to /e/OS branding.</p>

<p>The tiny settings UI is found a the bottom of the system settings menu.</p>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241116-eOS-ntfy-Settings1.png" alt=""></p>

<p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241116-eOS-ntfy-Settings2.png" alt=""></p></blockquote>

<p>It&#39;s disabled by default. In this state, the UnifiedPush service is still advertised to apps, and they can register, but push messages are not delivered. (I suspect this isn&#39;t how we want the disabled state to be. Probably it should not advertise as available.)</p>

<p>That&#39;s all the configuration we get in this version of /e/OS.</p>

<p>(Aside: I couldn&#39;t find this in settings, to begin with. Searching in settings for “ntfy” or “push” or “unifiedpush” doesn&#39;t return any results, for me.)</p>

<h2 id="let-s-hack-in" id="let-s-hack-in">Let&#39;s Hack In</h2>

<p>As a developer we can access the ntfy UI through the system terminal, for example through an ADB shell (running this command on a USB-connected computer with “adb” tool installed, with ADB USB debugging enabled in the phone&#39;s developer settings):</p>

<pre><code class="language-sh">adb shell am start -n foundation.e.ntfy/io.heckel.ntfy.ui.MainActivity
</code></pre>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241119-eOS-ntfy-UI-main.png" alt=""></p></blockquote>

<p>Just the same as in the user-installed ntfy app. (I can compare them side by side because I also have it installed, because I was already using it before this upgrade.)</p>

<p>We first notice this screen prominently shows some warnings about battery optimisation and choice of connection protocol. Are these warnings relevant to this version?, I wonder. (At first it showed only the first, and later both.)</p>

<p>And it lets us open its settings. In the ntfy settings we can choose our own server, and I can confirm this takes effect and works.</p>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241119-eOS-ntfy-UI-settings.png" alt=""></p></blockquote>

<p>This screen also shows the currently subscribed topics — here, the “example” one — and after configuring it to use my own server, the displayed URL confirms that. (Generally one “topic” corresponds to one app.)</p>

<h2 id="ntfy-not-nextpush" id="ntfy-not-nextpush">Ntfy Not NextPush?</h2>

<p>I&#39;m a little surprised Murena chose ntfy, seeing as their system is closely coupled to Nextcloud: there is also <a href="https://unifiedpush.org/users/distributors/nextpush/">Nextpush</a> (source <a href="https://codeberg.org/NextPush/">on Codeberg</a>, yay!), a Nextcloud-hosted UnifiedPush server module and its client app, that could be used instead. Perhaps they found ntfy is more stable or refined than Nextpush.</p>

<p>UnifiedPush developer S1m says the “Next version of NextPush will be a lot more stable, and I&#39;ve rewritten the UI.”</p>

<h2 id="the-future" id="the-future">The Future</h2>

<p>While UnifiedPush is pretty good standard already, it is still maturing. Some important, recent improvements are making their way into the standard and into implementations like ntfy right now. These include full compatibility with the WebPush standard, and a <a href="https://unifiedpush.org/developers/spec/android/#service-to-raise-to-the-foreground">better way to wake an app</a> without it needing permission for unrestricted battery usage.</p>

<p>An adjacent recent development is <a href="https://wrily.foad.me.uk/davx5-developing-dav-push-standard">DAV Push</a>, an open standard for pushing instant updates to our shared files, calendars and contacts through CalDAV, CardDAV and WebDAV, which can also work through UnifiedPush.</p>

<p>To ensure people can exercise their right NOT to depend on Google, we have wider work to do. Integrating a UnifiedPush distributor is one useful step towards it. Beyond this, we need to be working with the developers of popular apps to get them supported, sharing this development across the freedom mobile OS ecosystem, deploying servers, ensuring reliability, and more. I write about this in a follow-up post: <a href="https://wrily.foad.me.uk/unifiedpush-wider-developments">UnifiedPush — Wider Developments</a> .</p>

<h2 id="conclusion" id="conclusion">Conclusion</h2>

<p>The details of this initial implementation seem to me to indicate an early preview release, with significant changes still needed. But that&#39;s OK: these technical implementation details can be changed.</p>

<p>Leaving that aside, the social side of this is amazing: it&#39;s making UP available to main-stream users. That&#39;s a big deal for the libre mobile ecosystem. Hurray!</p>

<hr>
<ul><li><a href="https://community.e.foundation/t/add-unifiedpush-to-e-os-to-make-it-possible-for-developers-to-avoid-fcm-and-better-support-f-droid-applications/46197/28">Add UnifiedPush to /e/OS to make it possible for developers to avoid FCM and better support F-Droid applications</a> — an /e/ community forum thread requesting UP support.</li>
<li>Source code of /e/ fork of ntfy: <a href="https://gitlab.e.foundation/e/os/ntfy-android">https://gitlab.e.foundation/e/os/ntfy-android</a></li>
<li><a href="https://gitlab.e.foundation/e/os/ntfy-android/-/merge_requests/12">“Integrate ntfy in /e/OS”</a> —merge request, including a simple settings UI (just enable/disable).</li>
<li>Romain Hunault of Murena is <a href="https://cfp.capitoledulibre.org/cdl-2024/talk/89HG8E/">presenting it at Capitole du Libre 2024</a> this afternoon.</li></ul>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a> <a href="https://wrily.foad.me.uk/tag:Murena" class="hashtag"><span>#</span><span class="p-category">Murena</span></a> <a href="https://wrily.foad.me.uk/tag:ntfy" class="hashtag"><span>#</span><span class="p-category">ntfy</span></a> <a href="https://wrily.foad.me.uk/tag:mobiFree" class="hashtag"><span>#</span><span class="p-category">mobiFree</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os</guid>
      <pubDate>Tue, 19 Nov 2024 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Google-Free Push Messaging for Google-Free Phones</title>
      <link>https://wrily.foad.me.uk/google-free-push-messaging-for-google-free-phones</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;UnifiedPush open-standard push messaging complements degoogled android-compatible phone OS&#39;s such as LineageOS.&#xA;&#xA;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. &#34;degoogled phones&#34;. 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, &#34;yes!&#34;&#xA;&#xA;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 &#34;distributor&#34; component, there are multiple successful implementations deployed.&#xA;!--more--&#xA;&#xA;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).&#xA;&#xA;Why Would I Care?&#xA;&#xA;Why would I care how my push notifications reach my phone? What difference does it make to me?&#xA;&#xA;That&#39;s a good question. Inside a building that has a good heating, ventilation and air conditioning system, we don&#39;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&#39;t change that. The immediate, concrete result is the same. So it&#39;s not about wanting it to function differently; that&#39;s not why I care.&#xA;&#xA;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&#39;s service, but I am not happy to be forced to use them, to have no choice, if I can&#39;t leave no matter how bad it gets. What if I don&#39;t like Google monitoring my notifications to know what I&#39;m doing? What if I don&#39;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&#39;t want to condone their business model by using it, but I still want to be notified when I have messages?&#xA;&#xA;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.&#xA;&#xA;When we allow ourselves to become dependent on any particular company&#39;s service, and yet do not regulate it as a public service provider, then we subject ourselves to the company&#39;s whims, priorities and values, which are different from ours. They will inevitably act against public interests.&#xA;&#xA;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.&#xA;&#xA;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.&#xA;&#xA;It is the same reason why I support: open Ed-Tech, degoogled phones, #matrix, #fediverse, freedom software, open-source hardware, #rightToRepair.&#xA;&#xA;Involving the OS ROM&#xA;&#xA;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.&#xA;&#xA;Some ways an OS like LineageOS could usefully be involved to improve the UnifiedPush experience are:&#xA;&#xA;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?)&#xA;providing a convenient way to let the user (or the OS distribution provider) configure the distributor&#39;s U-P server address: perhaps rather than using an ad-hoc UI provided by the distributor app, it could integrate with &#34;accounts&#34; settings.&#xA;potentially providing a system settings UI for monitoring the U-P connections and which apps are using them.&#xA;&#xA;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&#39;m sure the folks involved will work out what is best.&#xA;&#xA;Constraints, FCM Fallback, non-Android&#xA;&#xA;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&#39;s FCM, to use U-P instead. The apps must be modified.&#xA;&#xA;However, the inverse is possible: a UnifiedPush aware app can automatically &#34;fall back&#34; to using Google&#39;s FCM if U-P support is absent and FCM support is present. See details of the Embedded FCM Distributor in UnifiedPush documentation.&#xA;&#xA;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&#39;s it is unlikely to be possible, nor to make much sense: FAQ.)&#xA;&#xA;Packaging a UnifiedPush Distributor&#xA;&#xA;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.&#xA;&#xA;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.&#xA;&#xA;History&#xA;&#xA;A rough time line of UnifiedPush development. (From light research and having followed it through its development.)&#xA;&#xA;2018: FOSS-Push planning&#xA;2019: OpenPush -- defines the architectural concept&#xA;2020: UnifiedPush -- building on OpenPush concept to a complete specification&#xA;2021: Gotify -- a FOSS push system -- was forked to add UnifiedPush support&#xA;2021: NextPush -- NextCloud-based UnifiedPush system created&#xA;2022: ntfy -- a FOSS push system -- adds UnifiedPush support&#xA;now: more and more apps use UnifiedPush for google-free push support&#xA;&#xA;Conclusion&#xA;&#xA;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:&#xA;&#xA;What do we want? UnifiedPush!&#xA;&#xA;When do we want it? Now!&#xA;&#xA;I would love to work on any freedom tech project bringing UnifiedPush to a wider audience.&#xA;&#xA;---&#xA;&#xA;See my other posts tagged... #unifiedPush #degoogled #awesomeFOSS&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></p>

<p><strong>UnifiedPush open-standard push messaging complements degoogled android-compatible phone OS&#39;s such as LineageOS.</strong></p>

<p><em>People who do not want to depend on Google or have them control our devices are using <a href="https://wrily.foad.me.uk/all-i-want-for-christmas-is">android-compatible but not google-controlled phones</a>, 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!”</em></p>

<p>The open standard <a href="https://unifiedpush.org/">UnifiedPush.org</a> has now been created. While not a large number yet, <a href="https://unifiedpush.org/users/apps/">a useful handful of apps</a> already support UnifiedPush, including several matrix and fediverse apps. For its servers and the associated client-side “distributor” component, there are <a href="https://unifiedpush.org/users/distributors/">multiple successful implementations</a> deployed.
</p>

<p>The current situation is such that anyone can use UnifiedPush on an android-compatible device <a href="https://unifiedpush.org/users/distributors/">by installing</a> 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 <a href="https://unifiedpush.org/users/apps/">U-P-aware apps</a> which will then use it (without needing per-app configuration to do so).</p>

<h2 id="why-would-i-care" id="why-would-i-care">Why Would I Care?</h2>

<p><strong>Why would I care how my push notifications reach my phone? What difference does it make to me?</strong></p>

<p>That&#39;s a good question. Inside a building that has a good heating, ventilation and air conditioning system, we don&#39;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&#39;t change that. The immediate, concrete result is the same. So it&#39;s not about wanting it to function differently; that&#39;s not why I care.</p>

<p>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&#39;s service, but I am not happy to be <em>forced</em> to use them, to have no choice, if I can&#39;t leave no matter how bad it gets. What if I don&#39;t like Google monitoring my notifications to know what I&#39;m doing? What if I don&#39;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&#39;t want to condone their business model by using it, but I still want to be notified when I have messages?</p>

<p>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 <strong>public infrastructure</strong>, something that we now assume is available to everyone.</p>

<p>When we allow ourselves to become dependent on any particular company&#39;s service, and yet do not regulate it as a public service provider, then we subject ourselves to the company&#39;s whims, priorities and values, which are different from ours. They will inevitably act against public interests.</p>

<p>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.</p>

<p>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.</p>

<p>It is the same reason why I support: <a href="https://wrily.foad.me.uk/tag:openEdTech">open Ed-Tech</a>, <a href="https://wrily.foad.me.uk/all-i-want-for-christmas-is">degoogled phones</a>, <a href="https://wrily.foad.me.uk/tag:matrix" class="hashtag"><span>#</span><span class="p-category">matrix</span></a>, <a href="https://wrily.foad.me.uk/tag:fediverse" class="hashtag"><span>#</span><span class="p-category">fediverse</span></a>, <a href="https://wrily.foad.me.uk/tag:awesomeFOSS">freedom software</a>, <a href="https://wrily.foad.me.uk/tag:fossGadgets">open-source hardware</a>, <a href="https://wrily.foad.me.uk/tag:rightToRepair" class="hashtag"><span>#</span><span class="p-category">rightToRepair</span></a>.</p>

<h2 id="involving-the-os-rom" id="involving-the-os-rom">Involving the OS ROM</h2>

<p>In android-compatible OS ROM projects such as LineageOS, implementing some core support for the <a href="https://unifiedpush.org/">UnifiedPush.org</a> standard now seems to me like the right way to go. Exactly what form of support is to be decided.</p>

<p>Some ways an OS like LineageOS could usefully be involved to improve the UnifiedPush experience are:</p>
<ul><li>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?)</li>
<li>providing a convenient way to let the user (or the OS distribution provider) configure the distributor&#39;s U-P server address: perhaps rather than using an ad-hoc UI provided by the distributor app, it could integrate with “accounts” settings.</li>
<li>potentially providing a system settings UI for monitoring the U-P connections and which apps are using them.</li></ul>

<p>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&#39;m sure the folks involved will work out what is best.</p>

<h2 id="constraints-fcm-fallback-non-android" id="constraints-fcm-fallback-non-android">Constraints, FCM Fallback, non-Android</h2>

<p>Unlike the situation with some other google APIs, it is important to note that an OS compatibility layer such as microG <em>cannot</em> automatically divert the connections made by apps built using Google&#39;s FCM, to use U-P instead. The apps must be modified.</p>

<p>However, the inverse is possible: a UnifiedPush aware app <em>can</em> automatically “fall back” to using Google&#39;s FCM if U-P support is absent and FCM support is present. See details of the <a href="https://unifiedpush.org/developers/embedded_fcm/">Embedded FCM Distributor</a> in UnifiedPush documentation.</p>

<p>Non-Android devices can use UnifiedPush too, including Linux phones such as PinePhone and Purism Librem. The <a href="https://unifiedpush.org/spec/dbus/">UnifiedPush D-Bus spec</a> may be relevant. (On locked-down proprietary devices such as Apple&#39;s it is unlikely to be possible, nor to make much sense: <a href="https://unifiedpush.org/users/faq/#will-unifiedpush-ever-work-on-ios" title="Will UnifiedPush ever work on iOS">FAQ</a>.)</p>

<h2 id="packaging-a-unifiedpush-distributor" id="packaging-a-unifiedpush-distributor">Packaging a UnifiedPush Distributor</h2>

<p>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.</p>

<p>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 <a href="https://wrily.foad.me.uk/unifiedpush-plan-for-murena-e-os">UnifiedPush Plan for Murena /e/-OS</a> on their forum, without attempting to go into details of integrating the U-P distributor into the ROM.</p>

<h2 id="history" id="history">History</h2>

<p>A rough time line of UnifiedPush development. (From light research and having followed it through its development.)</p>
<ul><li>2018: <a href="https://gitlab.com/foss-push/planning">FOSS-Push planning</a></li>
<li>2019: <a href="https://bubu1.eu/openpush/">OpenPush</a> — defines the architectural concept</li>
<li>2020: <a href="https://unifiedpush.org/">UnifiedPush</a> — building on OpenPush concept to a complete specification</li>
<li>2021: <a href="https://gotify.net/">Gotify</a> — a FOSS push system — was <a href="https://github.com/UnifiedPush/gotify-android">forked to add UnifiedPush</a> support</li>
<li>2021: <a href="https://codeberg.org/NextPush/nextpush-android">NextPush</a> — NextCloud-based UnifiedPush system created</li>
<li>2022: <a href="https://ntfy.sh/">ntfy</a> — a FOSS push system — <a href="https://docs.ntfy.sh/releases/?h=unifiedpush#ntfy-android-app-v152">adds UnifiedPush support</a></li>
<li>now: more and more apps use UnifiedPush for google-free push support</li></ul>

<h2 id="conclusion" id="conclusion">Conclusion</h2>

<p>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:</p>

<p>What do we want? <strong>UnifiedPush!</strong></p>

<p>When do we want it? <strong>Now!</strong></p>

<p>I would love to work on any freedom tech project bringing UnifiedPush to a wider audience.</p>

<hr>

<p>See my other posts tagged... <a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/google-free-push-messaging-for-google-free-phones</guid>
      <pubDate>Mon, 04 Dec 2023 12:42:55 +0000</pubDate>
    </item>
    <item>
      <title>UnifiedPush notifications for your Matrix server with ntfy</title>
      <link>https://wrily.foad.me.uk/unifiedpush-notifications-for-your-matrix-server-with-ntfy</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;I have created an installation role to add the UnifiedPush-compatible push-notification server &#34;ntfy&#34; to the popular Matrix server installer system &#34;matrix-docker-ansible-deploy&#34;.&#xA;&#xA;This Ansible role named &#34;matrix-ntfy&#34; lets a Matrix server operator offer self-hosted Google-less push notifications for their users.&#xA;!--more--&#xA;&#xA;Compatible Matrix apps so far include Fluffychat and Schildichat. Announced in TWIM 2022-06-17 Element&#39;s Android app will soon be UnifiedPush-compatible too.&#xA;&#xA;UnifiedPush&#xA;&#xA;The ntfy server implements the UnifiedPush standard. Developed around 2021, this free and open source standard lets a user choose to receive push notifications through their own (or preferred) push server instead of through Google&#39;s FCM push-notification servers. To do so, a user first installs ntfy on their device and tells it where their preferred ntfy server is. Then any UnifiedPush-compatible matrix client apps, and indeed some non-matrix apps too, will automatically use it. This is particularly valuable for people who choose a de-Googled Android-compatible phone such as LineageOS or /e/OS, that is not connected to Google services.&#xA;&#xA;Being an open standard, there are other UnifiedPush servers besides ntfy. And, while particularly useful with Android, it can also be used on other platforms.&#xA;&#xA;On the server side&#xA;&#xA;A matrix server such as Synapse will send push notifications via ntfy, for a given user/device/app combination, when the user&#39;s matrix client app asks it to do so. The matrix server then pushes those notifications to the ntfy server&#39;s built-in &#34;matrix push gateway&#34; API. The matrix server can continue to send push notifications for other users and other apps in other ways.&#xA;&#xA;Development of the &#34;matrix-ntfy&#34; role&#xA;&#xA;Developed at my trax.im, the role is now integrated in &#34;matrix-docker-ansible-deploy&#34; and being announced in TWIM, and in the project chat rooms mentioned below.&#xA;&#xA;I am using it myself in my personal matrix server. If you are willing to use it or review it or test it and report back in the \#matrix-docker-ansible-deploy:devture.com room, that would be very helpful.&#xA;&#xA;Project web sites and their matrix chat rooms&#xA;&#xA;the new &#34;matrix-ntfy&#34; role, in progress | (choose one of the project chat rooms below)&#xA;matrix-docker-ansible-deploy | \#matrix-docker-ansible-deploy:devture.com&#xA;ntfy | \#ntfy:matrix.org&#xA;UnifiedPush | \#unifiedpush:matrix.org&#xA;&#xA;Read More about UnifiedPush&#xA;&#xA;UnifiedPush.org web site&#xA;On F-Droid News: UnifiedPush: a decentralized, open-source push notification protocol&#xA;On my blog: articles tagged #unifiedPush, including Devs - Please Use UnifiedPush&#xA;&#xA;---&#xA;#degoogled #unifiedPush #matrix #awesomeFOSS&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></p>

<p>I have created <a href="https://lab.trax.im/matrix/matrix-docker-ansible-deploy/-/tree/add-ntfy-role/roles/matrix-ntfy">an installation role</a> to add the <a href="https://unifiedpush.org/">UnifiedPush</a>-compatible push-notification server <a href="https://ntfy.sh/">“ntfy”</a> to the popular Matrix server installer system <a href="https://github.com/spantaleev/matrix-docker-ansible-deploy/">“matrix-docker-ansible-deploy”</a>.</p>

<p>This Ansible role named <a href="https://lab.trax.im/matrix/matrix-docker-ansible-deploy/-/tree/add-ntfy-role/roles/matrix-ntfy">“matrix-ntfy”</a> lets a Matrix server operator offer self-hosted Google-less push notifications for their users.
</p>

<p><a href="https://unifiedpush.org/users/apps/">Compatible Matrix apps</a> so far include <a href="https://fluffychat.im/">Fluffychat</a> and <a href="https://schildi.chat/android/">Schildichat</a>. Announced in <a href="https://matrix.org/blog/2022/06/17/this-week-in-matrix-2022-06-17#element-android-website">TWIM 2022-06-17</a> Element&#39;s Android app will soon be UnifiedPush-compatible too.</p>

<h2 id="unifiedpush" id="unifiedpush">UnifiedPush</h2>

<p>The ntfy server implements the <a href="https://unifiedpush.org/">UnifiedPush</a> standard. Developed around 2021, this free and open source standard lets a user choose to receive push notifications through their own (or preferred) push server instead of through Google&#39;s FCM push-notification servers. To do so, a user first installs ntfy on their device and tells it where their preferred ntfy server is. Then any UnifiedPush-compatible matrix client apps, and indeed some non-matrix apps too, will automatically use it. This is particularly valuable for people who choose a de-Googled Android-compatible phone such as <a href="https://lineageos.org/">LineageOS</a> or <a href="https://e.foundation/e-os/">/e/OS</a>, that is not connected to Google services.</p>

<p>Being an open standard, there are <a href="https://unifiedpush.org/users/distributors/#self-host-the-server-difficult">other UnifiedPush servers</a> besides ntfy. And, while particularly useful with Android, it can also be used on other platforms.</p>

<h2 id="on-the-server-side" id="on-the-server-side">On the server side</h2>

<p>A matrix server such as Synapse will send push notifications via ntfy, for a given user/device/app combination, when the user&#39;s matrix client app asks it to do so. The matrix server then pushes those notifications to the ntfy server&#39;s built-in “matrix push gateway” API. The matrix server can continue to send push notifications for other users and other apps in other ways.</p>

<h2 id="development-of-the-matrix-ntfy-role" id="development-of-the-matrix-ntfy-role">Development of the “matrix-ntfy” role</h2>

<p>Developed <a href="https://lab.trax.im/matrix/matrix-docker-ansible-deploy/-/tree/add-ntfy-role/roles/matrix-ntfy">at my trax.im</a>, the role is now integrated in <a href="https://github.com/spantaleev/matrix-docker-ansible-deploy/">“matrix-docker-ansible-deploy”</a> and being announced in <a href="https://matrix.org/blog/category/this-week-in-matrix/">TWIM</a>, and in the project chat rooms mentioned below.</p>

<p>I am using it myself in my personal matrix server. If you are willing to use it or review it or test it and report back in the <a href="https://matrix.to/#/%23matrix-docker-ansible-deploy:devture.com">#matrix-docker-ansible-deploy:devture.com</a> room, that would be very helpful.</p>

<h2 id="project-web-sites-and-their-matrix-chat-rooms" id="project-web-sites-and-their-matrix-chat-rooms">Project web sites and their matrix chat rooms</h2>
<ul><li><a href="https://lab.trax.im/matrix/matrix-docker-ansible-deploy/-/tree/add-ntfy-role/roles/matrix-ntfy">the new “matrix-ntfy” role, in progress</a> | <em>(choose one of the project chat rooms below)</em></li>
<li><a href="https://github.com/spantaleev/matrix-docker-ansible-deploy/">matrix-docker-ansible-deploy</a> | <a href="https://matrix.to/#/%23matrix-docker-ansible-deploy:devture.com">#matrix-docker-ansible-deploy:devture.com</a></li>
<li><a href="https://ntfy.sh/">ntfy</a> | <a href="https://matrix.to/#/%23ntfy:matrix.org">#ntfy:matrix.org</a></li>
<li><a href="https://unifiedpush.org/">UnifiedPush</a> | <a href="https://matrix.to/#/%23unifiedpush:matrix.org">#unifiedpush:matrix.org</a></li></ul>

<h2 id="read-more-about-unifiedpush" id="read-more-about-unifiedpush">Read More about UnifiedPush</h2>
<ul><li><a href="https://unifiedpush.org/">UnifiedPush.org web site</a></li>
<li>On F-Droid News: <a href="https://f-droid.org/en/2022/12/18/unifiedpush.html">UnifiedPush: a decentralized, open-source push notification protocol</a></li>
<li>On my blog: articles tagged <a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a>, including <a href="https://wrily.foad.me.uk/devs-please-use-unifiedpush">Devs – Please Use UnifiedPush</a></li></ul>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:matrix" class="hashtag"><span>#</span><span class="p-category">matrix</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/unifiedpush-notifications-for-your-matrix-server-with-ntfy</guid>
      <pubDate>Tue, 21 Jun 2022 11:00:00 +0000</pubDate>
    </item>
  </channel>
</rss>