Abin K Paul (abin.paul1@gmail.com)
- Yoav Weiss
- Hao Liu
Introduce a new field renderBlockingStatus
to PerformanceResourceTiming which would be an enum highlighting the render blocking nature of stylesheets and scripts. The project involved taking the feature through the Blink shipping process which includes adding changes to the Fetch and Resource Timing specifications, adding necessary Web Platform Tests and an implementation of the feature in Chromium.
https://docs.google.com/document/d/1J0WlKFKxDDWCMHEXtO-vUdgJonbHRQSNDsYUBAwhguY
-
An issue for the feature was available in the repository for Resource-Timing : w3c/resource-timing#262
-
As part of the blink process, the first step was to create a new entry for the feature in Chrome Status Dashboard to track its status throughout the process : https://chromestatus.com/feature/5166965277589504
-
An explainer is put together to describe the proposed change to developers : https://github.com/w3c/resource-timing/blob/gh-pages/Explainers/Render_Blocking_Status.md
-
Since in this case the new feature is added to Resource Timing, the feature proposal is presented to the Web Performance Working group to gather feedback on the same.
- Recording of the presentation is available online : Recording Link
- Discussion after the presentation is captured in the meeting minutes : Minutes Link
-
Once the working group is on board, the proposed spec changes are made
- Resource Timing : w3c/resource-timing#327
- Fetch : whatwg/fetch#1449
-
Along with the spec changes, it is necessary to add Web platform tests for the feature. These are tests that run in all browsers to ensure compatibility between browsers. These were added as part of the chromium CL and are automatically merged into the WPT repo when the chromium CL is merged. At this stage the feature is behind a flag (namely
enable-experimental-web-platform-features
). Before we check in this code behind the flag, we send out anIntent to Prototype
mail to blink-dev to notify folks about the feature being developed.- Intent to Prototype : https://groups.google.com/a/chromium.org/g/blink-dev/c/KD_Z1mObs_8/m/4ZHGrH20AAAJ
- Chromium CL : https://chromium-review.googlesource.com/c/chromium/src/+/3709521
-
To gauge interest from other browser vendors requests for positions are filed in respective repositories. Before a feature can be added to the web platform, at least two implementers must be interested.
- Safari - WebKit/standards-positions#17
- Firefox - mozilla/standards-positions#662
-
To get a wider review we file for a review from the W3C TAG. Initially the new field was proposed as a string field. It was changed into an enum as per suggestion from TAG.
- Issue : w3ctag/design-reviews#753
- CL to convert to enum: https://chromium-review.googlesource.com/c/chromium/src/+/3812241
-
Once TAG review is done and we have interest from a second browser vendor and no major opposition, we are good to land the spec changes and enable the feature by default. We send out an Intent to Ship mail to blink-dev which will be signed off by 3 Blink API owners before we can enable the feature by default.
- Intent to Ship : https://groups.google.com/a/chromium.org/g/blink-dev/c/0Md9xYf53gs/m/VFbwQmVpAwAJ
- CL to enable feature by default : https://chromium-review.googlesource.com/c/chromium/src/+/3843756
-
Parallely worked on adding documentation for the feature to MDN Docs : https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus (PR: mdn/content#19325)
Adding a new field responseStatus
to PerformanceResourceTiming which would be an integer corresponding to HTTP status code returned when fetching the resource.
Explainer : https://github.com/w3c/resource-timing/blob/gh-pages/Explainers/Response_Status_Code.md
Spec Changes
- Resource Timing PR : w3c/resource-timing#335
- Fetch PR : whatwg/fetch#1468
- HTML PR: whatwg/html#8405
Chromium CLs
- https://chromium-review.googlesource.com/c/chromium/src/+/3754923
- https://chromium-review.googlesource.com/c/chromium/src/+/3958184
Adding a new field contentType
to PerformanceResourceTiming which would hold a string corresponding to the content type of the fetched resource.
Explainer : https://github.com/abinpaul1/resource-timing/blob/explainer-content-type/Explainers/Content-Type.md
Spec Changes
- Resource Timing PR : w3c/resource-timing#341
- Fetch PR : whatwg/fetch#1481
Chromium CL : https://chromium-review.googlesource.com/c/chromium/src/+/3916841
i would like to contribute for this project