[whatwg] Installed Apps
Ian Hickson
ian at hixie.ch
Thu Aug 13 04:07:45 PDT 2009
On Tue, 4 Aug 2009, Drew Wilson wrote:
> On Mon, Aug 3, 2009 at 8:58 PM, Ian Hickson <ian at hixie.ch> wrote:
> >
> > It seems like a direct solution to these would be to have a way for
> > Web pages to expose a service that clients could subscribe to, which
> > could send up database updates and notifications. That way, no script
> > runs on the client, but the server can still update the client
> > whenever needed.
>
> Yeah, this is an interesting idea, although I'm envisioning apps that
> support offline use requiring what amounts to a sync process with
> app-specific conflict resolution, etc - I think this would be difficult
> to support with this kind of general platform. But, agreed, this is
> better than nothing - at the very least, an application could use it to
> sync down changes to a "staging area" for later resolution once the app
> itself starts up.
Ok. I think this is the direction we should look in to address this use
case then. I haven't specced anything yet, but I've noted it as a feature
we should look at. If anyone wants to experiment in this space, that would
be great.
> Sure, although I'd say that "persistent storage is addressed by the Web
> Storage and Web Database features". Shared state is also addressed, but
> that's not the primary goal. If I have a tree of objects that I'd like
> to share between two pages, telling me to serialize it into name/value
> string pairs, write it into Web Storage, and then have the remote side
> read it out is not a satisfying (or performant) solution.
Web Storage supports structured data now.
> Yeah, I'm somewhat leery of the "canned RSS-feed"-style solution to
> notifications (our vision for notifications is that they are scriptable
> and more interactive than just a dumb text + icon).
A system that displays rich/scripted content on server demand rather than
on user demand is a massive security nightmare. It turns a scripting
security bug and an XSS bug into an instant malware deployment vector.
> Additionally, any server-side-feed-based solution has the implication
> that it won't work for offline apps. If I am using a web calendar, I
> want my event notifications regardless of whether I'm online or offline
> (the event may have been added while I'm offline and never synced to the
> server at all).
I think on the long term we may wish to consider adding a feature to queue
up POSTs for when the UA finds it is back online. That would address a
number of problems, including this one.
On Tue, 4 Aug 2009, Jeremy Orlow wrote:
>
> The idea of tying the notification spec to a particular brand of storage
> seems like a bad idea...especially at this point in time.
We can make this work with all of the mechanisms pretty easily.
> On Mon, Aug 3, 2009 at 8:58 PM, Ian Hickson <ian at hixie.ch> wrote:
> >
> > I'm not sure XMPP is the protocol I would jump to, but it's certainly
> > an option, yes.
>
> What don't you like about XMPP?
It's far too complex for people to write and deploy an XMPP server on a
whim. Like HTTP, it requires people to use off-the-shelf software instead
of allowing them to experiment with their own code. This leads to software
monocultures, and prevents easy experimentation.
On Tue, 4 Aug 2009, Dmitry Titov wrote:
>
> What about the "shared context with DOM access" idea which, even w/o
> persistency, seems to resolve some issues for apps like GMail? Like a
> shared worker, but with access to DOM.
I don't think that such a mechanism will work well given multicore
processors, multiprocess UAs, and the way that gadgets end up connecting
domains all over the place.
> 2. It does rely on 'cooperative' pages to be opened in the same process
> but this is easy to implement. I mean, you can't 'guarantee' it (a page
> from another domain may have iframe pointing to the app and it will be
> in a diff. process) but any reasonable app can be easily structured in a
> way to get its views (pages) into a single process.
I think this is understating the disadvantages of this model, and
overestimating the ease with which one can make it work.
> 3. It would help to provide fast (meaning sub-100ms, interactively fast)
> UI responses necessary for the seamless operations. Persistent data
> storage and parsing/generating HTML (including loading all the code
> necessary to do that from the 'pure data') will always present challenge
> for sub-100ms UI actions - even in native apps it is a challenge today.
>
> Here is a typical use case: You compose a message in GMial window.
> Halfway through you decide to peek into another mail thread for more
> information. You click 'tear-off' button to "disconnect" the compose
> window so you can see other mail threads. Today, this opens a new window
> and starts loading XXX Kb of script into it. You see the progress
> indicator for a few seconds. This script is needed to be able to go to
> server and generate a proper UI from the response, as well as have all
> the 'controller' logic when user starts to interact with such UI.
>
> With shared context, you could just take the whole DOM subtree that
> forms a compose window UI and pass it, as is, into the new and empty
> window - with even handlers hooked into the shared context. It will just
> relayout and continue function. You have an 'instant' tear-off.
You don't need a shared context to do this. window.open() gives you the
DOM, you can already populate it immediately.
On Sat, 8 Aug 2009, Drew Wilson wrote:
>
> One of the reasons I'm a proponent of running application script is the
> track record of one-size-fits-all, generic push solutions that are able
> to fulfill a broad range of use cases is fairly poor. If we are going to
> have the browser manage an incoming feed of push notifications, then I'd
> say at the very least we should allow web apps to register script
> handlers for those notifications, rather than try to build in static
> browser behavior. One could put limits on the execution of this script
> (perhaps only allow it to run for a limited period of time, for
> example), and provide UX to the end user such that there is transparency
> about the script running in the background of their browser.
I really don't feel right allowing script to run like that.
Why can't the server send the data to the client in a near-final form and
let the script figure it out when the user finally opens the app?
> I agree that the UX and Security issues around always-on persistent
> script are formidable, but I still think it's valuable to experiment in
> this area to see whether they can be overcome.
Certainly experimentation is always encouraged.
> Regardless, I think it's premature to latch onto a single potential use
> case for persistent script (static text + icon calendar notifications)
> and start building extensive alternative mechanisms to satisfy that
> case.
What other use cases are there? Those were the ones given. We're very much
use-case-driven here.
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list