Hacker News new | past | comments | ask | show | jobs | submit login
Firefox Can Now Get Push Notifications from Your Favorite Sites (blog.mozilla.org)
203 points by e15ctr0n on Jan 26, 2016 | hide | past | favorite | 98 comments



I love the contrast between the motivation statements on Firefox pages vs Chrome pages about the topic. Shows that Mozilla does remember their values, even though we like to bitch about them:

Firefox[0]:

------------

Have you ever wished that a website could notify you when something important happened, even if you didn’t have the site open? Maybe you’ve got an incoming WebRTC call, an instant message, or a financial update. Perhaps your city just declared an emergency snow plowing schedule.

Sometimes you just want to know when something happens.

That’s what Web Push does. It’s available now in Firefox 44.

Further down, they have "What about privacy?" section.

Chrome[1]:

------------

If you ask a room of developers what mobile device features are missing from the web, push notifications are always high on the list.

Push notifications allow your users to opt-in to timely updates from sites they love and allow you to effectively re-engage them with customized, engaging content.

Thank you, Mozilla.

[0] https://hacks.mozilla.org/2016/01/web-push-arrives-in-firefo...

[1] https://developers.google.com/web/updates/2015/03/push-notif...


Yes, thank you, Mozilla for the hypocritical statement. It changes so much about the result!

I wouldn't say "we like to bitch about them", as Panorama, Thunderbird and FirefoxOS were an important part of my technological ecosystem. These points were dealt with much hypocrisy (they're dead but not dead, we just know it because of leaks...), which permanently stained my opinion of Mozilla.


Panorama, Thunderbird and FirefoxOS were an important part of my technological ecosystem

They weren't an important part, or achieving being a part at all, of the ecosystem of the rest of the world, though. Not sure why you think continuing to pour resources into them after they were clearly lost causes is somehow a good idea, let alone it makes Mozilla hypocritical. Aside from the "me me me me it's all about me" syndrome that oozes from your statement.

On the contrary, Web Push is an important feature needed for parity with native apps, so Firefox supporting them is a great result.


Thunderbird has an estimated ~30 million users, and it's just about "me"?

Also, you deliberately deflect the point. The problem was not so much that they killed these projects, but the way they did it. They kept Thunderbird underfunded for a while before pulling the plug via an internal mail. They could have done it in a much nicer and transparent way.

Probably the best is to go back reading how well Pocket furthered Mozilla's mission and helped the web.


They kept Thunderbird underfunded for a while before pulling the plug via an internal mail.

Not sure what "underfunded" means here. Thunderbird works. Email isn't evolving like the web is, so what point is there for Mozilla to throw resources at it? The announcement was to a public blog, but shared with the core contributors via email first. I think that's actually nicer than finding out through Twitter like some other companies do. Your arguments just have no merit whatsoever but apparently you're upset that your pet (and niche) programs don't receive the attention you believe they deserve.

Typical attitude in open source software: the more free something is, the more entitled people feel about it.

What this has to do with Push Notifications is anybodies guess.


> Thunderbird works. Email isn't evolving like the web is, so what point is there for Mozilla to throw resources at it?

Not related to the topic at hand, but I couldn't resist commenting on this point. Actually, what people really wanted out of Thunderbird for a very very very long time was calendaring that would work well with MS Exchange. Not some chat integration or other features people weren't really looking forward to in their email client.

People have managed and do manage with different solutions on the Lightning backend (which was integrated into Thunderbird main) like DavMail gateway, Exchange Provider (now maintained by Ericsson) and so on, but they're still not complete solutions for inviting people, accept/tentatively accept/decline invitations, have acceptance show up for other people properly (like Outlook would), etc. This is one area that could improve a lot and really make people using Thunderbird in an MS Exchange environment (which is at least a few hundred thousand, if not more) quit hanging on to Outlook or Outlook Web Access for "that one thing" that Thunderbird is not adequate for. All this desire does not mean that it's trivial in any way to implement these features, but there are many Thunderbird users who would value such a thing a lot. If that doesn't answer "what point is there for Mozilla to throw resources at it?", then nothing else can.

Another area of improvement is search. When Gloda (the global database and search) was introduced, it was a terrific feature that could look across all emails. I still use it, but sadly, it continues to be highly limited in how one can filter the search results and find the needle in the haystack, and things have not gotten much better with time, in my experience.

Yes, Outlook won in the enterprise. But there was no reason not to continue working on a really good alternative with so many users behind it.

As I've said before, if there were a way to donate to Mozilla and have a say in where that donation (or most of it) goes, I'd definitely be voting for Thunderbird to have my share. I'd like to believe many Thunderbird fans would too.


> Not sure what "underfunded" means here. Thunderbird works. Email isn't evolving like the web is, so what point is there for Mozilla to throw resources at it?

If you look at the arguments people can give against a switch Thunderbird, they make valid points on some lacking features, that terrible solutions like Outlook do have. This is a problem since in some places they force people to use proprietary solutions for email based on these arguments.

>Typical attitude in open source software: the more free something is, the more entitled people feel about it.

Can you really make that judgment? Many people have felt the same way about Mozilla's actions for a while. People who donate and contribute to free software. People who may have found inexcusable the lies about the money agreement on Pocket, among many other things. If you think these people are all spoiled brats, then good for you.

>What this has to do with Push Notifications is anybodies guess.

The initial comment was using this to justify that "Mozilla does remember their values". This is part of browsers improvements to stay competitive, not so much about value.


Of particular note, this also works on Android Chrome. So a site can send push notifications much like an app can. The Facebook mobile site uses it, so I've been able to remove the Facebook app entirely from my phone.

I really wish Apple would implement this as well, as it would remove the requirement for a number of apps that are just thinly wrapped webviews. Sadly, I don't think Apple's business model will allow it...


Apple rolled their own, non-standard Push workalike at https://developer.apple.com/notifications/safari-push-notifi... which is available to members of the $99/yr Mac Developer Program.


...on desktop only. Which, in a way, make it even more glaring that they haven't done it on mobile.


It does make you raise an eyebrow and wonder if they're holding back Safari (which all iOS users have to use in one way or another) to keep people using the app store and giving Apple their 30%.


It is a shame, but not surprising, that they are both holding back Safari mobile AND other browsers from rolling their own full browser (chrome)


I was wondering why that feature wasn't publicized more, now I understand: It's a dev only thing. Thanks for that, settled my curiosity.


Is there any short explanation how this works under the hood?

Does the browser maintain an open connection (like a Websocket) for each subscription, or there are some brokers, or if it can use OS facilities (like GCM/APN on mobile) when available, etc etc.

In particular, I'm curious of privacy implications. When I subscribe - what site knows of me (say, if that's a direct connections, I'm not sure I want to tell every site out there when I'm online), or if any third parties are involved - what they know and do (say, what's about sender and receiver authentication)?

From what I saw (but really not sure I got it right), it seems that I have to trust browser vendor and maintain a live connection to some Mozilla server, that'd listen for events (POSTs from sites) and aggregate them for me. But I'm not sure I understood it correctly.

I'll surely investigate this properly, but reading standards is tough, and end-user introductions written by marketing people are virtually useless. So I wonder if there's a short reading to get the overall picture quick, but still see all the important details.


I believe my article on Hacks (https://hacks.mozilla.org/2016/01/web-push-arrives-in-firefo...), linked from the marketing article, answers all of those questions at a high level and points to docs with more detail.

In short, there's a single, persistent websocket connection between you and a broker service run by your browser vendor. Each subscription has a unique, anonymous URL on that service that gets provided to the website. To prevent abuse, there are throttles / quotas / limits imposed on push messages that do not show user-visible notifications.

The source to Mozilla's broker, autopush, is at https://github.com/mozilla-services/autopush. We recently rewrote it from Go into Python, which we now run with PyPy in production.


> We recently rewrote it from Go into Python

I am used to porting things the other direction; can I ask why you moved to Python for this service?


Ben Bangert has given a presentation about this that was discussed here: https://news.ycombinator.com/item?id=10402307

The above links to the slides only, here is a video of the talk: https://www.youtube.com/watch?v=_F2peRzJzhU


>> I'm curious of privacy implications.

> a broker service run by your browser vendor

That means that Mozilla, as an example of a browser vendor, knows anything any site which uses that feature wants to notify me, including mails and messages from those sites?


All data brokered by the service must be encrypted to a keypair whose private key is held only by the end user's browser, using the scheme described in the webpush-encryption IETF draft spec at https://tools.ietf.org/html/draft-ietf-webpush-encryption-01


Thanks for all your comments!

I wonder about metadata, though. While Mozilla doesn't know the contents of messages, it's still generally well aware of who (sender IP) is sending messages to whom (receiver IP) - is that correct?

(I suppose this can be somewhat mitigated by running private self-hosted autopush instance and replacing dom.push.serverURL)


Like the sibling comment, I'm also interested in learning about your switch.


> Is there any short explanation how this works under the hood?

Yes, the spec is the most detailed description of what goes on under the hood and it's not too long: https://www.w3.org/TR/push-api/, but here's my attempt at answering each of your questions:

> Does the browser maintain an open connection (like a Websocket) for each subscription, or there are some brokers, or if it can use OS facilities (like GCM/APN on mobile) when available, etc etc.

Yes. Chrome maintains an open connection to Google's push servers, Firefox maintains an open connection to Mozilla's push servers.

> In particular, I'm curious of privacy implications. When I subscribe - what site knows of me (say, if that's a direct connections, I'm not sure I want to tell every site out there when I'm online), or if any third parties are involved - what they know and do (say, what's about sender and receiver authentication)?

The Push connection itself would not reveal whether you are online since it's made to Google/Mozilla and not other individual sites, however the presence of a Service Worker could be used to determine this. For example, a website could send a background notification and check your network connectivity from the Service Worker without necessarily showing you a visible notification. This is already true for push notifications most people already receive from mobile apps.

A common use for these kinds of background notifications would be to do background data loading (such as loading new email messages to view later offline).


Firefox implements a quota system that restricts how many notifications may be sent "without user interaction". This is to reduce the likelihood that one could use this effectively for background tracking and to ensure you won't be swarmed with a gazillion of them if an application server has some bugs on sending notifications.

Bugzilla ticket: https://bugzilla.mozilla.org/show_bug.cgi?id=1153504


Since this does use Service Workers, it's also important to point out that everything needs to be handled via HTTPS for Service Workers to work. [1]

[1] https://developer.mozilla.org/en-US/docs/Web/API/Service_Wor...


More developer-oriented information at https://hacks.mozilla.org/2016/01/web-push-arrives-in-firefo...

I'd also highly recommend checking out the examples at https://serviceworke.rs/


This is a HUGE game changer, so excited. The number one feature request year over year has been around push notifications. It's a really big pain point for a lot of people in media trying to spam users. They block all of the high bandwith offsite resources they try to shove down peoples throats and the scripts to shut down those scripts. Finally, companies can just trick you into accepting notifications and the problem is solved.

This is great for the acerage user too. Social networks are notorious for making it difficult to engage or get updates about your friends. So this will finally eliminate the friction around realtime relationship status changes and well informed election posts


Unfortunately you can click on the notification in Firefox and immediately kill all further notifications from the spammers. Hopefully other implementations will be more friendly to spammers and hide the 'make it stop' button deep in a sub-sub menu under an elusive Settings app.


RSS readers seem like such a good idea, but they've hardly caught on outside of tech groups. They weren't intuitive enough for most people to use, and we didn't want another interface that we had to check. We also didn't want it to fill up our inboxes with notifications when we didn't have time to read.

IMO, that's why Facebook continues to work well. You see updates from the people and the sites you want, and it's not at all overwhelming. There's no backlog of notifications to stress you out.

Done right, I think browser notifications could be the solution we're looking for. I look forward to seeing different implementations. There are already plugins for major CMSs.


> We also didn't want it to fill up our inboxes with notifications when we didn't have time to read.

1) Why would this messaging system deliver fewer notifications than RSS (besides the fact that few sites use this system yet)?

2) Why are popups on my screen a better interface than a mail-like interface? I strongly prefer the latter if I'm receiving many messages; lots of popups seem unpleasant.


RSS and push notifications solve different problems. RSS is for syndicating content: your news feed. Push notifications are for alerting you of interactions: new messages, replies, etc.


Thats because they were never properly rolled into the browser UI. They were either stand along programs you had to be running, or were implemented as "live bookmarks".


Publishers can't serve effectively serve ads through RSS. Ads have to be rolled into the post body and if the feedreader caches images, you can't track impressions.

A way around it is to serve a preview of the article and require readers to read the rest on the publisher's website, but at that point you might as well just use Twitter.


> A way around it is to serve a preview of the article and require readers to read the rest on the publisher's website, but at that point you might as well just use Twitter.

Don't say that. Reading Twitter isn't early as efficient as reading my RSS reader. I dread everyone moving to Twitter.

Also RSS is open and Twitter is not (one reason there are better RSS readers).


This could be RSS feeds without needing an RSS feedreader. Sites you are interested in could just send you updates when they have something you might find interesting. Click it open in a tab and read at your leisure.


For anyone who would like a demo and real-world example, my company put together a website to let you subscribe to Web Push notifications for trending Hacker News stories: https://hackernews.onesignal.com/


> For anyone who would like a demo and real-world example, my company put together a website to let you subscribe to Web Push notifications for trending Hacker News stories: https://hackernews.onesignal.com/

For some reason I only get this working on Firefox Mobile (not on my Windows 10 desktop), but definitely cool.

I can definitely see how this can/will subplant shallow webview-wrapping apps in the long run.


And if you're into Indie music, use this http://www.indiestumblr.com/


so chrome supports the notifications but only if you are currently on the page? is that right?


No. Chrome has supported notifications even when you have no browser windows open since Chrome 42, released mid 2015. https://developers.google.com/web/fundamentals/getting-start...


Is this page out of date or are those two other features related to the push api that arent supported by chrome unrelated to what firefox just released? https://developer.mozilla.org/en-US/docs/Web/API/Push_API


It's not out of date. Chrome does not yet support Message Payloads in the public release, here's their description for it on chromestatus.com: https://www.chromestatus.com/feature/5746279325892608

The workaround for now is to have the service worker fetch the payload from an API endpoint that the sender implements themselves.


>Chrome has supported notifications even when you have no browser windows open

Chrome is literally botnet


Thanks.


I use this feature selectively in Safari now, and am glad to see it in Firefox. Eventually I'm sure I'll run into the problem of getting duplicate notifications from the same sites. I wonder what the solution for that will be... running only one browser at a time is not an option. Maybe I'll have to keep track of and choose just one browser per site for allowing notifications.

Why have two browsers open at once? So that I can be logged into Google services simultaneously with two different accounts (personal and work). Off topic, but would be glad to know if there's another way to do that.


Most Google apps supports a way to have multiple Google accounts active, typically by adding /u/[numeric index of a specific Google account]. Gmail for example:

https://mail.google.com/mail/u/2/#inbox

The "u/2" part indicates that this is the gmail view for the third (counting 0) user

For Google Apps for work, if you go to mail.google.com/a/example.com, it will let you log in separately to an example.com account and then redirect to a url like the one above.


> Most Google apps supports a way to have multiple Google accounts active, typically by adding /u/[numeric index of a specific Google account]

FWIW: instead of manually entering the numeric index, you can enter the full email address instead. so you can enter /u/john.d@work-email.biz or /u/j.doegg@gmail.com. This is handy because the numeric index depends on the order in which you logged into (added) the accounts and I don't want to have to remember that!


Chrome supports multiple user accounts. I do this for my work and personal accounts. You don't have to switch between them; you can have windows from both accounts open at the same time.


Doesn't that require switching account based on tab? Seems easier to just use two browsers than deal with sign-in settings many times / day.


No, you can have one Chrome window assigned to persona "work" and another window assigned to "personal" and they will each have their own sets of cookies and settings and history.


I'm a bit annoyed that Facebook notifies me twice for every message, once on mobile through chrome and once on desktop. Is there any way to retract a notification after it's been sent? I feel like after clicking one, the other should disappear.


Google supports multi-user login. There are some annoyances with it, but it works pretty well for me.


To login to several Google accounts simultaneously I use private/incognito windows


There is a solution for this when it comes to the Push API spec (not for Safari though).

When a notification is received, the browser's Service Worker can send an "I got this" webhook event back to the sender. The sender can then decide if they wish to send a message to other browsers that user may have installed. Note that this does also require a user to be logged in to the site so they can be identified across both browsers.


Can't firefox have multiple user accounts? You'd have to swap back and forth though, which may be less convenient than alt-tabbing over to safari.


Firefox supports profiles, you can use the Profilist extension which makes it easy to switch between (I keep a separate profile for sites I use my work login on) https://addons.mozilla.org/en-US/firefox/addon/profilist/


You can also state which profile to use on startup, I have a shell alias setup for each of my 5 or so profiles, so I can just run ffx_work or ffx_personal etc


I've been using Push Notifications on my site for a few months now [0]. Having gone through the detail on this announcement, I'm a bit confused and would like some clarity.

In Chrome & Chrome for Android, I have to use GCM to let the device know that there's a new message. The service worker then pings the server to find what the notifications are, before displaying them. Firefox supports sending payloads.

How can I distinguish between endpoints registered from FF, so I can send payloads directly without going via GCM?

Thanks

[0] https://movinggauteng.co.za. Users need to log in via social media, and then grant permissions for notifications by clicking on the crossed out bell at the top of the page.


Anyone know of websites that have enabled the push notification feature?


Here's a list of larger ones I'm aware of (These sites have it enabled for Chrome, some may not yet have it enabled for Firefox):

  Facebook
  Vice.com
  eBay
  www.mercurynews.com


Slack chat also displays desktops notifications in Chrome.


Also gitter ( https://gitter.im )


We're using Roost[1] to notify our users for relevant information. There's a demo there.

1: https://goroost.com/try-web-push


Since the feature (as far as I know) started with Safari, some Apple-centric sites were early adopters, so sites like macrumors and appleinsider have it. But as far as more mainstream, one I know of is CNN, which has it for breaking news.


The Safari feature is non-standard. Firefox implements the WebPush API that Chrome also supports. So sites supporting Safari will not automatically work in Firefox.


Facebook supports it, I believe. And maybe Gmail, though that one could be Chrome-only.


Facebook Messenger too (http://www.messenger.com/), although you have to thankfully enable it in the settings.


GMail has notification support in Safari, but it seems to be broken currently.


We at Pushcrew also announced support for Firefox push notifications https://pushcrew.com/blog/firefox-website-push-notifications...

We think it's a game changer too whereby, unlike email spam, users can opt into what information they want and really have much greater control. With Firefox, Chrome and Safari, browser push notifications are getting so much exciting.


This sounds like it will as annoying as the Safari "Download Our App" API. Please tell me I'm wrong.


anybody know if fastmail is planning to support this? that would be cool (even cooler if it could be set up on a per-folder basis) would be nice having a biff equivalent working in the browser without having to code something using IMAP...


Does anyone actually intentionally subscribe to these? I can think of few things more annoying than getting blogspam "notifications" on my laptop.


A great example was given at the Chrome dev summit, which I think highlights the utility.

First, remember that you only need to click 'Yes' when your browser asks you for Push permission. You have revealed nothing new to the website, but provided it a way to contact you later. Think of it as a frictionless temporary e-mail.

So you go to a ticket website, or maybe its even a restaurant website, and there's some event coming up. Huh, yea, you want to know when tickets go on sale or whatever, but no way you want to give out your e-mail address again and get all that spam.

You instead opt for a push notification from the site when the tickets go on sale. Now you will be notified via your browser, and maybe once you see that notification, you're happy, you're done, so you unsubscribe (an option you can click on the notification itself to stop further push messages from that website).

If this privilege is abused, just as easy to cut-off that sole way to communicate that it has with you, right there on the notification. Unlike e-mail, when you kill the Push permission for a site, it has truly lost the ability to bug you ever again.

I'm sure there's plenty of other cases where it might be useful to one-off contact a user when they want to know about something your website provides, and people are (properly) wary about giving out e-mail addresses.


That sounds like a pain to sync between multiple browser instances, though...


Yep, I find them to be really useful from Facebook and I can't wait until Slack implements them.

One of the nice features of Web Push notifications is that they each have an unsubscribe button on the notification itself. So once you don't want to get them from a website anymore, the block button is immediately available.


Your response surprises me, I subscribed to the notifications for less than a day before I unsubscribed. If you don't mind me asking, how many a day do you get and why do you like getting the notifications?


Overall I get about 3 to 4 notifications from Facebook per day, so the quantity isn't too high. It also helps me avoid the habit of frequently loading Facebook to check for new notifications when there usually aren't any.


Thanks for the perspective, checking for notifications could be even more of a distraction in some cases!


I have a few users on https://movinggauteng.co.za using web notifications for transit updates. I'm intentionally not sending many for now, because I'm still working on a way for commuters to choose when to get updates.


This seems like a great use of notifications unlike so many apps where they exist mainly to promote compulsively habitual usage.


Slack already does them for me on desktop chrome.


Yes. It can finally let you sign up without an email and without a password!

Just visit the site, get an infinite session, and voila!

Logging in from a different machine? Cleared cookies? No problemo - to restore your session, get a notification, click it and session restored!

This is the poor man's "iCloud" also. Basically your google login or firefox login is your master login. It's basically same facebook connect - another identity provider. Move over personas! We've got a new OpenID in town. Except instead of email providers it's the browser vendors.

NOTE: This doesn't solve the problem of power dynamics -- browser vendors are still pretty centralized -- but does make it super simple to let users of these browsers get a account on a site without an email, mobile number or password, at least on the desktop.


Not sure why this is downvoted but I think this is actually a potentially interesting use for these!


I subscribe to:

facebook.com forums.meteor.com

I find them useful.


So does this mean I'll get even more of those annoying messages about adding notifications like in Safari?


Somebody make this into a WordPress plugin, so people can subscribe to category notifications without the need for RSS + Mailchimp. Make millions of bloggers happy.


I'm confused why it depends on a centralized relay. If it has to maintain a connection anyways it could just as well be a standard like favicon.ico.


Excellent - I've been looking for a replacement for active desktop channels since 2002.


I can't believe how excited I am about this.

My only apprehension is will the big vendors not push to their competition? Like will GMail push to IE, Firefox, and Safari and vice versa?


I can't find a menu to see all push subscriptions in firefox. Going to each individual page to unsubscribe sounds like a pain.

EDIT: about:permissions does the trick


Could you use this on someone's Twitter? I have a bear of a time knowing when new content is posted.


That's up to Twitter to implement it.


Sounds like Web slices, which Microsoft just killed off: https://en.m.wikipedia.org/wiki/Web_Slice


Meanwhile, I sit here with the firefox usage pegged at 50%, and no way to tell which tab is killing the CPU. There's a 9-year-old bug open, requesting this feature. Now, before the fanboys jump in and say "it's open source, why don't you do it?", I'll admit that my hacking skillz are not enough to dive into Firefox source.


There's been a CPU profiler in the debugging tools for over a year, and before that there was one in the addon repository with documentation on the mozilla wiki.

Could be easier (like Chrome's task manager) but it's not as hard as you seem to think it is.

P.S. Chrome's task manager isn't accurate anymore because now a bunch of work is offloaded from the per-page processes to special catch-all processes like the 'GPU Process'. So this is actually a harder problem to solve than it seems at first glance...


There is also about:performance, though I'm not sure whether that has made its way to release yet.


>There's a 9-year-old bug open, requesting this feature.

Well is it a feature-request that a simple firefox extension could handle? Or is it a bug report about something inherently wrong with Firefox?

Because it sounds like a feature request to me.


It's a feature request. Without access to the innards, I don't think an extension would be able to do it.


I guess they were waiting for Electrolysis to be integrated in official release, has that already happened?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: