Changes between Initial Version and Version 1 of WebKitFeatureFocus2018-2019


Ignore:
Timestamp:
Oct 12, 2018 3:23:27 PM (6 years ago)
Author:
Jon Davis
Comment:

Notes from the 2018 WebKit Contributors Meeting

Legend:

Unmodified
Added
Removed
Modified
  • WebKitFeatureFocus2018-2019

    v1 v1  
     1= WebKit Feature Focus for 2018-2019 =
     2''by Geoff Garen''
     3
     4'''200 features planned'''
     5
     6== Build ==
     7
     8- XCBuild
     9- CMake
     10- ccache
     11- Precompiled headers
     12
     13Focused on the build system and especially moving to unified build for 2x speed up
     14
     15All non-Apple ports have moved to CMake, Apple still working on moving to CMake for build speed up
     16
     17Interested in ccache by default
     18Precompiled headers
     19
     20== JavaScriptCore ==
     21
     22- New byte code format
     23    - No pointers
     24    - Load bytecode out of cache
     25    - The more we use process isolation the less hits in cache
     26- Node.js prototype
     27    - Participation helps standardization and performance testing
     28- JetStream 2
     29
     30== Layout ==
     31
     32- Next-Generation layout
     33    - Complete rewrite of the layout engine
     34    - Closer to spec language
     35    - A lot more efficient
     36    - Parallelize-able
     37    - Initial speed-up from initial design is already faster on its own
     38    - Right now it draws boxes
     39- LFC
     40
     41== Web Standards ==
     42
     43- Pointer Events
     44- New form controls
     45- Removing WebSQL
     46- Web Components Polish
     47- Intersection Observer (non-Apple dev, Google)
     48- WebShare API (done)
     49- Payment Request
     50- Font Color Palettes
     51- Web Animations (close to done)
     52- CSS logical properties (in-progress, going ok)
     53- Better text decorations
     54- CSS conic-gradient (done)
     55- Datalist <input type color>
     56- File upload enhancements
     57- WebAuthentication
     58- CSS @page
     59- CSS logical properties
     60- Unicode 12
     61- Implement CSS Text Module Level 4
     62- IndexedDB Quality
     63
     64== Service Workers ==
     65
     66- Long strange trip
     67- We did a great job at delivering high quality SW
     68- Not a lot of adoption of offline mode
     69- More interest in using Service Workers to make your website fast
     70    - But everyone knows it makes your site slower
     71    - It launches a separate process, and that takes time
     72- Then they try to pose new standards to make SW faster
     73- We need to focus on an effort to optimize SW
     74    - Merged the storage process into the network process
     75    - Now only have to launch the network process
     76    - First time startup is 250 ms faster
     77    - Doesn’t eliminate the launch of SW itself and XPC messaging
     78    - SW launch the sw in process
     79    - Any other tab will have to use the same SW, no cold start penalty, but still XPC overhead
     80- If the Network is really slow, SW may make it faster
     81    - Mobile specific
     82    - In countries with slow cell service, mobile devices, may be a big part of browsing
     83- Should we rename NetworkProcess?
     84    - Kinda… maybe?
     85    - LocalStorage is in the UIProcess
     86    - Payments?
     87        - NetworkProcess or their own process?
     88    - It’s possible it will be the generic helper process
     89    - HelperProcess, DoerProcess, DoallthethingsProcess
     90
     91== WebRTC & getUserMedia ==
     92
     93- Using it for tech or learning support system
     94- WebRTC h.264 simulcast (done)
     95- VP8 for WebRTC (the libwebrtc implementation)
     96- Fuller support for WebRTC 1.0 APIs
     97    - May break some sites
     98- Support mDNS ICE Candidates
     99    - New proposal for a standard for privately sharing your IP address
     100- VCP for WebRTC
     101- Screen capture
     102- MediaCapabilities API
     103
     104== Security & Privacy ==
     105
     106- Process per origin (PSON, frames) [it’s really process per site]
     107    - Process swap on navigation
     108    - Isolate frame content, hasn’t been designed it yet
     109- ITP 3.0
     110    - May create web compatibility concerns
     111    - New design patterns for sharing info
     112- Fingerprinting Mitigations 2.0
     113    - May create web compatibility concerns
     114    - New design patterns for sharing info
     115- Safe Browsing in WKWebView
     116- Fuzz-0 for JSC
     117    - Apple should take the action to Open-Source fuzzers
     118    - WebKit should run DOM fuzzers
     119        - Make available to WebKit Security Team
     120- Consider blocking third-party iframe redirects
     121    - Attack, ad in iframe top.locaiton.href sends to App Store or other page
     122        - Hard for web to protect itself from this
     123        - CSP protections available, no one understands or uses them
     124    - Other window or tab used to navigate to somewhere of attackers choosing (phishing page etc)
     125    - Prohibit like pop-up blocking
     126- Prevent navigation hijacking
     127- Sandbox Hardening 2.0
     128- Find and correct CSP Implementations
     129- CSP (Content Security Policy) level 3
     130- New content blocker action: insert stub
     131
     132== Graphics & Media ==
     133
     134- WebGPU
     135    - Improvement over GL designs
     136- WebGL 2
     137    - Because people use it
     138    - “It’s the best” - mmaxfield
     139- Modern EME
     140- Support codec and container switching in MSE
     141- AirPlay improvements
     142- Fullscreen quality
     143- Implement PiP JS API
     144- Autoplay API
     145    - API to determine if autoplay will succeed
     146    - If you can’t autoplay, you provide a button
     147    - Spec is in flux
     148    - Will discuss at TPAC
     149- HDR video
     150
     151== Performance Defense ==
     152
     153“A big part of being fast is not getting slow” - Geoff Garen
     154
     155- PLT 5
     156- Performance regression defense coordination
     157- Throttled PLT (Page Load Test for iOS) - no regression
     158- PLT (macOS) - no regression
     159- Speedometer2 - no regression
     160- PLUM - no regression
     161- Membuster - no regression
     162
     163== Performance Offense ==
     164
     165- Opitimize “first meaningful paint”
     166- JS bytecode caching
     167- Match Lua memory usage on Lua JSFight
     168    - A lot of system services that take advantage of JS scripting
     169    - Fixed cost memory is too high
     170    - Excited to set a goal to be just as good as Lua
     171- JetStream 2 - 6% faster
     172- MotionMark - 5% faster
     173- Improve page loading performance on watchOS by 20%
     174- JetStream 2 - 20% faster
     175- RAMification - 30% less memory
     176- MotionMark - 10% faster
     177-
     178
     179== Scrolling ==
     180
     181- Use async scrolling in overflow
     182
     183== Web Inspector & WebDriver ==
     184
     185- Handle big sites
     186- Modern architecture
     187- Medis debugging
     188- Multiple disjoint selection in grids and trees (cookies)
     189- Editing improvements in styles sidebar
     190- WebDriver for wkwebview
     191- Tab UI refresh
     192- more…
     193
     194== WebKit API ==
     195
     196- UIWebView on top of WKEWebView
     197- Disable iOS WK1 WebThread
     198- Downloads
     199- More apps on Modern WebKit
     200- Enhanced editing APIs
     201- “One Network Process”
     202- Partition-aware website data API
     203
     204== Infrastructure & Testing ==
     205
     206- Improved EWS
     207- webkit.org improvement 2019
     208- Upgrade build.webkit.org to Buildbot 1.0
     209- iOS LayoutTest Cleanup
     210- API testing technical debt reduction