The Evolution and Disappearance of googMetrics Explained

By Alejandra Soni on October 25, 2018
read

googMetrics were recently deprecated and removed from the getStats() API. In order to maintain compliance with W3C standards, we at callstats.io updated our existing libraries to take this change into account. For some of our customers, W3C’s alteration has caused some trouble, as their applications may have relied on these experimental metrics.

 

What are googMetrics?

googMetrics are non-standard drafts introduced to getStats() by Google Developers to easily test new metrics. Since these metrics are non-standard, experimental metrics, they are not meant to be included in the standard output of getStats().

getStats() sets strict standards and a high bar for metrics. Metrics should be well-defined and documented in a reasonable way, so implementations may implement them independently without looking at each others code.

As is typical with experimental metrics, they are not well-defined, especially when in the process of experimentation. When these metrics are exposed in a standard API, developers tend to start using them and it can be difficult to remove them. Several apps or products may come to rely on an experimental metric that was never meant to be included in the standard output.

 

Why are googMetrics Disappearing?

The W3C WebRTC Working Group recently announced that googMetrics will no longer be exposed in the WebRTC standard API. Talks are ongoing as to an alternative method to expose experimental metrics for developer use.

Chrome is in the process of providing a reliable path to deprecate googMetrics use. In order to remove these experimental stats, Google Chrome took them out once the getStats() API was transitioned from a callback-based to a promise-based API. This transition took place as of Chrome v.58, and meets W3C compliance in the promise-based getStats() API. For those relying on googMetrics, the callback-based getStats() API still returns them, however, none of the newly implemented metrics are reported by the old API.

How Has callstats.io Responded to this?

Before Chrome v.58 was released, callstats.io used the callback-based getStats() API. We transitioned successfully to the promise-based getStats() API in the most recent versions of our JavaScript library, in large part to improve performance. Our goal was not only to improve performance, but also improve the user experience. The promise-based getStats() API meets W3C compliance standards, but does remove googMetrics.

 

A Non-exhaustive List of Removed Experimental googMetrics

  1.  googCaptureStartNtpTimeMs

  2.  googDecodeMs

  3.  googFrameHeightInput

  4.  googFrameRateDecoded

  5.  googFrameRateOutput

  6.  googFrameRateReceived

  7.  googMaxDecodeMs

  8.  googMinPlayoutDelayMs

 

However, some of the experimental metrics were translated to W3C statistics standards under a slightly different naming convention, as they are seen to be particularly useful to developers. They are mostly related to the SSRC report that measures audio and video stream performance.

 

How Has this Affected callstats.io Customers?

In order to maintain W3C compliance, we removed googMetrics previously available on the dashboard under MST charts and conference graphs.

It is important that callstats.io follows the W3C compliance standards in order to contribute to the unification of statistics across browsers, and therefore improve and help mature monitoring and reporting.

There is no doubt that new, promise-based statistics are much more performant and meet compliance standards. However, we are unable to fully retire callback-based statistics until remote reports are available in Chrome, as otherwise certain metrics will not be available. For example, this could limit measurements such as RTT and others.

Please report missing statistics to the webrtc-stats Github repo. For existing, browser-specific missing statistics, please review the following list of links and star ⭐ the bugs if you want to help move the discussion forward.

 

Chrome

 

Firefox

 

If you want to check the status of the WebRTC statistics implementation across browser versions in real-time, check out our page Verify webrtc-stats.

 

Try the callstats.io Demo

Tags: WebRTC, Customer Support, getStats API, W3C, callstats.io