< CloudServices(Redirected from Services/Notifications)
What is "Notifications"?
Notifications is designed to allow brief messages to be sent to a user however they are connected. Somewhere between email and IM lies Notifications.
Notifications are built around a pseudonymous, 256bit+ entropy, public identifier. Sites post messages using that identifier to one of several methods. (URL, Email, etc.) Notifications may be human readable, or opaque, machine readable content. The user has full control over whether or not to receive notifications from a party, allowing for "chatty" or compromised IDs to be disabled or removed.
Get in touch
You can reach the developers of this project by:
irc: irc.mozilla.org #notifications
Preliminary Code and Documentation
- Introducing Notifications
- How to add Push Notifications to your site
- Push Notification Server
- Push Addon for Firefox
- Firefox Notifications Crypto library
- Push Addon with Crypto
Issues and concerns
- What about spam/viruses/evil?
- That's a valid concern, and one we are thinking about. Here are our thoughts so far:
- A big enough namespace.
We're using 64 base36 characters (0-9a-z), which produces log2(36) =~ 5.17 bits per character * 64 characters = 330 bits or just north of [2 duotrigintillion] possible combinations. Figuring out which one of that namespace is yours is fairly remote.
- Limit who can talk to you
A notification is an established relationship between yourself and a site. It's a one-to-one sort of thing.
- Making sure you're in control
Ultimately, we want to make sure you're in control. Sites can't start sending you notifications until you allow them. You can also disable notifications from sites that become too chatty or start acting strangely.
All communication will be sent over secure channels so that you're the only one who can see your messages.
- A big enough namespace.
- How fast are notifications delivered?
- As fast as possible. They're not instant, since there can be some delay involved with various systems. Plus, you may not be running a device that can receive them at this time. In short, don't plan on using this system for your next First Person Shooter game or for your Day Trading application, but it should be fine for most other applications.
- Will I get spammed by the same message over and over?
- Ideally, no. While we can't make any promises when we send messages to third party services like iOS or Android, we are thinking about having the notifications server act like an IMAP service and note that you've read or deleted a given message. We're still working on that part.
- Why not use SIP or any of the other well defined messaging protocols
- We'd love to, and it's something we're looking at as well, but there are significant problems with many of them. Mostly around things like the fact that they require a dedicated socket (which is very expensive for us to support), or require fixed IP addresses (which is problematic both for mobile devices and for most ISP users) or other reasons. To solve some of those, we're looking at doing a sliding window polling loop similar to how Sync gets updates. (Frequent checks when active, then backing off to longer delays between checks). We've seen that's a fairly good compromise between speed and cost. Now, if folks are willing to pony up for us to be able to run lots of machines with dedicated connections (or if some other organization with far deeper pockets wants to provide that service) then more power to them.
That said, if we're missing a golden opportunity to use some protocol we may not know about (there are a lot of them), let us know!
- Doesn't this mean you're the choke point for my notifications?
- Yeah, unless you want to take our source code and build your own server. We'd be happy for you to do that, really.
- When will this be ready to poke at?
- See the Goals section that follows
- Goals are currently under review and will be altered to fit new demands.
- https://bugzilla.mozilla.org/show_bug.cgi?id=747907 (meta)
- https://bugzilla.mozilla.org/show_bug.cgi?id=749806 (security)
BipostalNo longer in progress.