Changes between Initial Version and Version 1 of Simons5YearPlanRetrospective


Ignore:
Timestamp:
Nov 4, 2019 7:26:57 AM (4 years ago)
Author:
Jon Davis
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Simons5YearPlanRetrospective

    v1 v1  
     1= 5-Year Plan: A Retrospective
     2''by Simon Fraser''
     3
     4'''5 years ago, in a meeting room not so far away…'''
     5
     6- DOM Event Loop
     7    - Started working on it.
     8    - Now called the Event Loop
     9    - Benefits and problems are still accurate
     10- Render Tree Refcounting
     11    - Not done this
     12    - Haven’t found a real need to do this yet
     13- Painting: Display Lists
     14    - Have done experiments
     15    - Testing with MotionMark is a performance regression
     16    - Lost parallelism
     17    - Didn’t turn it on, may come back and revisit it
     18- Image Decoding
     19    -  Knew we had problems with this on main thread
     20    - Decoding sync on main thread
     21    - Can’t do it by default because of flashy painting
     22    - Added decoding=async on img element to turn it on
     23    - Or call API to ask for decoding on image and get a Promise
     24    - Async decoding on first load
     25    - This is done and we’re pretty happy with it
     26- Layout State Machine
     27    - Making it harder to make mistakes interacting with RenderTree
     28    - Be on a call stack iterating on layer list for hit testing
     29    - Detect when mistakes happen and trigger assertions
     30    - Fixed a bunch of issues of mutating trees in the middle of…
     31    - Big benefit of event loop is: move all code that fires events to updateRendering steps and other well defined places
     32    - Made good progress
     33- Compositing
     34    - Downstream was making compositing decisions by looking at whole list of drawing commands
     35        - Haven’t done it
     36        - Earlier this year I did compositing updates are incremental with dirty bits
     37- Hackability
     38    - RenderRegions were removed which was good
     39    - Working on inline layout
     40        - Goals to simplify inline layout code
     41    - ScrollableArea and FrameVIew
     42        - Nothing really changed
     43        - State of FrameLoader et. al… still not great
     44    - Relationships between Document Frame, Dom Window and page are still pretty confusing
     45    - Selection still has specialized versions
     46- Threading
     47    - Can we do more in threads?
     48
     49'''4 years ago, in the same meeting room not so far away…'''
     50
     51- Optimizing layout
     52- IndexedDB optimizations
     53- Cleaning up loading code
     54- Page cache clean up
     55    - We’re doing it!
     56- CSS properties status JSON and on webkit.org
     57- Event Loop
     58    - Same stuff, making progress
     59- Fetch API
     60    - Done
     61- Service Worker
     62    - Done
     63- Intersection Observer
     64    - Done
     65- Scroll-linked Effects
     66    - Some work, but no really progress
     67- Houdini proposal
     68    - Prototype of custom paint, but no where accessible
     69- Page & Friends
     70    - Too many scrolling architectures
     71    - iOS WK1 is different, iOS WK2 uses UI side compositing
     72- Code Organization
     73    - PAL library
     74        - Some of its there
     75- Layout & Rendering
     76    - Fundamentally hasn’t changed
     77    - LFC work is still underway, beyond experimental
     78        - Rewrite of the layout code
     79        - Making good progress
     80        - Block layout 80-90% done
     81        - Now doing table layout
     82    - Inine layout work too
     83- Remove widgets
     84    - Still have them
     85    - Need to get rid of it
     86- Continuations
     87    - Nothing happened
     88- Compositing
     89    - Still do compositing updates on every forced layout
     90    - Ideally only once every rendering step
     91        - Hoping to do it this year
     92- Debuggability
     93    - Log Channels: new log channels
     94    - Use TextStream to make things log-able
     95    - I want to log a RenderStyle and only the properties different from the default
     96        - And show diff
     97    - Still have progress to be made
     98- Next Year
     99    - Figure out where logging goes