WebPerf WG roadmap

igrigorik@chromium.org 

2016

2017

2018

High Resolution Time

Level 2 CR

Level 2 REC

---

Performance Timeline

Level 2 CR

Level 2 REC

---

Resource Timing

Level 1 CR+REC
Level 2 CR

Level 2 REC

Level 3 CR

Level 3 REC

Navigation Timing

Level 2 CR

Level 2 REC
Level 3 CR

Level 3 REC

Page Visibility

Level 2 CR

Level 2 REC

---

Beacon API

Level 1 CR+REC

Level 2 CR

Level 3 REC

User Timing

Level 2 CR

Level 2 REC

Level 3 CR

Level 3 REC

requestIdleCallback

Level 1 CR

Level 1 REC

---

Preload

Level 1 CR

Level 1 REC

---

Resource Hints

Level 1 CR

Level 1 REC

---

Level 1 “performance pack”

Status

Link

Navigation Timing L1

REC, Dec 2012

https://www.w3.org/TR/2012/REC-navigation-timing-20121217/

High-Resolution Time L1

REC, Dec 2012

https://www.w3.org/TR/2012/REC-hr-time-20121217/   

Performance Timeline L1

REC, Dec 2013

https://www.w3.org/TR/2013/REC-performance-timeline-20131212/ 

User Timing L1

REC, Dec 2013

https://www.w3.org/TR/2013/REC-user-timing-20131212/

Resource Timing L1

CR, Jun 2016

Brief overview and history of the L1 pack

  1. Navigation Timing L1 was the first spec produced by the working group.
  1. It is self contained and does not contain any dependencies.
  1. High-Resolution Time L1 introduced a high precision monotonic clock.
  1. Time origin is defined as from navigationStart defined in Navigation Timing L1.

Level 2 “performance pack”

Status

Link

High-Resolution Time L2

DRAFT

https://w3c.github.io/hr-time/ 

Performance Timeline L2

DRAFT

https://w3c.github.io/performance-timeline/

Resource Timing L2

DRAFT

https://w3c.github.io/resource-timing/ 

Navigation Timing L2

DRAFT

http://w3c.github.io/navigation-timing/ 

User Timing L2

DRAFT

http://w3c.github.io/user-timing/ 

History and changes from the L1 pack

  1. Refactor of L1 specs
  1. Many interfaces are shuffled between specs to bring conceptual coherence and simplify authoring.
  1. Performance Timeline is now exposed on Worker.
  2. “Time origin” is moved to High-Resolution Time L2 and is compatible with Window and Worker contexts.
  3. New PerformanceObserver interface defined on Performance Timeline
  1. Resource Timing, Nav Timing, User Timing integrations with PerformanceObserver.
  1. Resource Timing extensions and clarifications:
  1. Uses new “time origin” definition (High-Resolution Time L2)
  2. secureConnectionStart is a mandatory attribute.
  3. New attributes: transferSize, decodedBodySize, encodedBodySize, nextHopProtocol, workerStart
  4. Processing algorithm clarifications on how to deal with failed resource fetches
  1. Navigation Timing is redefined as an extension to Resource Timing:
  1. Navigation Timing entries are exposed via Performance Timeline
  2. Legacy interfaces are preserved
  1. User Timing: minor processing clarifications and timestamps are with respect to new “time origin”.


Q3~Q4 deliverables … SHIP ALL THE THINGS!!! Maybe?

  1. Publish notes / move to WICG…
  1. Server Timing
  2. Frame Timing
  3. Reporting
  4. NEL

  1. Snapshot “L2 performance pack”
  1. What’s new: refactored, consistent time origin, exposed on worker.
  2. AI’s:
  1. P0: resolve translation issues for HR-Time
  2. P0: resolve presence of requests that don't return a response on Resource Timing
  3. P1: review and/or contribute tests for all L2 specs
  4. P2: security and privacy reviews
  5. Publish CR’s

  1. Page Visibility L2 CR
  1. What’s new: fire on unload; processing clarifications.
  2. AI’s:
  1. P0: land tests
  2. Publish CR

  1. Beacon L1 CR
  1. Depends on Page Visibility L2
  2. AI’s:
  1. P0: land tests
  2. Publish CR
  3. Move to REC in Q4

  1. requestIdleCallback L1 CR
  1. AI’s:
  1. P0: land tests, security review.
  2. P1: Resolve interop with HTML spec, integrate Edge feedback
  3. Publish CR

  1. Preload L1 CR
  1. AI’s
  1. P0: Tests & security review
  2. Publish CR

Q4+ deliverables

  1. Fetch all the things?
  1. Resource Timing, Nav Timing L3’s?
  1. Multi-request fetches
  1. Preload
  1. Define preload cache interop with Fetch

  1. User Timing L2?
  1. Declarative marks
  2. Richer payloads
  3. …?

  1. Beacon
  1. L2:
  1. GET, custom headers, etc.
  2. Expose as fetch() primitive?

  1. Preload
  1. Define preload cache interop with Fetch

  1. Resource Hints
  1. AI’s
  1. Build tests & interop data
  2. Security review
  3. Publish CR… REC?


Process

  1. Create milestones for each spec
  1. E.g. https://github.com/w3c/hr-time/milestones/Level%202 
  1. Assign all open issues to milestones
  2. Assign editors for each next-milestone issue
  3. Update dashboard to track next-milestone

---

  1. Organizing the agenda

------

Performance Observer

Resource Timing extensions

https://docs.google.com/document/d/1DNRGhlYbMYdBkKsy7z9Bg--83KHa6r9-THurzBNLqTE/edit#