the Chromium logo

The Chromium Projects

Objectives

At Google we define and track progress against our goals using "OKRs" (Objectives and Key Results). Here are the OKRs for the web platform predictability infrastructure project. Note that these are intentionally aggressive and so we will be happy if we deliver 60%-70% of them. Platform predictability also includes broader efforts by other web platform teams (eg. improving interop of the features they own), but those are owned by the individual teams (eg. input-dev) and so not included here.

2016 Q3

### Improve interop testing

Invest in a high quality test suite for the web platform as a whole.

    #### Imports happening daily via simplified import process.

    *   Add a builder which tries to update, and aborts if an
                automatic update couldn't be completed.
    *   Add a script to trigger try jobs to discover which new tests
                are failing across different platforms.
    *   Add a mapping of directories to auto-update preferences, and
                when updating, edit W3CImportExpectations/TestExpectations
                and file bugs according to this mapping.

    #### Easier contribution to web-platform-tests

    Implement a way to contribute to WPT repository with Chromium tools. Our
    tools assume that some configuration files are checked in to the target
    repository, and we need to put such files to a separated repository for
    WPT.
    *   Agreement on changes in our tools with chrome-infra
    *   Implement
    *   Land the first CL using the process to both of Chromium repo
                and WPT repo
    *   Multiple Blink engineers landed CLs with the process

    #### Bugs filed for all automated web-platform-tests that fail on Chrome but pass on two other engines

    Use this to increase our understanding of the value of WPT

    #### Eliminate csswg-test build step

    Test harness runs unbuilt tests

    #### Eliminate csswg-test pull-request backlog

    32 as of 6/20

    #### W3C PointerEvent Tests: Complete automation through script injection

    shared with input-dev.

### Improve understanding of web compat

Tools for better data for decision making that impacts compat, and process
improvements that reduces the risk/cost of regressions.

    #### Googlers can use bisect-builds.py to bisect regressions on Linux Chrome down to an individual commit position

    Internal only for now due to only official Chrome builds being archived.
    Obviously doesn't include positions which fail to build, etc.

    #### Land scripts and publish instructions for using cluster telemetry for UseCounter analysis

    #### Fix fast shutdown and PageVisits issues in UseCounters in Chrome 54

    <https://crbug.com/597963>, <https://crbug.com/236262>

    #### Web platform TLs regularly use a view of regression rates per component

    #### Extend Cluster telemetry to add new anlyasis page and support runs on 100k web pages

    Goal is developers can intuitively and easily schedule analysis runs
    using Cluster Telemetry's new analysis page. Specific AIs: Make CT using
    swarming. No waiting in queue. Add 200+ VMs to CT pool. Add support for
    100k pages. <http://skbug.com/5465>, <http://skbug.com/5316>,
    <http://skbug.com/5245>

    #### Remove (or downgrade) deprecation warnings not on imminent path for removal

    Goal is developers can easily tell what things are highly likely to
    impact them and when <https://crbug.com/568218>

    #### Concrete plan for deprecation API

    <https://crbug.com/564071>

    #### Establish regular triage of Hotlist-PredictabilityInfra bugs

    Combined with hotlist-interop triage?

### Improve web platform feature interoperability

Partner with feature teams to invest in improving interop in specific
high-return areas (as an exception to the general rule that teams own their
own interop).

    #### Ship the unprefixed Fullscreen API

    #### Ship the fullscreen top-layer rewrite

    Shared with layout-dev

    #### Concrete standards proposal and tests for event loop behavior

    <https://github.com/atotic/event-loop>
    *   Land interop tests for promise resolution behavior, file
                bugs for failures in all browsers
    *   Specify that some events fire just before rAF
    *   Engage other vendors in discussion about which events should
                be defined to be coupled to rAF, and to what extent their
                order should be defined
    *   Write interop tests for rAF-coupled events

    #### At least bi-weekly triage of Hotlist-Interop issues

    Triage process here:
    <https://docs.google.com/document/d/1fDE3cFjQta0i7zx7JY1Icx0NNRS20HACz4uKb3Wo3hI/edit?pref=2&pli=1>

    #### STRETCH: Concrete shipping plan for unprefixed fullscreen in WebKit, EdgeHTML and Gecko

### Improve communication with web developers

    #### Own chromestatus.com and drive its improvement

    *   Take ownership of codebase, understand its structure
    *   Chromestatus is instrumented and we understand where people
                are going on the site
    *   Meet with teams to discuss pain points and areas for
                improvement for Chromestatus
    *   Best practices and guidance for using Chromestatus are
                documented and visible \*on Chromestatus\*
    *   Meet with Mozilla, Microsoft, Opera to discuss merging all
                status trackers

    #### Create and distribute a GCS / Endor survey to inform developer survey

    #### Reach consensus within Google on our developer feedback strategy

    go/webdevfeedback

    #### Create and distribute a comprehensive developer survey

    *   Buy in from all major parties on survey including primary
                learnings we want
    *   First draft of survey completed
    *   Final draft of survey agreed upon by all major parties
    *   Survey distributed and gathering feedback

### Reduce footguns in the web platform

Make it easier for web developers to reason about behavior of their
applications, especially when they're composed of multiple 3rd-party
components.
*   **Initial implementation of Feature Policy (behind a flag)**
    *   Parse response header to construct policy
    *   Remove features based on policy
                (document.{write,cookie,domain}, SyncXHR, WebRTC)
    *   Propagate removal to embedded frames
*   **V1 Feature policy spec feature-complete**
    *   converge on v1 set of must-have features
    *   figure out all the spec plumbing and interop bits
    *   draft explainer, engage other browser vendors + developers
*   **Integrate permission delegation with feature policy**
    *   Enforce API permissions based on parsed feature policy