[whatwg] Installed Apps

Michael Nordman michaeln at google.com
Thu Jul 30 14:27:21 PDT 2009

So use an out-of-band extension mechanism to establish trust and
permissioning for capabilities that fall out of bounds of the 'regular' web
So lets put that to practice on this particular two-part proposal...

> Our proposed solution has two parts.

This first part (below) falls within the bounds of the 'regular' web model.
Would be nice to discuss this on the merits in absense of the 'scary trust
permissioning' issues.

> The first, which should be
> generally useful, is the ability to have a hidden HTML/JS page running
> in the background that can access the DOM of visible windows. This
> page should be accessible from windows that the user navigates to. We
> call this background Javascript window a "shared context" or a
> "background page". This will enable multiple instances of a web app
> (e.g. tearoff windows in Gmail) to cleanly access the same user state
> no matter which windows are open.

This second part (below) would only be accessible after out-of-band trust
and permissioning mechansims got tickled.

> Additionally, we'd like this background page to continue to run after
> the user has navigated away from the site, and preferably after the
> user has closed the browser. This will enable us to keep client-side
> data up-to-date on the user's machine. It will also enable us to
> download JS in advance. When the user navigates to a web app, all the
> background page has to do is draw the DOM in the visible window. This
> should significantly speed up app startup. Additionally, when
> something happens that requires notification, the background page can
> launch a visible page with a notification (or use other rich APIs for
> showing notifications).

(aside... begs the question... when will that extension mechanism be
standardized :)

On Thu, Jul 30, 2009 at 1:49 PM, Dmitry Titov <dimich at google.com> wrote:

> I think I almost get this distinction :-) you are saying that HTML+JS could
> be made more powerful with new APIs, but only if it is done sufficiently far
> from the 'regular web page browsing' experience (or model). Say, if it is a
> "browser extension" or a prism-like app it's ok - only (or mostly) because
> it is outside from the regular process of web browsing that users have been
> taught is 'reasonably safe'.
> Would this functionality be ok as a part of a browser extension? Lets say
> you can install an extension that is loaded in background (as Chrome already
> can do) and that the pages from the same domain are loaded into same process
> and can exchange DOM with it.
> I'm not trying to argue for the proposal, I am just curious how the
> more-powerful APIs could be added, since this is not the last proposal that
> tries to do this. Looking at use cases and coming up with narrow API that
> does not require permissions is understood, but it's interesting how to go
> beyond this line. Or, as Ojan says, if it's even a goal :-)
> Dmitry
> On Thu, Jul 30, 2009 at 1:23 PM, Drew Wilson <atwilson at google.com> wrote:
>> I think the error here is viewing this as a UX issue - if it were just a
>> UX issue, then the responses from people would be along the lines of "Oh,
>> this sounds dangerous - make sure you wrap it with the same permissions UI
>> that we have for extensions, plugins, and binary downloads".
>> The realization I came to this morning is that the core of the objections
>> are not primarily about protecting users (although this is one goal), but
>> more about protecting the current secure web browsing model (Linus
>> explicitly said this yesterday in his email to the list, but I only "got it"
>> when thinking about it today).
>> This is why people are OK with supporting this via extensions but not OK
>> with supporting this as part of the core HTML APIs even if the UX was
>> exactly the same. It's more about keeping the model pristine. Doing crazy
>> stuff in extensions and plugins are OK because they are viewed as falling
>> outside the model (they are just random scary things that user agents choose
>> to do that don't conform to the specification).
>> So arguing "but it's the same UI either way!" is not going to convince
>> anyone.
>> -atw
>> On Thu, Jul 30, 2009 at 12:51 PM, Dmitry Titov <dimich at google.com> wrote:
>>> It seems the biggest concern in this discussion is around "BotNet
>>> Construction Kit" as Machej succulently called it, or an ability to run
>>> full-powered platform API persistently in the background, w/o a visible
>>> 'page' in some window.
>>> This concern is clear. But what could be a direction to the solution?
>>> Assuming one of the goals for html5 is reducing a gap in capabilities
>>> between web apps and native apps, how do we move forward with more powerful
>>> APIs?
>>> So far, multiple ways exist to gain access to the user's machine - nearly
>>> all of them based on some dialog that asks user to make impossible decision
>>> - as bad as it is, binary downloads, plugins, browser extensions, axtivex
>>> controls or Gears modules are all but a dialog away from the user's
>>> computer. Basically, if a malicious dudes are cool to write native apps -
>>> they can have their botnet relatively easy. The ongoing fight with malware
>>> and viruses will continue - not because the platforms have wrong API, but
>>> because it's really hard to give power to the apps and not to the malware,
>>> since they, in essence, do the very similar things.
>>> As controversial as it sounds, it might be if a web platform API can't be
>>> used to write a botnet, then it can't be used to write a wide class of
>>> powerful applications as well :-)
>>> I don't have a botnet example, but when Safari 4 visits the sites in the
>>> background (to keep the 'new tab page' site snapshots up-to-date) w/o ever
>>> asking my permission - it looks a bit scary, because I'm not sure I want it
>>> to visit websites at random time from my IP with I don't know what cookies
>>> and then snapshot the result in jpg and store it locally... But I sort of
>>> like the feature anyways. Now, how can I make a web app that does this? Some
>>> sort of background shared page could be handy. It can pop up the same dialog
>>> when installed, live in Applications folder but it should be possible. Now
>>> if we make it possible, would it be possible to write a botnet on top of the
>>> API? Of course! Same exact way as it's possible to write even better botnet
>>> on OSX API in which Safari is written.
>>> Now, what if I want the same feature but implemented not as a native app,
>>> but as a web app? We would need to give it specific rights locally, and make
>>> the process transparent - not only on 'install' time but when it runs too -
>>> so the user could peek into some 'task manager' and clearly see if such
>>> thing is running. Browser could periodically download 'malware lists' and
>>> kill those web apps that are in it.
>>> But for now, it should be ok to have it 'installed' with a specific
>>> browser dialog that asks the user to make a decision the user may not
>>> understand - it is not the ideal way but it is the common way today, users
>>> know they are asked these questions, admins and IT teaches users what to do
>>> when asked, so it's the best we can do now. Having a 'task manager' (as in
>>> Chrome) reflecting those things is good too.
>>> Btw, if it only can do window.open() on the url from the same domain,
>>> then if it's from Gmail then it can't be used or hijaked.  If it is from a
>>> site that says install this and I'll show you a pretty picture and user
>>> clicks through a dialog, I'd say it's not a new vector for malware.
>>> Dmitry
>>> On Thu, Jul 30, 2009 at 10:26 AM, Michael Davidson <mpd at google.com>wrote:
>>>> On Wed, Jul 29, 2009 at 5:38 PM, Maciej Stachowiak<mjs at apple.com>
>>>> wrote:
>>>> > * 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
>>>> This is an interesting idea. The lack of push updates, though, would
>>>> make it much less useful than it could be.
>>>> Here's a rough sketch of a more far-out idea: What if all browsers
>>>> were XMPP clients and stanzas could be sent to display notifications?
>>>> The attack surface would still be low, but you'd get realtime updates.
>>>> Instead of subscribing to a feed of notifications, the user accepts
>>>> what is essentially a chat invitation from the site. Like normal XMPP
>>>> invitations, this would be revocable at any time.
>>>> Lots of issues to work out, but you'd get realtime for free.
>>>> Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20090730/ad188f6a/attachment-0002.htm>

More information about the whatwg mailing list