Minutes Sydney F2F 2015-02-08 Part IV: Input Extensions, Asynchronicity and Threading, and Houdini Process

Input Extensions
----------------

  - RESOLVED: rbyers, TabAtkins, marakow to work on CSS Scroll
              Extensions

Asynchronicity and Threading
----------------------------

  - There was some concern about if this would be in scope or if
        there are the right experts in Houdini to make this spec
        work.
  - RESOLVED: Vollick, JacobRossi, (TabAtkins or Shane) to start
              work on CSS async style
  - The spec authors will work with webapps on portions that overlap
        such as async DOM.

Houdini Process
---------------

  - The group will hold off meeting again until there is more
        concrete language to discuss and there is an agenda set.
  - Priority order for decisions is that they will be made over
        e-mail if possible, a telecon if e-mail isn't possible, and
        lastly a F2F meeting.

===== FULL MINUTES BELOW ======

  Scribe: jet

Input Extensions
----------------

  rbyers: [on-screen demo]
  <rbyers> Scroll sync test: http://tdresser.github.io/sync-scroll-offset-test/
  <rbyers> Scroll header demo:
https://www.polymer-project.org/components/core-scroll-header-panel/demo.html
  <rbyers> Scroll customization design doc:
https://docs.google.com/a/chromium.org/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY/edit#
  <rbyers> scroll-chaining:
https://msdn.microsoft.com/en-us/library/windows/apps/hh466007.aspx

  rbyers: Following up on TPAC discussions,
  rbyers: These are all experiments.
  rbyers: My motivation is to enable native app scroll effects.
  rbyers: I'm enabling customization to tweak scroll effects.
  rbyers: Currently you have to extend input events to reimplement
          scrolling e.g. <iframe> scrolls horizontally within a
          container that scrolls vertically.
  rbyers: The problems with things such as iscroll libraries is that
          they don't feel "native".
  rbyers: [demos scroll header (from Google material design)]
  rbyers: [demos scroll offset test]
  rbyers: [shows how native vs. JS scrolling fails to sync]

  rbyers: The simplest solution: CSS scroll-blocks
  rbyers: Currently it's on Chrome Canary
  <rbyers> http://rbyers.github.io/scroll-blocks-on.html
  rbyers: The demos are of different scroll-blocks settings.
  rbyers: Chrome stops scroll blocking at 150ms.
  rbyers: Threaded fast paths will be covered later.

  rbyers: See CSS snappoints in IE, Gecko and Safari
  rbyers: [demos CSS snap points]
  rbyers: [demos JS implementation if snap points]
  rbyers: You still need a hook when scroll happens (eg, setting
          scrollTop)
  rbyers: scrollState object (see doc)
  rbyers: element.applyScroll = function(scrollState) enables snap
          points.
  rbyers: JS developer doesn't need to handle different devices,
  rbyers: But complicated scenarios need more.
  rbyers: For example, distributing scroll across multiple elements.
  rbyers: See IE's scroll chaining for a way to do that.
  rbyers: IE can selectively consume scroll events and not bubble up
          events.
  rbyers: distributeScroll( ) allows control for authors.

  rbyers: We have 8 use cases to solve (as seen on native apps)
  rbyers: 3 main capabilities...synchronize scroling, customizing
          how scroll is applied, customizing how scroll is
          distributed.
  rbyers: Can we provide all 8 features, instead of 3 low-level
          hooks?

  rbyers: This proposed feature also explains what CSS does.
  rbyers: These API's allow for customization over time,
  rbyers: as primitives.

  roc: You can't implement Gecko snappoints with this API as it
       handles different gestures (not a generic scroll)
  rbyers: scrollGranularity can potentially handle it.
  roc: It's good that the API doesn't cover gestures.
  roc: We want to be gesture-independent, but behaviors are gesture
       dependent.
  rbyers: We can differentiate between, for example, keyboard vs.
          touch.
  rbyers: distributeScroll = function(scrollState)

  dino: Demo uses requestAnimationFrame( )?
  dino: Does the top control needs to be aware of what scrolling
        does?
  rbyers: Yes, that's how it's implemented now.

  dino: Twitter didn't modify system native scrolling behavior (on
        iOS) for 'pull to refresh',
  roc: Like they had to do in Android.
  shane: This should allow override of system behaviors.
  dino: Scroll effects can be so platform-specific.
  dino: How do we make it so authors don't have to catch all those
        cases?
  rbyers: Enable 'pull to refresh' custom behaviors within native
          scrolling logic.
  rbyers: Pages that consume all touch events already override
          native scrolling.
  rbyers: This conceptual model should let us implement current
          scrolling behaviors.
  <rbyers> Scroll conceptual model:
           https://drive.google.com/a/google.com/file/d/0B7mjRvOU-oG-anR5LVdQQ0xxbFk/view
  rbyers: JS should be able to create the scrollState.
  rbyers: Scroll bars are an open issue.
  rbyers: Scroll bars don't distribute scrolling.
  rbyers: None of this has landed in Chromium yet,
  rbyers: We need to figure out threading.
  dino: What's the fallback?
  dino: How to use it and not break on other browsers?
  rbyers: Sites already take advantage of Chrome's custom scroll
          effects.
  rbyers: polyfill on top of something such as a iScroll library.

  krit: Are default scroll behaviors available? Like native defaults?
  rbyers: Yes, as function attributes modify applyScroll, but can
          call native implementations.
  rbyers: Run in an isolated realm?
  roc: No.
  dino: yes!
  rbyers: We need two ways: isolated (off main thread for
          speed/safety) and not (main thread)
  rbyers: Can we keep same semantics for compositor vs. main thread
          usage?
  rbyers: Can you transfer the scroll between the main thread and
          the compositor thread (to prevent jank)?
  rbyers: It's the same as Chrome does after 150ms of blocked
          scrolling.
  rbyers: You support scenarios like Google maps scrolling at 60FPS.

  dino: How does the user handle cases for multiple devices (e.g.
        can't do fast effects on mobile)?
  rbyers: Maybe revert to native scrolling when performance is an
          issue?
  rbyers: mousewheel handlers are already implemented by sites (this
          API is similar).
  rbyers: Scroll deltas specified as CSS pixels?
  rbyers: That's Currently implemented in dips (Chromium units).

  Rossen: The next steps for this: find editors, draft a resolution
  dino: Experiment/implement and report back.
  rbyers: Prototypes are landing soon.
  Rossen: fallback scenarios should be graceful

  RESOLVED: rbyers, TabAtkins, marakow to work on CSS Scroll
            Extensions

  <bkardell> are there any plans to talk about style isolation here?
             I mentioned it yesterday...
  <jet> bkardell: not covered
  <bkardell> not script isolation
  <bkardell> or is that roc getting set up for next topic
  <roc> nothing to do with what you said, sorry
  <bkardell> jet: not covered as in not on agenda or out of scope?
  <jet> bkardell: not in the next topic

  <roc> I just wrote this as a summary:
        https://wiki.mozilla.org/Restricted_JS_Execution_Contexts
  <astearns> roc: for style extensions, is a new isolated world
             needed for every property, or could a page have a
             single world for all the registered properties?
  <roc> astearns: ideally, if implementation allowed it, I think
        we'd have an isolated world for every single parse and style
        computation operation

Asynchronicity and Threading
----------------------------

  <shane> vollick's doc:
https://docs.google.com/a/chromium.org/document/d/1wrBq3HMwxMTX521rE-qczF67YucdCRUsHuG3_oG5Cjw/edit
  vollick: Asynchrony and Threads
  vollick: Use cases: infinite scroller, components from untrusted
           3rd parties, large team coordination on large apps,
           material design "spinner" UI, synchronized effects (see
           CSS Scrolling).
  vollick: Performance componentization & performance isolation.
  vollick: Web devs should be able to specify:
  vollick: What can be asynch?
  vollick: What can be deferred?
  vollick: What can be preempted?
  vollick: What's important on the page?

  vollick: There's classes of solutions:
  vollick: For example UI workers
  vollick: Fancy Frames that can be asynch, preempt, detachable,
           sandboxable, Delightful DOM with asynch mutation,
           prioritized.
  vollick: Wicked Workers (see doc), Snazzy Scheduler for hinting.
  <bkardell> Yes please

  vollick: Are people interested? To work on this in Houdini?
  roc: DOM, frames, worker stuff are not appropriate in Houdini? DOM
       experts aren't here.
  Rossen: Can we invite them?
  vollick: We need to involve the right people.
  vollick: Please send me names.

  rbyers: I have concerns about if main thread synch can be covered
          by asynch proposals.
  Rossen: Input and render parallelization in IE don't work as well
          on low-end devices.
  Rossen: Scheduler work should be prioritized.
  vollick: For adding capabilities to workers, is spec needed?
  roc: WHATWG canvas in workers spec exists.
  <roc> I think this is the link, but it's not loading for me:
        http://wiki.whatwg.org/wiki/WorkerCanvas
  <dino> what about this one?
         https://wiki.whatwg.org/wiki/CanvasInWorkers
  <roc> hmmm.
  <roc> dino: I think https://wiki.whatwg.org/wiki/WorkerCanvas is
        the consensus proposal.

  vollick: We need worker threads that can affect paint,
  vollick: Such as motion blur on scroll.
  rbyers: Synchronized Scroll (allowing JS to synch with main thread
          scrolling).
  rbyers: Asynch DOM sounds like low-hanging fruit.
  vollick: The spec should articulate what can be asynchronous (but
           not spell out thread creation details from engines).
  rbyers: Ordering of events, etc. is currently browser-specific.
  rbyers: The spec could specify how authors can modify that.

  Rossen: We some initial ideas for initial spec-ing now
  Rossen: Let's socialize these ideas with other groups (UI workers,
          asynch DOM).
  shane: asynch DOM needs to work out how it affects Layout.
  shane: Let's start a draft here (in Houdini).
  Rossen: Start with UI workers?
  vollick: The features are orthogonal.
  shane: We should resolve to work on it here or elsewhere
  krit: Let's come up with a proposal first.

  RESOLVED: Vollick, JacobRossi, (TabAtkins or Shane) to start work
            on CSS async style

  <rbyers> They will talk to webapps on the other bits discussed
           (e.g. async dom)

Houdini Process
---------------

  Rossen: How often should we meet/discuss?
  <bkardell> f2f is pretty hard for me unless you all want to come
             to my house or open a bridge :)
  glazou: F2F meeting joined with CSSWG worked well here.
  glazou: Doing that with the NYC meeting is harder.
  glazou: Maybe it's better for the meeting to be after? Due to
          budget constraints.
  glazou: And once or twice a month we can do a telecon.
  Rossen: Additional days before or after CSSWG F2F meetings helps
          travel.
  <dbaron> FWIW, this meeting was announced (without firm dates) 2
           months in advance and didn't have firm dates until 2
           weeks later.
  <bkardell> There is an extensible web summit in San Francisco in
             April - lots of people should be there + tag, maybe
             good optional thing?

  SimonSapin: Maybe we should do async decision making instead of
              telecons/F2F?
  dbaron: We should have docs to discuss before scheduling meetings.
  dbaron: We need more concrete stuff for the next time.
  Rossen: To move from "can" to "do" phase, yes.

  rbyers: Do we propose Houdini agenda prior to scheduling CSSWG
          meetings?
  dino: For Houdini it's more important to synch with CSS than,
        say SVG.

  Rossen: Let's check back in a month before scheduling telecons?
  ChrisL: Schedule a monthly telecon now, but assume canceled unless
          an agenda is set.
  SteveZ: And make every effort to resolve on e-mail and not telcon.
  SteveZ: Email, telcon, F2F as priority order for communication.

  Rossen: We're adjourned.
  * bkardell claps
  glazou: Thanks Google Sydney!

Received on Tuesday, 3 March 2015 19:26:05 UTC