[whatwg] Global Script proposal.
Ian Hickson
ian at hixie.ch
Thu Sep 3 04:30:48 PDT 2009
On Sun, 30 Aug 2009, Michael Nordman wrote:
>
> These arguments against the proposal are not persuasive. I remain of the
> opinion that the GlobalScript proposal has merit.
That's possible; I would recommend taking up a Global Script proposal in
the public-webapps working group, though, as it is more of a Web App API
type of thing than an HTML5 core feature.
> On Sat, Aug 29, 2009 at 2:40 PM, Ian Hickson <ian at hixie.ch> wrote:
> > On Mon, 17 Aug 2009, Dmitry Titov wrote:
> > >
> > > Currently there is no mechanism to directly share DOM, code and data
> > > on the same ui thread across several pages of the web application.
> > > Multi-page applications and the sites that navigate from page to
> > > page would benefit from having access to a shared "global script
> > > context" (naming?) with direct synchronous script access and ability
> > > to manipulate DOM.
> >
> > This feature is of minimal use if there are multiple global objects
> > per application. For instance, if each instance of GMail results in a
> > separate global object, we really haven't solved the problem this is
> > setting out to solve. We can already get a hold of the Window objects
> > of subwindows (e.g. for popping out a chat window), which effectively
> > provides a global object for those cases, so it's only an interesting
> > proposal if we can guarantee global objects to more than just those.
>
> What problem do you think this is trying to solve? I think you're
> misunderstanding the motivation. The motivation is frame/page navigation
> performance once an app is up and running.
>
> > However, we can't. Given that all frames in a browsing context have to
> > be on the same thread, regardless of domain, then unless we put all
> > the browsing contexts on the same thread, we can't guarantee that all
> > frames from the same domain across all browsing contexts will be on
> > the same thread.
>
> As proposed, there is nothing that forces things into a single thread.
> Those contexts that happen to be on the same thread can benefit from the
> feature.
We already have a single global object today, in the world where
independent windows end up with different "global script" objects. It's
the Window object of the opener.
> > I know that some consider the asynchronous interaction with workers to
> > be a blocker problem, but I don't really understand why. We already
> > have to have asynchronous communication with the server, which holds
> > the roster data structure, and so on. What difference does it make if
> > instead of talking to the server, you talk to a worker?
>
> Provided you can talk to the 'shared worker' in the same fashion you can
> talk to the server (XHR)... you have a point here when it comes to
> keeping application 'state' in memory and quickly retrieving it from any
> page in the application. But, using a worker does nothing to keep
> application 'code' required to run in pages 'hot'... code that does HTML
> DOM manipulation for example can't run in the worker.
>
> You can't rely on opener since it can be closed at any time... including
> prior to the openee being loaded.
It won't get garbage-collected though, so if it's closed, just grab the
"hot" stuff you want over to a new "master" window.
> Maybe a better approach would be to make frame navigations not so
> costly.
That's up to browser vendors.
> Does that mean you won't help produce a draft spec of this for us to
> work with?
I think it's a bad idea, so no. :-)
On Mon, 31 Aug 2009, Michael Davidson wrote:
>
> In general, your arguments seem to fall into three categories.
> (Apologies if I'm misrepresenting you by paraphrasing. My intent is
> not to argue against a straw man, but to actually address your
> concerns.)
>
> - People should be writing multi-threaded web apps.
> - UI code can be a small shim, so code sharing can be accomplished
> through shared workers.
> - The async model isn't really that tough.
>
> For the first, I would argue that the web should progress much like
> desktop apps. Computationally intensive algorithms will be done in a
> background thread, but all UI interaction will continue to be done on
> one thread. This is how desktop apps work. Scalability is accomplished
> by putting different apps on different cores, not by requiring each
> application view to run in its own thread.
That's fine today, but it won't do us much good when we have orders of
magnitude more cores than running applications.
> Finally, I don't think the UI can ever be a simple shim. There's a
> long list of things that have to be in the UI: complex widget
> rendering
...should be in the browser, not the Web app.
> UI effects
...should be in the CSS, not the script.
> event handling
That's pretty much all that should be in the UI-thread script, and it
should just defer to the workers.
On Mon, 31 Aug 2009, Mike Shaver wrote:
>
> The multiple server-side processes that end up involved over the course
> of the user's interaction do need to share state with each other, and
> preserving blocking semantics for accessing such state makes the
> programs much simpler to reason about given today's programming
> languages. Is that shared state not what the Global Script Object would
> provide?
Aren't global script objects supposed to be client-side? I don't see how
they would help with server-side state.
--
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