wiki:WebKitGoalsFor2018

Version 1 (modified by Jon Davis, 3 years ago) (diff)

--

WebKit Goals for 2018

by Maciej Stachowiak

  • There are no promises about what we're working on, this is just what we're interested in
  • Audiences: Users, Native Developers, Web Developers, WebKit Contributors
    • We plan stuff for all of these audiences
    • Users: Security, Privacy, Performance, Platform Integration
    • Native Devs: More clients on Modern WebKit, Complete JSC API
    • Web Devs: Web APIs, Media, Grpahics, Text, Compliance & Compat, Dev Tools (Back to basics)
    • Webit Contributors: Build speed, Better tools

Users

  • Security (Code Exec, & UXSS Mitigations)
    • Universal Cross-Site Scripting
    • Gigacage, Isoheaps, Bulletproof JIT, Safe casting and unions, reduce use of raw pointers, DOM Event timing, No render tree mutation during layout
    • Other: Sandbox harding, Fuzzer fixes, Security response, Security-enabling web platform features
      • Apple will be focusing on their sandbox, encourage other teams to do the same
      • Will fix fuzzer bugs
      • New web platform features for sites to strengthen their own security (CSP, Subresource Integrity)

Privacy

  • Intelligent Tracking Prevention, use machine learning and stuff to prevent cross-site tracking
    • Will focus on improving it, tightening it, but make it easier for sites impacted by it
    • Looking into API for embedded content to get access to cookies with user consent
    • Affiliated domains
    • Improvements to private browsing mode)
    • Investigate stateless tracking
      • ITP is for stateful tracking prevention
      • Fingerprinting is a method for stateless tracking, behavioral fingerprinting, and other techniques
  • DNT was a failure, so we're looking at technological enforcement

Performance

  • Significantly improving Speedometer, MotionMark, ARES-6
  • Also Jetstream, JSBench
  • Non-benchmark areas for improvements. Primarily: Page load speed, memory use, scrolling, battery life
    • Also important: WebAssembly, Worst-case JS (no excuses)
      • ExcuseBench? Code that uses JS that is known to be badly optimized
  • Old benchmarks Apple sees as legacy: Kraken, Octane, SunSpider, WebXPRT, Dromaeo

Platform Integration

  • Clipboard quality
    • Devs that do rich text editors care about this (TinyMCE)
  • File upload enhancements
    • Want to make it work really well
  • Drag & Drop enhancements
    • On iPad now (and on Mac)
  • Better Touch Bar support
    • Exposes editing/playback controls
    • don't work consistently across websites, want to improve it
  • Non-rectangular display support
    • For new devices (like iPhone X)

More Clients on Modern WebKit

  • Adoption blockers for Apple apps
  • Adoption blockers for third-party apps
  • Want to start phasing out the legacy API (single-process model)
    • Supporting both models is challenging for some features
    • If you're using the legacy API, you should start replacing it
    • It's not safe, it's not responsive

JavaScriptCore API Completeness

  • Native API for ES6
  • Native API for Web Assembly

Web Developers

(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)

Top Requests

  • Service Workers
    • Worries about battery life for background processes
    • We think it can be done and not drain batteries based on our engagement in standards
  • Push
  • Beacon
    • Lazy phone-home
    • replace sync XHR and unload events for metrics
  • Directory Upload
  • Intersection Observer
    • Ad networks don't give credit for view if it hasn't been visible for some seconds
    • This allows devs do it in a good way, without using invisible Flash
  • Payment Request
    • Looking to get Apple Pay into the emerging standards
  • requestIdleCallback
    • Another popular request for setTimeout(, 0)

But wait... There's More!

  • Template data binding
  • Web Components: declarative syntax
  • Web Animations
    • Really interested in it, unifies various animation APIs
  • <dialog> element
    • Interested in it to replace showModalDialog
  • Internationalization API
  • Web Assembly Thread
  • Geolocation floor level
    • Done work to expose floor level for devices that have that info
    • Useful new functionality, we hope it makes it to standards

Form Controls

  • date controls
  • <input type=color>
  • <datalist>
  • inputmode attribute
  • <menu> + <command>

Graphics

  • WebGPU (continuing standards work)
    • Apple worked with game companies, frameworks, chipset vendors
    • Give web graphics same performance benefits as native graphics libraries
    • Recently designed a new shader language
    • Most work will be in standards rather than codes
    • If you're interested, talk to Myles or check out the WebGPU standards group
  • WebGL 2
  • WebVR
  • OffscreenCanvas
    • More complex drawing without taking up main thread
  • Async image decoding
    • Explored automatic ways, we think there are other APIs needed (opt-in attribute), explicit decode API to ask browser to decode right now

Media

We care about HEVC (h.265), some devices have hardware support for it for efficiency

  • Media Capabilities API
    • Want to offer more info to video sites about what codec to use
  • More WebRTC
    • Biggest marquee features, but there is a lot more we can do for interop and new functionality
  • Modern EME
    • Encrypted Media Extensions (DRM on the web)
    • This is what it takes for premium video on the web
  • 360 Video
    • Many cases sites that offer this disable it in Safari, want to enable it on YouTube, Vimeo

Text

  • CSS font-display
  • Unicode 10
  • OpenType-SVG fonts
    • New standard to use SVG in an open-type font container for scalable color fonts

Compliance & Compatibility

  • HTML Event Loop
    • There is a detailed standard
    • As features are added require it (requestIdleCallback) we will move toward this
  • Pass all of test262
    • Official test script for ECMAScript, want to get back to fully testing it
    • First complete ES6, fastest ES6, want complete support for fully compliant ES6
  • Pass more of WPT
  • HTML5test
    • Easy to run, shows a number that is easy to compare
    • Doesn't do any check if the implementation is correct or complete
    • Expect this number to go up significantly

Dev Tools: Back to Basics

  • Network tab redesign
  • Styles sidebar redesign
  • WebDriver quality
  • Canvas inspection

Want areas of inspector to be more usable and more familiar Want to move toward this without losing the high degree of UX polish If you're interested in working on tools you can enable these as experimental

Considering next level features

  • Top Level UI
  • Console
  • Debugger
  • Responsive Design Mode
  • Improved app and device inspection
  • W3C WebDriver (standard coming out, not something any browser implements today)

WebKit Contributors

Build Speed

  • Clean builds take too long, Incremental builds take too long
    • Working to improve build speed

Better Tools and Services

  • EWS (Early Warning System) improvements
    • Other teams at Apple are jealous of this
    • Pre-check before landing is even more powerful than CI
  • Bot reliability
  • Easier to run benchmarks
    • changing it to run on top of WebDriver
    • Existing fully automated testing
  • Buildbot upgrade

Code & Test Cleanup

  • Next generation layout
  • LayoutTest debt repayment
  • Better way to do feature flags
  • Web Inspector UI testing
  • Remove CSS regions
    • Didn't get traction
    • Will get 60 fps on mobile

Welcome people working with us on these areas. Don't promise to ship any of them.

Questions

What about HEIF support?

  • Tricky question, deliberately disabled. Don't want to pollute the web without a well thought out story.
  • Needs more definition
  • Most people are uncomfortable with a heavily patent encumbered format
  • No definitive plan at this time
  • WebP has given a big nudge toward compression for images on the web