Web Platform Predictability
Web developers say a big problem building for the web is all the surprises they hit where something doesn't work the way they expected. The Chromium project (along with other browsers and standards organizations) has long invested heavily in reducing these problems. But we've lacked a coordinated effort to track and improve the whole area.
The Web Platform Predictability project is an effort to make developing for the web more predictable, and as a result more enjoyable, cost-effective and competitive with native mobile platforms. In particular, we intend to focus primarily on problems caused by:
- Different browsers / platforms behaving differently (interoperability)
- Behavior changing from one version of a browser to another (compatibility)
- APIs with surprising side effects or subtle behavior details (footguns)
For details see:
- BlinkOn 7: Platform Predictability, and web-platform-tests
- Chrome Dev Summit: Predictability for the Web talk (video)
- Platform Predictability vision document
- BlinkOn 6: Web Platform Predictability talk (video)
- Predictability mailing list
- Ecosystem Infrastructure team charter and mailing list: the chromium team driving most of the interop-related work
The difficulties of web development
- The Double-Edged Sword of the Web
- The Fucking Open Web
- 10 things I learned from reading (and writing) the PouchDB source
- (Web) Development Sucks, and It's Not Getting Any Better
- Make the Web Work For Everyone
Advice for Blink developers
- Blink's mission is to make the web better, fight the temptation to focus narrowly on just making Chrome great!
- Prefer web-platform-test changes in your CLs over web_tests changes where practical
- What matters to web developers is eliminating surprises, so focus on pragmatic paths to interop that maximize web compat. If 3+ engines violate a spec in the same way, the bug is probably in the spec (especially when changing the engines would break websites). Specs are much easier to change than multiple implementations!
- For breaking changes, reach out to email@example.com for advice or read the Blink principles of web compatibility
- Prioritize bugs in your areas that reflect real developer pain - eg. those most starred, recent regressions.
- Understand how your feature behaves on all major browsers, file bugs for differences (on specs, other engines and/or blink).
- Make sure new APIs have feedback from several real world web developers.
- Get to know your peers on other engines, you'll be surprised how well your goals and interests are aligned!
Relevant issue trackers
- Chromium Hotlist-Interop: key bugs that impact interoperability
- Useful queries: untriaged, high priority, most starred
- New Hotlist-Interop bug
- Chromium Blink>Infra>Ecosystem: bugs for chromium infrastructure and tooling to promote interoperability
- Chromium Internals>FeatureControl: bugs related to how web platform features are enabled and measured (e.g. webexposed tests, UseCounters)
- Chromium bugs filed by other browser vendors
- GitHub issues for Chromestatus.com
- Compat analysis tools
- Cross browser testing: BrowserStack, Sauce Labs