Delaying the enabled-by-default to M112 is fine by me but I'll wait for a resolution here before taking action. Currently it is enabled-by-default in Canary.
On Friday, January 27, 2023 at 12:41:23 PM UTC+1 philipp...@googlemail.com wrote: > Am Fr., 27. Jan. 2023 um 11:49 Uhr schrieb Henrik Boström < > h...@chromium.org>: > >> *Contact emails* >> h...@chromium.org, h...@chromium.org >> >> *Background* >> I attempted to remove this feature before but had forgotten to file an >> intent to deprecate, background here >> <https://groups.google.com/a/chromium.org/g/blink-dev/c/RsIktnGhHqw/>. >> >> *Specification* >> The getStats() API spec is here <https://w3c.github.io/webrtc-stats/> and >> it contains all the metrics. The deprecated metrics are also listed, but in >> the obsolete section >> <https://w3c.github.io/webrtc-stats/#obsolete-rtcmediastreamtrackstats-members>. >> >> There's an open issue to remove obsolete metrics from the spec as soon as >> they are unshipped from modern browsers. This is considered a blocker for >> the document to reach Proposed Recommendation status. >> >> *Summary* >> WebRTC is a set of JavaScript APIs (spec >> <https://w3c.github.io/webrtc-pc/>) that allow real-time communication >> between browsers. For the relevant metrics being removed, we're only >> talking about the WebRTC use case that is sending or receiving audio or >> video (typically Video Conferencing use cases), not the data channel use >> cases that is a popular WebRTC use case, since data channel only use cases >> would never have any tracks/streams. >> >> RTCPeerConnection.getStats() returns a map of string-to-objects, where >> each object is one of the dictionaries defined in the stats spec. The >> reason an app calls getStats() is mostly to report quality metrics (send >> and receive resolutions, bitrates, glitches, video QP, etc) which can be >> important for A/B experimentation. It can also be used in a way that >> impacts app logic or even UX inside the app. Most common use case I can >> think of: poll getStats() at 10 Hz and render volume bars for each >> participant based on volume levels from stats objects. >> >> The deprecation in question is to remove some stats objects that were >> made obsolete several years ago: all metrics on the "track" dictionary have >> been moved to non-obsolete objects ("inbound-rtp", "outbound-rtp", >> "media-source"). Reasons for wanting to deprecate include: >> >> - Spec-compliance: needed for browser implementations to align and >> for the spec to become Proposed Recommendation. >> - Web compat: Firefox never implement "track" or "steam" >> >> <https://wpt.fyi/results/webrtc-stats/supported-stats.https.html?label=experimental&label=master&aligned> >> due >> to them being obsolete. >> - Performance: the duplicated metrics make up ~40% of the stats >> report size, which can be a significant number of bytes in larger >> meetings >> and it is common for apps to poll getStats() 10 times per second. >> - Tech debt: unblock removal of 1400 LOC. >> >> In the meantime, the obsolete metrics is duplicated in several places of >> the stats report. >> >> *Risks* >> *- Impossible to properly measure usage* >> Because stats objects are exposed as JavaScript dictionaries, and because >> apps have to iterate all objects of the stats report in order to find the >> ones they are interested in or if they just dump all the data without >> filtering, there is no way to measure how big the dependency is on track in >> the real world. >> >> While we lack use counters, we have some positive signs: >> >> - Because Firefox does not have "track" or "stream" stats, any app >> that can run on Firefox already exercises the paths of these not existing. >> >> >> - An experiment to "unship deprecated metrics" has been running at 50% >> Canary since October >> >> <https://groups.google.com/a/chromium.org/g/blink-dev/c/RsIktnGhHqw/m/3iqjODsMBwAJ>, >> >> giving developers testing Canary a heads-up. Nobody complained until the >> experiment reached Stable. >> - We got to 50% Stable in M109 and while we're in the process of >> rolling it back now due to breaking twilio-video.js >> <https://github.com/twilio/twilio-video.js/issues/1968>, it's >> interesting to note that this is the only breakage we are aware of (that >> does not mean there aren't more breakages, but I believe this at least >> says >> something about the severity). >> >> *- Selenium et al typically starts browsers from fresh profiles and hence >> does not know the finch trial seed* >> The most likely explanation for breakage is not testing Canary or test >> environments not having access to Finch experiments. This makes the >> behavior on Stable a surprise. >> >> *- To have a Reverse Origin Trial or not to have a Reverse Origin Trial?* >> Migrating should require so few lines of code (look for stats.type == >> 'inbound-rtp' instead of stats.type == 'track', for example) that it seems >> to be a bigger hurdle for a developer to enroll in the trial than to simply >> fix their code. >> >> *- Compatiblity risk* >> There is one particular metric out of all metrics that, if you run >> Safari, does not exist on "inbound-rtp" yet. This can be a problem, but >> again is probably not a big problem because this particular metric was >> never implemented on Firefox so apps already need to survive without it, >> and it is very easy to write a fallback path for the Safari case: >> >> let trackIdentifer = null; // In Firefox this will never be set >> regardless. >> if (inboundRtp.trackIdentifier) { >> // Spec-compliant browser. >> trackIdentifier = inboundRtp.trackIdentifier; >> } else if (inboundRtp.trackId) { >> // Fallback-path for Safari or 1+ year old Chromium browsers. >> trackIdentifier = report.get(inboundRtp.trackId).trackIdentifier; >> } >> >> *Proposal* >> Rollback to 0% Stable but keep the "unship deprecated" experiment at 50% >> Canary/Beta. Wait for Twilio to fix their issue and do another rollout >> attempt. Keep a slower rollout pace next time. >> >> I see limited amount of value in a Reverse Origin Trial since it appears >> to be more effort to register to the trial than to fix the issue, if you >> are affected. >> >> I do prefer to have the feature enabled-by-default in M111+ and overwrite >> that default via Finch rather than the other way around as to not "turn off >> the fire alarm" for non-Finch testing environments. I realize that is not >> perfect (what if you run in a non-Finch environment) but it would reduce >> overall risk. >> > > Thank you Henrik. I agree with one suggestion: only do default-off in > M112+ (which is branching so you would just need to revert this commit > <https://chromiumdash.appspot.com/commit/3a4d52f365df03413a856ea20366b36e8fb8ea0b> > on > the M111 branch). > This gives developers another month to update (which itself should be > quick) and then rolling it out to their customers and users (which takes > time). > > I hope that the 50% rollout caused enough incidents (even though you may > never hear about some of them) to get the fixes in ASAP. > > cheers > > Philipp > > -- >> You received this message because you are subscribed to the Google Groups >> "blink-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to blink-dev+unsubscr...@chromium.org. >> To view this discussion on the web visit >> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5ecf1ea6-c16c-464a-b529-439e05e4feedn%40chromium.org >> >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5ecf1ea6-c16c-464a-b529-439e05e4feedn%40chromium.org?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a0b5bb9-addd-4a56-b053-1429bbaabe2dn%40chromium.org.