From: "Jonas Sicking" <[email protected]>
Sent: Friday, August 07, 2009 5:07 PM
2009/7/30 Ian Fette <[email protected]>:
That being said, I think there are valid use cases for out-of-band
notifications, for example for calendar events or "status update" type
applications such as Facebook or Twitter.

I'd like to explore whether we can accommodate this notification use case
without bringing the full power of the Web platform to bear, and thereby
opening up a lot of attack surface on the client. Here's one rough sketch of
an idea:

* Notification Feeds *

Often, web applications would like to give users the option to subscribe
to notifications that occur at specific times or in response to server-side
events, and for the user to get these UI notifications without a
prerequisite that the web app is open or that the browser is running. There may be a desire to do client-side computation as well, but often just the ability to give the user a notification solves the basic user interaction
problem.

One possible way to address this kind of use case is to let users
subscribe to a "feed" of notifications. This feed could use standard
syndication formats, such as RSS or Atom. But instead of being displayed in
a traditional feed reader, it's displayed in the form of transient
notifications (along the lines of Growl on Mac OS X) which are posted for each new event. To allow some pre-scheduling of events, each item can have a date and won't be displayed until that date - this way a calendar can give you your feed of upcoming events and you can still get notifications when offline. In the case of something like email or Twitter, obviously there's
no sensible way to get notifications when offline since they depend on
unpredeictable server-side activity. There could even be a client-side API that lets a Web app schedule items on a subscribed notification feed from
script, to enable scheduling calendar events offline. Each notification
would have the option to unsubscribe from the notification feed, to reduce
spam potential.

Notice that this opens up a lot less attack surface. The user has to
actively opt in to subscribing to the notification feed, just as for an RSS feed. This makes it much less likely they end up with a subscription to a shady site. And the notifications are passive data items (probably no script
should be allowed in a notification, if the format is HTML and not just
plain text), so they open up a lot less security risk. Obviously this is
less powerful than the ability to run arbitrary code in the background. But
it could address a large chunk of the use cases with much less security
risk.

It addresses some use cases (calendar, perhaps), but I would still like to
be able to e.g. keep my email up to date. Do I need the "full power" /
"fully general" solution? I don't know, perhaps the push mechanism can be
structured in a way that it gets into my database or whatever storage
mechanism I am using for offline data storage?

For the purpose of notification, it seems we have the following solutions:
-Push message
-SMS
-RSS/Atom feed
-Polling (Probably through JavaScript)

Which will manifest in the following types of program:
-Hidden browser page, Standalone browser tab, Persistent worker, or the browser's main background process, as part of the browser -Extraneous app or device (SMS to phone, or small-footprint desktop feed-reader)

Any others you can add to those lists?

(You can read the rest, or visit the summary near the bottom.)

To go through the methods:
RSS/Atom is usable at this very moment, as is JavaScript polling and SMS. SMS can be expensive, but Twitter has proven how useful it can be. I'm not sure what applications support push messages.

Deciding where the messages appear is the tricky part: A low-footprint, invisible feed-reader app can be run in the background and pop up messages when they're received. This will require users to install third-party tools, which could integrate themselves with the browsers to open links or manage 'feeds'.
Phones could be used to handle SMS notifications or push messages.

The browsers could check for updates in a tab, but there are a couple things that need to change before this becomes feasible: 1) Browsers need to be able to pop up a notification in the corner, possibly with a link that sets focus to the notifying tab, 2) Browsers need to get the notifying tab out of the way, either by shrinking it to a notification area or by running it as a background process (where it can be accessed from the browser through some sort of Application Manager), and 3) Hidden tabs need to continue to run when the browser is closed (i.e. the browser's main process continues to run) until the hidden page is exited.

It sounds like the browser could have a small background process that manages notifications, and a webapp (such as Gmail) could register with the browser's notification process.

That could be separate from the idea of tearing off the webapp tab and keeping it as its own process, even past the life of the rest of the browser. For this part, I urge you all to check out Chrome's "Create Application Shortcuts" feature, because it seems to fulfill this use-case. In addition to what Chrome does, I'd suggest the option to minimize to notification area, or hide in a list of torn-off apps in some kind of Application Manager.


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


TO SUMMARIZE:
-There are many other existing ways to notify
-I'd suggest browsers have a Notification process with which open tabs register. -Registered open tabs could tell the browser to pop up a notification, perhaps with title text, body text, and image -Clicking the notification would set focus to the browser and to the notifying tab.

To solve the lifetime issue:
-Torn-off tabs run in separate processes
-Processes may be re-skinned to appear as applications, but are really tabs.
-Minimized/docked Processes taken off the taskbar/dock and into a notification area or Application Manager -If the rest of the browser is closed, the main process will stay on until the application tabs are closed -Browser's 'Application Manager' in notification area or taskbar/dock (and as a button in the main browser) holds all open application tabs

Have I forgotten anything?
Even without the application tabs, the notification process would be great to implement.

Reply via email to