Changes between Initial Version and Version 1 of WebKitGoalsFor2018


Ignore:
Timestamp:
Oct 13, 2017 1:13:52 PM (6 years ago)
Author:
Jon Davis
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WebKitGoalsFor2018

    v1 v1  
     1= WebKit Goals for 2018 =
     2''by Maciej Stachowiak''
     3
     4- There are no promises about what we're working on, this is just what we're interested in
     5- Audiences: Users, Native Developers, Web Developers, WebKit Contributors
     6        - We plan stuff for all of these audiences
     7        - Users: Security, Privacy, Performance, Platform Integration
     8        - Native Devs: More clients on Modern WebKit, Complete JSC API
     9        - Web Devs: Web APIs, Media, Grpahics, Text, Compliance & Compat, Dev Tools (Back to basics)
     10        - Webit Contributors: Build speed, Better tools
     11
     12== Users ==
     13
     14- Security (Code Exec, & UXSS Mitigations)
     15        - Universal Cross-Site Scripting
     16        - Gigacage, Isoheaps, Bulletproof JIT, Safe casting and unions, reduce use of raw pointers, DOM Event timing, No render tree mutation during layout
     17        - Other: Sandbox harding, Fuzzer fixes, Security response, Security-enabling web platform features
     18                - Apple will be focusing on their sandbox, encourage other teams to do the same
     19                - Will fix fuzzer bugs
     20                - New web platform features for sites to strengthen their own security (CSP, Subresource Integrity)
     21
     22
     23== Privacy ==
     24
     25- Intelligent Tracking Prevention, use machine learning and stuff to prevent cross-site tracking
     26        - Will focus on improving it, tightening it, but make it easier for sites impacted by it
     27        - Looking into API for embedded content to get access to cookies with user consent
     28        - Affiliated domains
     29        - Improvements to private browsing mode)
     30        - Investigate stateless tracking
     31                - ITP is for stateful tracking prevention
     32                - Fingerprinting is a method for stateless tracking, behavioral fingerprinting, and other techniques
     33- DNT was a failure, so we're looking at technological enforcement
     34
     35== Performance ==
     36
     37- Significantly improving Speedometer, MotionMark, ARES-6
     38- Also Jetstream, JSBench
     39- Non-benchmark areas for improvements. Primarily: Page load speed, memory use, scrolling, battery life
     40        - Also important: WebAssembly, Worst-case JS (no excuses)
     41                - ExcuseBench? Code that uses JS that is known to be badly optimized
     42- Old benchmarks Apple sees as legacy: Kraken, Octane, SunSpider, WebXPRT, Dromaeo
     43
     44== Platform Integration ==
     45
     46- Clipboard quality
     47        - Devs that do rich text editors care about this (TinyMCE)
     48- File upload enhancements
     49        - Want to make it work really well
     50- Drag & Drop enhancements
     51        - On iPad now (and on Mac)
     52- Better Touch Bar support
     53        - Exposes editing/playback controls
     54        - don't work consistently across websites, want to improve it
     55- Non-rectangular display support
     56        - For new devices (like iPhone X)
     57
     58== More Clients on Modern WebKit ==
     59
     60- Adoption blockers for Apple apps
     61- Adoption blockers for third-party apps
     62- Want to start phasing out the legacy API (single-process model)
     63        - Supporting both models is challenging for some features
     64        - If you're using the legacy API, you should start replacing it
     65        - It's not safe, it's not responsive
     66
     67
     68== JavaScriptCore API Completeness ==
     69
     70- Native API for ES6
     71- Native API for Web Assembly
     72
     73== Web Developers ==
     74
     75(Again, not discussing timelines, schedules. Sometimes we work for a long time until a feature is ready to ship. Can't promise that any of these will ship)
     76
     77== Top Requests ==
     78
     79- Service Workers
     80        - Worries about battery life for background processes
     81        - We think it can be done and not drain batteries based on our engagement in standards
     82- Push
     83- Beacon
     84        - Lazy phone-home
     85        - replace sync XHR and unload events for metrics
     86- Directory Upload
     87- Intersection Observer
     88        - Ad networks don't give credit for view if it hasn't been visible for some seconds
     89        - This allows devs do it in a good way, without using invisible Flash
     90- Payment Request
     91        - Looking to get Apple Pay into the emerging standards
     92- requestIdleCallback
     93        - Another popular request for setTimeout('', 0)
     94
     95== But wait... There's More! ==
     96
     97- Template data binding
     98- Web Components: declarative syntax
     99- Web Animations
     100        - Really interested in it, unifies various animation APIs
     101- <dialog> element
     102        - Interested in it to replace showModalDialog
     103- Internationalization API
     104- Web Assembly Thread
     105- Geolocation floor level
     106        - Done work to expose floor level for devices that have that info
     107        - Useful new functionality, we hope it makes it to standards
     108
     109== Form Controls ==
     110
     111- date controls
     112- <input type=color>
     113- <datalist>
     114- inputmode attribute
     115- <menu> + <command>
     116
     117== Graphics ==
     118
     119- WebGPU (continuing standards work)
     120        - Apple worked with game companies, frameworks, chipset vendors
     121        - Give web graphics same performance benefits as native graphics libraries
     122        - Recently designed a new shader language
     123        - Most work will be in standards rather than codes
     124        - If you're interested, talk to Myles or check out the WebGPU standards group
     125- WebGL 2
     126- WebVR
     127- OffscreenCanvas
     128        - More complex drawing without taking up main thread
     129- Async image decoding
     130        - Explored automatic ways, we think there are other APIs needed (opt-in attribute), explicit decode API to ask browser to decode right now
     131
     132== Media ==
     133
     134We care about HEVC (h.265), some devices have hardware support for it for efficiency
     135
     136- Media Capabilities API
     137        - Want to offer more info to video sites about what codec to use
     138- More WebRTC
     139        - Biggest marquee features, but there is a lot more we can do for interop and new functionality
     140- Modern EME
     141        - Encrypted Media Extensions (DRM on the web)
     142        - This is what it takes for premium video on the web
     143- 360 Video
     144        - Many cases sites that offer this disable it in Safari, want to enable it on YouTube, Vimeo
     145
     146== Text ==
     147
     148- CSS font-display
     149- Unicode 10
     150- OpenType-SVG fonts
     151        - New standard to use SVG in an open-type font container for scalable color fonts
     152
     153== Compliance & Compatibility ==
     154
     155- HTML Event Loop
     156        - There is a detailed standard
     157        - As features are added require it (requestIdleCallback) we will move toward this
     158- Pass all of test262
     159        - Official test script for ECMAScript, want to get back to fully testing it
     160        - First complete ES6, fastest ES6, want complete support for fully compliant ES6
     161- Pass more of WPT
     162- HTML5test
     163        - Easy to run, shows a number that is easy to compare
     164        - Doesn't do any check if the implementation is correct or complete
     165        - Expect this number to go up significantly
     166
     167== Dev Tools: Back to Basics ==
     168
     169- Network tab redesign
     170- Styles sidebar redesign
     171- WebDriver quality
     172- Canvas inspection
     173
     174Want areas of inspector to be more usable and more familiar
     175Want to move toward this without losing the high degree of UX polish
     176If you're interested in working on tools you can enable these as experimental
     177
     178== Considering next level features ==
     179
     180- Top Level UI
     181- Console
     182- Debugger
     183- Responsive Design Mode
     184- Improved app and device inspection
     185- W3C WebDriver (standard coming out, not something any browser implements today)
     186
     187== WebKit Contributors ==
     188
     189=== Build Speed ===
     190
     191- Clean builds take too long, Incremental builds take too long
     192        - Working to improve build speed
     193
     194=== Better Tools and Services ===
     195
     196- EWS (Early Warning System) improvements
     197        - Other teams at Apple are jealous of this
     198        - Pre-check before landing is even more powerful than CI
     199- Bot reliability
     200- Easier to run benchmarks
     201        - changing it to run on top of WebDriver
     202        - Existing fully automated testing
     203- Buildbot upgrade
     204
     205=== Code & Test Cleanup ===
     206
     207- Next generation layout
     208- LayoutTest debt repayment
     209- Better way to do feature flags
     210- Web Inspector UI testing
     211- Remove CSS regions
     212        - Didn't get traction
     213        - Will get 60 fps on mobile
     214
     215Welcome people working with us on these areas. Don't promise to ship any of them.
     216
     217
     218= Questions =
     219
     220What about HEIF support?
     221
     222- Tricky question, deliberately disabled. Don't want to pollute the web without a well thought out story.
     223- Needs more definition
     224- Most people are uncomfortable with a heavily patent encumbered format
     225- No definitive plan at this time
     226- WebP has given a big nudge toward compression for images on the web