2012-08-22

Efficient Script Yielding:

New page

Note: This is a draft and may changed at any time. [http://www.w3.org/2011/04/webperf Previous charter] is available.

== Scope ==

As Web browsers and their underlying engines include richer capabilities and become more powerful, web developers are building more sophisticated applications where application performance is increasingly important. Developers need the ability to assess and understand the performance characteristics of their applications, and they need the ability to write more efficient applications, using well-defined interoperable methods.

The Web Performance Working Group's deliverables include user agent features and APIs to measure and improve aspects of application performance. These deliverables will apply to desktop and mobile browsers and other non-browser environments where appropriate and will be consistent with Web technologies designed in other working groups including HTML, CSS, WebApps, DAP and SVG.

=== Success Criteria ===

In order to advance to Proposed Recommendation, each specification is expected to have two independent implementations of each of feature defined in the specification.

Out of Scope

The following items are not in scope:

* Does not provide a means to package and transmit the timing information back to a web service.

* Does not provide a method to profile and instrument server side code.

* Does not include performance data analysis techniques or algorithms.

== Deliverables ==

=== Specifications ===

The working group will deliver the following:

==== Navigation Timing ====

An interoperable means for site developers to collect real-world performance information from the user agent while loading the root document of a webpage. The user agent captures the end to end latency associated with loading a webpage from a web server. This includes the time associated with fetching the document from the network to the time associated to load the document within the user agent. This might include:

* timing associated with the network;

* timings associated with loading the document; and

* information about how the page was loaded, for example number of network requests.

==== Performance Timeline ====

This specification defines an unified interface to store and retrieve performance metric data.

==== Resource Timing ====

An interoperable means for site developers to collect real-world performance information from the user agent while loading resources as specified from the root document of a webpage. The user agent captures the end to end latency associated with loading resources from a web server. This includes the time associated with fetching the resource from the network and the time associated to load the resource within the user agent. This might include:

* timing associated with the network;

* timings associated with loading the resource in the document;

* a resource may be one of the following elements: iframe, img, script, object, embed and link.

==== User Timings ====

An interoperable means for site developers to capture timing information with a developer supplied name. The user agent captures the time stamp at the point and time specified in the code executing in the user agent.

==== Page Visibility ====

An interoperable means for site developers to programmatically determine the current visibility of a document and be notified of visibility changes.

==== Efficient Script Yielding ====

should we keep this?

An interoperable means for site developers to efficiently yield and receive control flow.

==== Timing control for script-based animations ====

An interoperable and efficient means for web page authors to write script-based animations where the user agent is in control of limiting the update rate of the animation.

==== HTTP Archive (HAR) format ====

This specification defines an archival format for HTTP transactions that can be used by a web browser to export detailed performance data about web pages it loads.

==== @@TODO ====

* Background activity (Jatinder) and/or Instrumentation/timing API for tools (Alois)

* Memory Leak (Tony)

* Media Resource Timing (Jatinder)

* Network Friendly apps (PLH)

* Sending data back prior to an unload (Jatinder)

=== Other Deliverables ===

Other non-normative documents may be created such as:

* Test suites for each specification;

* Primer or Best Practice documents to support web developers when designing applications with performance in mind;

* Best practice document explaining how data is commonly gathered between the client and the server.

=== Milestones ===

Note: The following table has been updated with the new documents and according to the timetable of current documents.

Milestones Note: The group will document significant changes from this initial schedule on the group home page.

{| style="background-color:#ffffcc;" border="1" cellpadding="10" cellspacing="0"

|-

!Specification

!FPWD

!LC

!CR

!PR

!Rec

|-

|[http://www.w3.org/TR/navigation-timing/ Navigation Timing]

|Oct 2010

|Jan 2011

|March 2011

|July 2012

|?

|-

|Navigation Timing 2

|August 2012

|?

|?

|?

|?

|-

|[http://www.w3.org/TR/performance-timeline/ Performance Timeline]

|August 2011

|September 2011

|July 2012

|?

|?

|-

|[http://www.w3.org/TR/resource-timing/ Resource Timing]

|May 2011

|August 2011

|May 2012

|?

|?

|-

|Resource Timing 2

|?

|?

|?

|?

|?

|-

|[http://www.w3.org/TR/user-timing/ User Timing]

|August 2011

|September 2011

|July 2012

|?

|?

|-

|[http://www.w3.org/TR/page-visibility/ Page Visibility]

|June 2011

|July 2011

|July 2012

|?

|?

|-

|Efficient Script Yielding

|?

|?

|?

|?

|?

|-

|[http://www.w3.org/TR/animation-timing/ Timing control for script-based animations]

|June 2011

|February 2012

|?

|?

|?

|-

|HAR format

|?

|?

|?

|?

|?

|}

== Dependencies and Liaisons ==

=== W3C Groups ===

==== Web Applications Working Group ====

This Working Group develops APIs for client-side development and for markup vocabularies for describing and controlling client-side application behavior. In particular, it develops DOM Core. The WebTiming proposal depends on the WebIDL specification.

==== HTML Working Group ====

This group will maintain and produce incremental revisions to the HTML specification. The HTML specification defines the window object.

==== CSS Working Group ====

The group develops and maintains CSS.

==== SVG Working Group ====

This group continues the evolution of Scalable Vector Graphics as a format and a platform.

==== Device APIs and Policy Working Group ====

This group create client-side APIs that enable the development of Web Applications and Web Widgets that interact with devices services.

=== External Groups ===

==== ECMA Technical Committee 39 (TC39) ====

This is the group responsible for ECMAScript standardization, and related ECMAScript features like E4X. As the Web Performance Working Group will be developing ECMAScript APIs, it should collaborate with TC39.

==== Internet Engineering Task Force ====

The IETF is responsible for defining robust and secure protocols for Internet functionality, in particular HTTP.

Show more