Live data from Hacker News

UnifiedPush: A decentralized, open-source push notification protocol

f-droid.org

71–80 of 150 posts

Re: UnifiedPush: A decentralized, open-source push notification protocol

#71

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?

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.

The WebSub spec looks disarmingly simple but also complete for everything I can think of. I've not yet tried to implement it, but I'm waiting for the catch! Thanks for the confirmation.

Re: UnifiedPush: A decentralized, open-source push notification protocol

#72
post #70

Earlier quoted context omitted.

> if keep alive packets are sent at the TCP leve Unfortunately there are lots of bits of hardware in mobile networks that fake acks - ie. TCP level acks will be received very quickly to indicate the mobile network has accepted the data, and will deliver it at some future time out to the internet. The problem is they still send acks even if the remote end is no longer responsive. So you can't reliably use TCP acks to…

Well that sounds utterly repulsive. And somewhat pointless. In fact, I choose not to believe it. Is there some document discussing this kind of functionality?

Products like this: https://www.enea.com/solutions/traffic-management/tcp-accele...

Re: UnifiedPush: A decentralized, open-source push notification protocol

#73
post #35

Earlier quoted context omitted.

If you deliver notifications, you are always leaking metadata around timing. A police unit parked outside a guy’s house and confirmed it was him in the real time chatroom, by cutting his internet and seeing him drop off. If you want real anonymity on the Internet, never use push notifications. Always “pick up your mail” periodically from random endpoints on the Web.

In theory, if you were worried about this, I think you could get around that problem by just constantly send fixed sized encrypted messages large enough to hold any potential notifications. When a notification needs to get sent, you add it to the next outgoing encrypted message. Of course, now the delay for notifications is now coupled to the rate of these messages being sent.

The messages can still be traced to the client picking them up. Cut their networking and the client doesn’t receive the messages anymore… this shows up as a bounced message.

You can accumulate encrypted messages at random urls instead

Re: UnifiedPush: A decentralized, open-source push notification protocol

#74

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?

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

Thanks! As I thought. Long lived sticky foreground notifications tend to annoy folks from my experience. Have you seen complaints?

Re: UnifiedPush: A decentralized, open-source push notification protocol

#75
post #73

Earlier quoted context omitted.

In theory, if you were worried about this, I think you could get around that problem by just constantly send fixed sized encrypted messages large enough to hold any potential notifications. When a notification needs to get sent, you add it to the next outgoing encrypted message. Of course, now the delay for notifications is now coupled to the rate of these messages being sent.

The messages can still be traced to the client picking them up. Cut their networking and the client doesn’t receive the messages anymore… this shows up as a bounced message. You can accumulate encrypted messages at random urls instead

I guess I initially misunderstood what you meant by timing, but that makes sense.

Re: UnifiedPush: A decentralized, open-source push notification protocol

#76
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/

Re: UnifiedPush: A decentralized, open-source push notification protocol

#77
post #35
post #4

Earlier quoted context omitted.

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.

If you deliver notifications, you are always leaking metadata around timing. A police unit parked outside a guy’s house and confirmed it was him in the real time chatroom, by cutting his internet and seeing him drop off. If you want real anonymity on the Internet, never use push notifications. Always “pick up your mail” periodically from random endpoints on the Web.

This would be an interesting protocol. Almost like spread spectrum or frequency hopping in the radio space.

Have many servers who just accumulate encrypted packets and then only the host knows how to reassemble them in order and decrypt.

Could probably be somewhat realtime if executed correctly.

Re: UnifiedPush: A decentralized, open-source push notification protocol

#78

Earlier quoted context omitted.

> There, encryption is unnecessary complexity. If you are sending a small amount of data it is likely a tiny overhead for some notable benefits. 1. If all data is encrypted then no data stands out for being encrypted. 2. It provides integrity which may prevent push servers from changing message to be invalid or triggering parsing bugs in applications. 3. If only encrypted messages are supported it is impossible for u…

I agree that mandatory encryption would massively help privacy, integrity and even compliance [1]. However, the main cost is developer-effort involved in keeping track of keys and implementing encryption. As a small project, ease of adoption has been our most important goal. However, as we work towards better WebPush compatibility [2], I personally absolutely want to promote RFC8291 encryption and make it easy to imp…

> However, the main cost is developer-effort involved in keeping track of keys and implementing encryption.

As soon as you need encryption in at least one place in your software, it's going to happen.

Re: UnifiedPush: A decentralized, open-source push notification protocol

#79

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 que…

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.

Re: UnifiedPush: A decentralized, open-source push notification protocol

#80

Earlier quoted context omitted.

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

Thanks! As I thought. Long lived sticky foreground notifications tend to annoy folks from my experience. Have you seen complaints?

I haven't seen any complaints, but folks who set this up are usually used to having persistent notifications (I currently have 6) without Google services.

At least I replaced the one from my Matrix client with the UnifiedPush-enabled ntfy. Hopefully it'll replace Signal too at some point. KDE Connect? Why not. K-9 mail? I hope, but that would require JMAP or IMAP adjustments.

One option would be to install the distributor as a system app.

Post reply on HN