H
HN HRCB top | articles | domains | dashboard | models | factions | about | exp
home / f-droid.org / item 34094497
+0.24 UnifiedPush: A decentralized, open-source push notification protocol (f-droid.org)
741 points by mikece 1161 days ago | 146 comments on HN | Mild positive Editorial · v3.7 ·
Summary Privacy & Digital Autonomy Advocates
This F-Droid blog post advocates for UnifiedPush, a decentralized, open-source alternative to Google's proprietary Firebase Cloud Messaging push notification system. The content explicitly frames centralized, proprietary notification services as privacy threats and presents UnifiedPush as enabling user control, independence, and privacy protection through architectural decentralization and multiple implementation options. The post demonstrates strong positive alignment with UDHR Article 12 (privacy), and moderate positive alignment with articles supporting digital liberty (Article 3), free expression (Article 19), education access (Article 26), collaborative scientific progress (Article 27), and rights-protective social order (Article 28).
Article Heatmap
Preamble: +0.20 — Preamble P Article 1: ND — Freedom, Equality, Brotherhood Article 1: No Data — Freedom, Equality, Brotherhood 1 Article 2: ND — Non-Discrimination Article 2: No Data — Non-Discrimination 2 Article 3: +0.20 — Life, Liberty, Security 3 Article 4: ND — No Slavery Article 4: No Data — No Slavery 4 Article 5: ND — No Torture Article 5: No Data — No Torture 5 Article 6: ND — Legal Personhood Article 6: No Data — Legal Personhood 6 Article 7: ND — Equality Before Law Article 7: No Data — Equality Before Law 7 Article 8: ND — Right to Remedy Article 8: No Data — Right to Remedy 8 Article 9: ND — No Arbitrary Detention Article 9: No Data — No Arbitrary Detention 9 Article 10: ND — Fair Hearing Article 10: No Data — Fair Hearing 10 Article 11: ND — Presumption of Innocence Article 11: No Data — Presumption of Innocence 11 Article 12: +0.56 — Privacy 12 Article 13: ND — Freedom of Movement Article 13: No Data — Freedom of Movement 13 Article 14: ND — Asylum Article 14: No Data — Asylum 14 Article 15: ND — Nationality Article 15: No Data — Nationality 15 Article 16: ND — Marriage & Family Article 16: No Data — Marriage & Family 16 Article 17: +0.10 — Property 17 Article 18: ND — Freedom of Thought Article 18: No Data — Freedom of Thought 18 Article 19: +0.20 — Freedom of Expression 19 Article 20: +0.10 — Assembly & Association 20 Article 21: ND — Political Participation Article 21: No Data — Political Participation 21 Article 22: ND — Social Security Article 22: No Data — Social Security 22 Article 23: ND — Work & Equal Pay Article 23: No Data — Work & Equal Pay 23 Article 24: +0.10 — Rest & Leisure 24 Article 25: ND — Standard of Living Article 25: No Data — Standard of Living 25 Article 26: +0.20 — Education 26 Article 27: +0.26 — Cultural Participation 27 Article 28: +0.16 — Social & International Order 28 Article 29: ND — Duties to Community Article 29: No Data — Duties to Community 29 Article 30: ND — No Destruction of Rights Article 30: No Data — No Destruction of Rights 30
Negative Neutral Positive No Data
Aggregates
Weighted Mean +0.24 Unweighted Mean +0.21
Max +0.56 Article 12 Min +0.10 Article 17
Signal 10 No Data 21
Confidence 17% Volatility 0.13 (Low)
Negative 0 Channels E: 0.6 S: 0.4
SETL +0.25 Editorial-dominant
FW Ratio 66% 21 facts · 11 inferences
Evidence: High: 1 Medium: 6 Low: 3 No Data: 21
Theme Radar
Foundation Security Legal Privacy & Movement Personal Expression Economic & Social Cultural Order & Duties Foundation: 0.20 (1 articles) Security: 0.20 (1 articles) Legal: 0.00 (0 articles) Privacy & Movement: 0.56 (1 articles) Personal: 0.10 (1 articles) Expression: 0.15 (2 articles) Economic & Social: 0.10 (1 articles) Cultural: 0.23 (2 articles) Order & Duties: 0.16 (1 articles)
HN Discussion 18 top-level · 32 replies
MayeulC 2022-12-22 16:01 UTC link
Wow, that was submitted here quicker than we could do it!

UnifiedPush has been a thing for a while, see the official website: https://unifiedpush.org/

With this blog post, we† tried to clarify a few names. Feel free to point out things that are still unclear, the documentation is pretty much a WIP.

UnifiedPush aims at replacing the push notifications mechanism provided by Google services with something independent, that anyone can self-host or any OS can provide without compatibility issues. It does require small adjustments server-side and client-side for applications assuming Google services.

There is also a Matrix room at #unifiedpush:matrix.org and a Mastodon account at https://fosstodon.org/@unifiedpush

Note: we'll be monitoring this topic for a while, you don't have to reply to this thread.

karmanyaahm and S1m are main authors

notwokeno 2022-12-22 16:10 UTC link
>However, if each app actively maintains a server connection, the OS cannot suspend them.

This is a limitation with Android and not a fundamental network/OS limitation. As long as your protocol allows for long enough keep alive latency you can periodically wake up for a short period and allow apps to service their connections (which is what I'd imagine this does anyway just with a singular app.) This works on Linux if you don't have the extra Android crap getting in the way.

It's kind of a bummer to see bad OS architecture feed into over-complicated protocol/application design.

EDIT: I guess I wasn't clear here. In my experiments I had the background wake up service wake the device up once and applications had just that singular window for all of them to service their connections. The problem with Android is instead applications either keep the phone from suspending entirely or (apparently) have some API allowing them to register their own periodic wake up that isn't shared.

EDIT2: I also want to be clear that this isn't a criticism of NTFY. The developers behind it deserve congratulations for solving a serious problem with FOSS Android apps. My complaint is that the poor architecture and unescisary inflexibility of Android made this such a complex problem in the first place.

eternityforest 2022-12-22 16:18 UTC link
Looks like a cool solution to one of the biggest issues in FOSS on Android.
nightpool 2022-12-22 16:29 UTC link
Why use a new custom-built protocol instead of adding support for the Web Push protocol already supported by Firefox, Chrome, Safari and others? https://web.dev/push-notifications-web-push-protocol/. Now backend developers have Yet Another Push Notifications Protocol to build support for, instead of being able to just easily plug into their existing code. As a benefit, since all notifications through the Web Push protocol are end-to-end encrypted, there's no concern about "trusting" the distributing server like there seems to be in this protocol (based on https://unifiedpush.org/spec/server/)
seydor 2022-12-22 16:40 UTC link
I wish we could extend SMTP to support notifications as self-expiring emails
afandian 2022-12-22 16:41 UTC link
The headline got my attention. I'm looking for a standard for subscribeable notifications / callbacks to update users of data changes in an API. Bonus point for federated. But server to server, not server to client. Double bonus points for connecting to consumer services like Zapier or IFTTT.

I'm planning to use WebSub and/or RSS, but on the look out for others. Any pointers?

rgovostes 2022-12-22 17:20 UTC link
Off-topic: Sometimes I work on ships that have Wi-Fi for talking to local services, but due to strict metering, Internet access is usually disabled. So most of the time there's no way to get notifications from monitoring systems and your fellow crew, let alone shoreside team members.

It would be nice to have a solution for delivering pushes internally, and also hold open a best-effort connection to a remote server that allows some notifications through.

The last solution I considered was running a Matrix homeserver on the ship with some local channels, and another instance on shore, and using federation to connect them when the uplink is available. Monitoring systems could send their alerts as DMs or to a shared channel.

Then for the notifications, Apple has its Local Push Connectivity API you might be able to use to send notifications within the ship network. I'm not sure if this UnifiedPush would solve the problem on Android. Either way, though, it seems like a lot of engineering effort just for a chatroom.

mixtur2021 2022-12-22 18:16 UTC link
AFAIK Modern Android (>= 8.0) reserves the right to kill your app when running in the background unless there's a foreground toast bound (even then, can still be killed in low memory situations). How does this solution work around that? Is there a need to opt into the legacy "battery saver disabled" mode for the app which more closely mirrors <= 7.0 execution model?
solarkraft 2022-12-22 18:33 UTC link
Apps draining your battery to check for notifications is the worst thing about degoogled Android. With notifications enabled my telegram client can drain my battery in a very low number of hours (got suggestions here? any client supporting UnifiedPush?)

So this is welcome, but it requires application support. And if apps on your phone use both GCM and UnifiedPush you still end up with multiple providers. But at least I think I can trust UnifiedPush to be light on my battery.

janosdebugs 2022-12-22 18:42 UTC link
This is a nice concept, but I owned more than one Android phone that would ignore the battery optimization settings and kill the applications anyway.
satvikpendem 2022-12-22 20:16 UTC link
I'm using Google Firebase Cloud Messaging [0] which allows pushing notifications to devices even if they're asleep, unlike local notification services where the device must be awake and the app must be active.

Will this service allow the same thing FCM does, including waking up the device? I'm looking at both iOS and Android devices, I see there's Flutter available but not iOS necessarily in the docs [1]. Related question, will the Flutter version also work for iOS devices? I know FCM (and its Flutter SDK) works for both, as well as web.

[0] https://firebase.google.com/products/cloud-messaging

[1] https://unifiedpush.org/developers/intro/

anotherevan 2022-12-22 21:43 UTC link
Any possibility this will mean I can push a notification from my home automation that gets displayed on my Google TV?
sohkamyung 2022-12-22 22:33 UTC link
Interesting. This could have interest from China, since they have to use Android without the Google push service, causing battery drain issues. They are trying to come up with their own push notification service.

The issue is highlighted in this article [1].

[1] https://www.sixthtone.com/news/1011308/the-real-story-behind...

w4eg324g 2022-12-22 22:33 UTC link
Why is it named decentralized when it uses a central server to route/distribute the messages?
geokon 2022-12-23 05:47 UTC link
Does anyone know how de-Googled Chinese phones work? How do programs like Wechat go about it?
javaunsafe2019 2022-12-23 06:34 UTC link
Please don’t get me wrong but I wonder what is the use case for this. First of all this tries to solve a problem that has already been solved by the mobile device OS layer within IOS and Android and furthermore is only working for Android. Why should anyone use this?
joelthelion 2022-12-23 06:36 UTC link
Would this be vulnerable to spam?
amelius 2022-12-23 08:52 UTC link
This sounds like it could be the reverse of REST, so could be pretty important and perhaps it can grow into a W3C spec.
ajvs 2022-12-22 16:14 UTC link
Thanks for your great work creating this protocol. Hope more app developers add support for it, especially for privacy focused apps like Signal which by relying on Google servers are leaking metadata.
MayeulC 2022-12-22 16:25 UTC link
You can do that, but if keep alive are not synchronized (I don't think there is a mechanism to do so), you will wake more often if you keep more connections open.

I think the OS could synchronize them if keep alive packets are sent at the TCP level, but that would be hard to do at a higher level.

Letting a single program handle persistent connections leaves a lot more potential for energy efficiency optimizations.

kitsunesoba 2022-12-22 16:27 UTC link
I would think that in order to not have an obvious negative impact on battery life, it would be necessary for the OS to coalesce app notification service keepalives, performing them in scheduled batches instead of the moment an app requests one. That should be roughly equal to the current situation with APNS/GCN, where the OS can schedule network maintenance during periods where the device and antenna(s) are likely to be awake already.
dncornholio 2022-12-22 16:29 UTC link
Does the user require to install a separate app to receive UnifiedPush messages?
dijit 2022-12-22 16:34 UTC link
This isn't just for notifications to clients themselves, this would handle the federation of notification's.

Similar to how Apples push notification service works already (APN: https://en.wikipedia.org/wiki/Apple_Push_Notification_servic...)

jitl 2022-12-22 16:40 UTC link
> you can periodically wake up for a short period and allow apps to service their connections

For this to work, you need apps to somehow conform to a standard timing and respond to a signal that says "hey, the OS is awake for you to do network things". Now each developer needs to implement some special code that understands the situation. After a while, all the devs start using libSleepyNetwork because getting those details right is hard. The libSleepyNetwork people realize that they can use a system daemon to further coalesce work for greater efficiency (one event loop is better than N event loops), so now all the consumer program C APIs are now backed by IPCs to the daemon.

This is exactly what's already happened on Android, except libSleepyNetwork is implemented by either Google, or these people. I don't think it's bad OS design at all. It's chasing efficiency via abstraction that encapsulates some complex coordination.

binwiederhier 2022-12-22 16:41 UTC link
> This is a limitation with Android and not a fundamental network/OS limitation. As long as your protocol allows for long enough keep alive latency you can periodically wake up for a short period and allow apps to service their connections (which is what I'd imagine this does anyway just with a singular app.)

The protocol does not specify how the distributor and push server communicate or keep a connection going. It's up to them to define an energy efficient way to do that. For ntfy [1], a single WebSocket or JSON stream connection is used to deliver messages to the device. This is very energy efficient and consumes <1% of battery on most phones.

As for regular wakeups (for polling), Android does not allow periodic work to be done more frequently than every 15 minutes, which is obviously not frequent enough to be useful.

> It's kind of a bummer to see bad OS architecture feed into over-complicated protocol/application design.

This is somewhat true. The restrictive Android eco-system is what led to the creation of UnifiedPush, but it's far from complicated IMHO

Disclaimer: I am the maintainer of ntfy [1], one of the UnifiedPush distributors.

[1] https://ntfy.sh

MayeulC 2022-12-22 16:48 UTC link
That use-case sounds a bit similar to Webmentions: https://en.wikipedia.org/wiki/Webmention

See also... The See also section in that article :)

You say it would be server to server, but are both publicly reachable?

MayeulC 2022-12-22 16:52 UTC link
It would also be nice to extend IMAP to support UnifiedPush...

The use-case would be new mail notifications; it wouldn't be too hard to do, and would be quite useful, as I typically have multiple e-mail accounts.

You could however build a UnifiedPush-compliant SMTP-based or IMAP-based distributor.

lern_too_spel 2022-12-22 16:54 UTC link
Congrats! It's always surprised me that Amazon or one of the other Android vendors didn't do this themselves to make porting to FireOS or other services-included Android distributions easier, but I hope you get funding from them for doing their job for them.
emersion 2022-12-22 16:55 UTC link
This is partially explained in the blog post.

I'm personally using UnifiedPush HTTP endpoints as-if they were Web Push, and it just works. I handle decryption manually on the receiving end.

karmanyaahm 2022-12-22 16:56 UTC link
UnifiedPush is compatible with WebPush: both just involve an HTTP POST to a specific URL. If your application server supports WebPush, it can send encrypted notifications to UnifiedPush servers (that is how we're planning to support Telegram, for example). You can then decrypt these notifications in the app [1]. However, some protocols only send a wake-up ping or random ID in the push notification, Trifa and Matrix respectively. There, encryption is unnecessary complexity.

However, we don't use the WebPush API between the push server and distributor since there is a lot of scope for innovation in that space (for example Google's FCM uses a custom XMPP based protocol).

[1] One example, https://github.com/UnifiedPush/dart-webpush-encryption

sandGorgon 2022-12-22 17:09 UTC link
this is NOT a limitation of Android. Android has supported wakelock based notification managers for a long time. And FCM works pretty much the same as was mentioned in the OP. The FCM manager maintains one long polled connection to Google notification servers and every other app subscribes to wakelocks from that manager.

Your app is only woken up by the OS if FCM receives a notification for you. For e.g. Xiaomi will not wake you up even if you get a notification, unless you're on a white list (the much glorified Xiaomi whitelist). When Android is put in power saving mode, the FCM manager optimized this even further.

EGreg 2022-12-22 17:10 UTC link
Sorry if I’m not understanding something but…

Doesn’t Apple and Google on the OS level only allow push notifications to come from its own services? Like, they look for the signature to be compatible with https certificate etc. Otherwise the phone could have a ton of push notifications incoming from anywhere on the Internet. The APN service for instance would only route notifications to a phone if it came from a registered website. How do you get around this?

As far as I know, even for VOIP permissions, iOS only wakes your code up if ITS APNS SERVICE sends the notification. How are you able to install a long-lived application in the background on iOS?

Similarly, the phone radio is listening for calls from the nearby cell towers in the network, not from absolutely any tower. I guess a Stingray can impersonate one, but they would probably need to fake the attestation, right?

karmanyaahm 2022-12-22 17:25 UTC link
One of the first uses of UnifiedPush was to self-host the whole Matrix messaging stack. In fact, we have already had someone in the UnifiedPush chat set this up on their ship [1]. Matrix + UnifiedPush would be perfect for a disconnected situation on ships (or Mars colonies :)

[1] https://matrix.to/#/!vwmBiTqilorqNCbGab:matrix.org/$hJpXxhVR...

binwiederhier 2022-12-22 17:27 UTC link
ntfy [1] would work for you entirely in the LAN, if you self-host the server and the phones are connected to the same Wifi. It'll only work for Android phones though, since iOS forces APNS for push notifications.

ntfy is also a distributor for UnifiedPush, so you're not entirely off topic here. Hehe.

Disclaimer: I am the maintainer of ntfy.

[1] https://github.com/binwiederhier/ntfy

kevincox 2022-12-22 17:34 UTC link
WebSub + RSS/Atom is a good option for relatively slowly changing data. (Maybe at most a couple of times an hour). It is nice because it is opt-in and an enhancement on the regular polling API.

Using WebSub or UnifiedPush would technically very similar but you need a way for the client to pass you the subscription information. WebSub has a standard discovery process to manage this.

gsich 2022-12-22 18:09 UTC link
Notifications would work (and does), maybe a sieve rule for deleting old messages?
karmanyaahm 2022-12-22 18:22 UTC link
Most distributors both show a foreground notification at all times and require exempting them from battery optimization. Because of its efficient design, something like ntfy only uses a few percent of battery per day [1].

System-level integration into Android ROMs would eliminate the need for those things.

[1] https://docs.ntfy.sh/faq/?h=battery#how-much-battery-does-th...

pmontra 2022-12-22 18:36 UTC link
You can self host a Gotify server (single file executable, web interface), install the app, set it to connect to the server on the local network. Sending a message is as easy as a curl to the server. It will show up in the apps.

https://gotify.net/

https://github.com/gotify/android

The problem is that there is no iOS app. You could use the browser there but maybe ntfy would be a better fit (Android + iOS.)

yamtaddle 2022-12-22 18:51 UTC link
> It would be nice to have a solution for delivering pushes internally, and also hold open a best-effort connection to a remote server that allows some notifications through.

... email?

karmanyaahm 2022-12-22 19:21 UTC link
> telegram client can drain my battery in a very low number of hours (got suggestions here? any client supporting UnifiedPush?)

It's possible. There is nothing ready right now.

[1] https://github.com/UnifiedPush/wishlist/issues/18

[2] https://github.com/Telegram-FOSS-Team/Telegram-FOSS/issues/5...

karmanyaahm 2022-12-22 20:26 UTC link
Yes, this is an FCM replacement on Android (and it can easily fall back to FCM if the user doesn't have UnifiedPush). There is no native UnifiedPush on iOS because Apple doesn't allow background services. The server side to support both is simple, but on the client you would need code for both FCM (for iOS) and UP (for Android). It would be interesting to build an FCM wrapper for iOS into the UP Flutter library.
binwiederhier 2022-12-22 22:07 UTC link
It's really not that bad. It uses 1% of battery for 17h. Sometimes even less than that and it shows 0% after the entire day.

So it's a hypothetical problem IMHO. There are very few cases or phones i see these days where people complain about battery: https://docs.ntfy.sh/faq/#how-much-battery-does-the-android-...

binwiederhier 2022-12-22 22:12 UTC link
I have been working and running ntfy [1] on my phone for a year now (ntfy is a UnifiedPush distributor), and it is true that Android does kill the app every now and then. But it is instantly restarted. Usually ntfy delivers notifications much much much faster than Google's FCM, especially in doze mode. FCM seems to try and conserve battery much more.

Disclaimer: I am the maintainer of ntfy.

[1] https://github.com/binwiederhier/ntfy

MayeulC 2022-12-22 22:17 UTC link
In addition to what the others wrote (a local Matrix server and UnifiedPush provider such as ntfy would work fine), I suggest you look into p2p messaging systems such as Briar. I think Tox is also p2p?

Lastly, Secure Scuttlebutt was actually designed on a boat for sporadic internet connection and local connections, as well as sneakernet, so that would work too, but I don't think it's designed for IM. Perfect for blogs or facebook-like stuff though.

Have a member of the crew go onshore up to a Wi-Fi AP, it will act as an async data transfer for everyone. You can also exhange data with other travellers, including passing boats.

Interestingly, there are a few Matrix p2p experiments. I wish apple opened their Airdrop feature as that would make proximity networking easier, though that should be achievable with Wi-Fi NAN+P2P.

LinAGKar 2022-12-22 23:59 UTC link
Because you can host your own server, rather than everyone using the same server
alwayslikethis 2022-12-23 00:54 UTC link
the main issue isn't with the foss apps though. Those usually support polling. The actual problem is with other proprietary spyware apps that you're forced to use but they are locking you in with google's FCM. Until there's an easy way to patch those apps we can't really solve this problem
artificialLimbs 2022-12-23 03:39 UTC link
If it can call a site, it can use ntfy.
POPOSYS 2022-12-23 08:15 UTC link
Thank you very much for your hard and important work!

And a special thanks for not forcing us to use a slack channel!

Hopefully other OS projects will follow.

Good health and all the best for 2023!

agsnu 2022-12-23 09:31 UTC link
It looks like this aims to be a replacement for people want to use an Android-based OS but don't want to rely on Google services, normally for reasons of philosophical objection to big tech's de facto surveillance capabilities. So presumably users of GrapheneOS, CalyxOS, LineageOS, etc.

Also since Google is blocked in China, Firebase Cloud Messaging doesn't work there. Android has something like a 75% market share in that market. Some vendors have their own offerings (e.g. Xiaomi MiPush, Huawei PushKit) etc, I could buy that a popular centralised solution would be more attractive than doing N integrations.

MayeulC 2022-12-23 10:13 UTC link
That's an interesting thought, but currently the Server-Server specification is quite trivial, the more complicated part is the Android (and Linux) API, which I don't think the W3C would cover.

There's definitely room for adoption within the freedesktop.org umbrella for the Linux part, once this part is a bit more mature.

Editorial Channel
What the content says
+0.80
Article 12 Privacy
High Advocacy Framing
Editorial
+0.80
SETL
+0.69

Privacy is explicit and central throughout. Content explicitly identifies privacy concerns with Google's proprietary Firebase Cloud Messaging and advocates UnifiedPush as privacy-respecting alternative. Architecture designed to enable user control and prevent corporate surveillance.

+0.30
Article 27 Cultural Participation
Medium Advocacy Practice
Editorial
+0.30
SETL
+0.17

Content advocates for open-source development and community participation in technological progress, presenting UnifiedPush as a collaborative specification that enables distributed implementation.

+0.20
Preamble Preamble
Medium Framing
Editorial
+0.20
SETL
ND

Content emphasizes values of freedom, dignity, and independence from corporate control. Frames user autonomy and choice as foundational values.

+0.20
Article 3 Life, Liberty, Security
Medium Advocacy
Editorial
+0.20
SETL
ND

Content advocates for user liberty and autonomy by identifying centralized service dependence as constraint on independence and presenting user choice as enabling exercise of liberty.

+0.20
Article 19 Freedom of Expression
Medium Framing
Editorial
+0.20
SETL
ND

Content frames decentralized infrastructure as enabling free expression by preventing any single entity from controlling or filtering communication channels.

+0.20
Article 26 Education
Medium Practice
Editorial
+0.20
SETL
0.00

Content provides comprehensive educational material for both users and developers, enabling understanding and adoption of privacy-respecting technology. Step-by-step instructions and development guidance support informed participation.

+0.20
Article 28 Social & International Order
Medium Advocacy Framing
Editorial
+0.20
SETL
+0.14

Content advocates for decentralized infrastructure as a better social and technological order, proposing that rights are better protected through distributed systems that prevent corporate monopoly.

+0.10
Article 17 Property
Low Framing
Editorial
+0.10
SETL
ND

Content enables users to own and control notification infrastructure through self-hosting, relating to property rights and control of digital resources.

+0.10
Article 20 Assembly & Association
Low Framing
Editorial
+0.10
SETL
ND

Content frames open specification and compatibility standards as preventing gatekeeping of participation in notification systems, enabling free association.

+0.10
Article 24 Rest & Leisure
Low Framing
Editorial
+0.10
SETL
ND

Content discusses battery efficiency and resource conservation, relating to device usability and quality of life beyond constant technological demands.

ND
Article 1 Freedom, Equality, Brotherhood

ND
Article 2 Non-Discrimination

ND
Article 4 No Slavery

ND
Article 5 No Torture

ND
Article 6 Legal Personhood

ND
Article 7 Equality Before Law

ND
Article 8 Right to Remedy

ND
Article 9 No Arbitrary Detention

ND
Article 10 Fair Hearing

ND
Article 11 Presumption of Innocence

ND
Article 13 Freedom of Movement

ND
Article 14 Asylum

ND
Article 15 Nationality

ND
Article 16 Marriage & Family

ND
Article 18 Freedom of Thought

ND
Article 21 Political Participation

ND
Article 22 Social Security

ND
Article 23 Work & Equal Pay

ND
Article 25 Standard of Living

ND
Article 29 Duties to Community

ND
Article 30 No Destruction of Rights

Structural Channel
What the site does
+0.20
Article 12 Privacy
High Advocacy Framing
Structural
+0.20
Context Modifier
ND
SETL
+0.69

Page is publicly accessible without login or tracking mechanisms; privacy-respecting content presented transparently with links to documentation and community support enabling informed participation.

+0.20
Article 26 Education
Medium Practice
Structural
+0.20
Context Modifier
ND
SETL
0.00

Page structure designed to educate through clear explanations, step-by-step instructions, and links to comprehensive documentation and community support channels.

+0.20
Article 27 Cultural Participation
Medium Advocacy Practice
Structural
+0.20
Context Modifier
ND
SETL
+0.17

Page structure enables participation through linked documentation, code libraries, and active community discussion channels, supporting collaborative development ecosystem.

+0.10
Article 28 Social & International Order
Medium Advocacy Framing
Structural
+0.10
Context Modifier
ND
SETL
+0.14

Page structure enables participation in decentralized systems by linking to multiple distributor options and providing implementation guidance.

ND
Preamble Preamble
Medium Framing

Content emphasizes values of freedom, dignity, and independence from corporate control. Frames user autonomy and choice as foundational values.

ND
Article 1 Freedom, Equality, Brotherhood

ND
Article 2 Non-Discrimination

ND
Article 3 Life, Liberty, Security
Medium Advocacy

Content advocates for user liberty and autonomy by identifying centralized service dependence as constraint on independence and presenting user choice as enabling exercise of liberty.

ND
Article 4 No Slavery

ND
Article 5 No Torture

ND
Article 6 Legal Personhood

ND
Article 7 Equality Before Law

ND
Article 8 Right to Remedy

ND
Article 9 No Arbitrary Detention

ND
Article 10 Fair Hearing

ND
Article 11 Presumption of Innocence

ND
Article 13 Freedom of Movement

ND
Article 14 Asylum

ND
Article 15 Nationality

ND
Article 16 Marriage & Family

ND
Article 17 Property
Low Framing

Content enables users to own and control notification infrastructure through self-hosting, relating to property rights and control of digital resources.

ND
Article 18 Freedom of Thought

ND
Article 19 Freedom of Expression
Medium Framing

Content frames decentralized infrastructure as enabling free expression by preventing any single entity from controlling or filtering communication channels.

ND
Article 20 Assembly & Association
Low Framing

Content frames open specification and compatibility standards as preventing gatekeeping of participation in notification systems, enabling free association.

ND
Article 21 Political Participation

ND
Article 22 Social Security

ND
Article 23 Work & Equal Pay

ND
Article 24 Rest & Leisure
Low Framing

Content discusses battery efficiency and resource conservation, relating to device usability and quality of life beyond constant technological demands.

ND
Article 25 Standard of Living

ND
Article 29 Duties to Community

ND
Article 30 No Destruction of Rights

Supplementary Signals
Epistemic Quality
0.64
Propaganda Flags
0 techniques detected
Solution Orientation
No data
Emotional Tone
No data
Stakeholder Voice
No data
Temporal Framing
No data
Geographic Scope
No data
Complexity
No data
Transparency
No data
Event Timeline 4 events
2026-02-26 12:20 dlq Dead-lettered after 1 attempts: UnifiedPush: A decentralized, open-source push notification protocol - -
2026-02-26 12:18 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 12:17 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 12:16 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
About HRCB | By Right | HN Guidelines | HN FAQ | Source | UDHR | RSS
build 1686d6e+53hr · deployed 2026-02-26 10:15 UTC · evaluated 2026-02-26 12:13:57 UTC