CloudServices/Notifications: Difference between revisions

m
 
(18 intermediate revisions by 2 users not shown)
Line 5: Line 5:
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.
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.


== Goals ==


* Q1
== Get in touch ==
** BIPOSTAL in staging supporting Apps/ID?
You can reach the developers of this project by:
*** Production Dependant on Q1 blockers:
 
**** HW availability
email: [https://mail.mozilla.org/listinfo/services-dev services-dev]
**** Coordination with external mail partner
 
**** Coordination with BrowserID Team
irc: irc.mozilla.org #notifications
**** Coordination with WebApps re: requirements
 
**** UX for client dashboard?
== Preliminary Code and Documentation ==
*** PUSH: product defined and on track for Q2 launch
 
* [http://jbalogh.me/2012/01/30/push-notifications Introducing Notifications]
* [http://jbalogh.me/2012/04/05/how-to-add-push-notifications-to-your-site/ How to add Push Notifications to your site]
* [https://github.com/jbalogh/push Push] Notification Server
* [https://github.com/jbalogh/push-addon Push Addon] for Firefox
* [https://github.com/jrconlin/fncrypto Firefox Notifications Crypto] library
* [https://github.com/jrconlin/push-addon Push Addon with Crypto]
 
== Issues and concerns ==
 
<dl>
<dt>What about spam/viruses/evil?
<dd>That's a valid concern, and one we are thinking about. Here are our thoughts so far:<ol>
<li><b>A big enough namespace.</b><br>
We're using 64 base36 characters (0-9a-z), which produces log<sub>2</sub>(36) =~ 5.17 bits per character * 64 characters = 330 bits or just north of [[http://www.wolframalpha.com/input/?i=2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053824+ 2 duotrigintillion]] possible combinations. Figuring out which one of that namespace is yours is fairly remote.</li>
<li><b>Limit who can talk to you</b><br>
A notification is an established relationship between yourself and a site. It's a one-to-one sort of thing.</li>
<li><b>Making sure you're in control</b><br>
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.</li>
<li><b>Secure</b><br>
All communication will be sent over secure channels so that you're the only one who can see your messages.</li>
</ol>
<dt>How fast are notifications delivered?
<dd>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.
<dt>Will I get spammed by the same message over and over?
<dd>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.
<dt>Why not use SIP or any of the other well defined messaging protocols
<dd>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.<br>
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!
<dt>Doesn't this mean you're the choke point for my notifications?
<dd>Yeah, unless you want to take our source code and build your own server. We'd be happy for you to do that, really.
<dt>When will this be ready to poke at?
<dd>See the Goals section that follows


* Q2
== Goals ==
** Integration of BIPostal and PUSH to unified Notifications structure
* Goals are currently under review and will be altered to fit new demands.
** Finalization of Notification SLAs
** Finalization of metrics and logging info
** BIPostal to production
** Shift notification token (ntoken) mapping from mysql to MySQL -> Queuey
** Notifications to Nightly, Fennec, iOS, Android
** Dependent on:
*** Mobile Team adoption of code
*** Coordination with WebApps on availability


*  Q3
== Meetings ==
** Full Production ready release of Notifications
{{subpagelist|Services/Notifications/Meetings}}
** Documentation and demonstration code
** Customer support in place
** Additional demand/work from Q2 integration work (e.g. new demands)


* Q4
== Bugs ==
** Unknown at this time.
* https://bugzilla.mozilla.org/show_bug.cgi?id=747907 (meta)
* https://bugzilla.mozilla.org/show_bug.cgi?id=749806 (security)
* https://bugzilla.mozilla.org/show_bug.cgi?id=763507


= v.1 =
= v.1 =
Line 41: Line 63:


= v.2 =
= v.2 =
[[Services/Notifications/Push|Push]]
<strike>[[Services/Notifications/Push|Push]]</strike>
 
<strike>[[Services/Notifications/Bipostal|Bipostal]]</strike> No longer in progress.


[[Services/Notifications/Bipostal|Bipostal]]
= v.3 =
[https://wiki.mozilla.org/WebAPI/SimplePush| SimplePush]
canmove, Confirmed users
1,173

edits