LGTM1 to ship including a deprecation trial On Fri, Nov 29, 2024, 5:00 p.m. François Doray <fdo...@google.com> wrote:
> > > On Friday, November 29, 2024 at 3:13:39 PM UTC-5 Rick Byers wrote: > > tl;dr: Just one remaining question about providing a developer opt-out > (like a deprecation trial). > > On Fri, Nov 29, 2024 at 12:25 PM Francois Pierre Doray < > fdo...@chromium.org> wrote: > > Hi Rick, > > Thanks for raising your concerns regarding troubleshooting issues caused > by Tab Freezing on Energy Saver. > > > Does Chrome have any visual indication that a tab has been frozen? > There is no indication that a tab is frozen. However, the feature only > operates when Energy Saver is active, signaled by a leaf icon next to the > omnibox. When Energy Saver is first activated or when the leaf icon is > clicked, a bubble indicates that "Background activity and some visual > effects may be limited". > > > Ah cool, I had never noticed that before myself. I see there's also a > prominent "turn off now" button: > > [image: image.png] > > That seems like a significant mitigation to me. If someone is having > trouble with some site it seems like there's a decent chance that they (or > their IT support people) would notice this indicator, click it, then click > "turn off now" and confirm that fixes the issue. From there I'd imagine > troubleshooting would be pretty easy (google searches for "chrome energy > saver" would point to the per-site opt-out etc.) > > We avoided a frozen tab indicator because in the long term (2-3 years), we > plan to freeze most background tabs, to ensure that they don't steal > resources from the foreground tab. At that point, there will be a visual > indication for tabs that are *not* frozen (e.g. playing audio = speaker > icon, using the progress notification API > <https://github.com/explainers-by-googlers/progress-notification> to do > arbitrary work = UI TBD). > > > I love that long-term plan, thanks! Personally I'd love to have a mode > where pages get to run in the background only if they show such an icon or > in response to me granting their origin that permission. That's not behind > a flag or anything yet, right? > > > "Pages get to run in the background only if [they show some UI]" : In 2-3 > years, we'd like this to be the default behavior, due to the expected > foreground tab speed up and battery savings. It's not yet behind a flag. > > > > How discoverable is it for users that they can add a site to an > exclusion list? > > Users can add sites to the exclusion list via the "Performance" tab in > Chrome settings (direct link: chrome://settings/performance), under "Always > keep these sites active." This is also mentioned in the help article > <https://support.google.com/chrome/answer/12929150> (will be updated for > this launch). > > > Yeah I saw that, and I like that the UI contains a "current sites" list > rather than requiring copying URLs. But that alone certainly is not > discoverable for a user who simply has a broken web page and doesn't know > why. But given that disabling energy saver is very discoverable, that's > good enough for me as long as this is coupled just to energy saver. I guess > you won't really have a way to measure how much site compat issues lead > users to disable energy saver, eh? I imagine most users disabling it will > do so for the performance / visual quality concerns, not site compat > reasons. > > > We could run a HaTS survey to understand what leads users to add sites to > the exclusion list. Let me know what you think and I can prioritize this. > It's not important for the launch process, so up to you. Not needed from my perspective. While discoverability is limited, most users won't need this feature. > Typical mail/chat/calendar/phone/drive/music > streaming/videoconferencing/... apps will either not exceed the CPU > threshold for freezing or be opted out via API usage. Sites requiring high > background CPU usage under Energy Saver (outside of audio/video calls, > device control...) can direct users to the Chrome settings page or > recommend using this policy > <https://chromeenterprise.google/intl/en_ca/policies/#TabDiscardingExceptions> > to > enterprise admins (policy doc will be updated for this launch). > > > Yes I'm definitely convinced that "most" (probably even >99.99%) of users > won't have a problem - your design is great for that, thank you! But what > I've learned from my incident post-mortem responsibilities is that it's the > ~0.0001% of users that we have to really focus on to reduce the risk of > most OMGs. Ask Robert about why I'm afraid of his wrath around this next > time you see him in the office :-). > > Realistically I'd expect most such sites to just hack in some API usage > that tickles your heuristic (like take an IndexedDB lock just for the > purposes of being kept alive). That 's going to be much more effective for > them than trying to direct users to take some manual steps, right? That > seems unfortunate to me, as it will make your life harder in driving down > the exceptions. Experience with this sort of thing is a big part of the > motivation behind our guidance > <https://docs.google.com/document/d/1RC-pBBvsazYfCNNUSkPqAVpSpNJ96U8trhNkfV0v9fk/edit?tab=t.0#heading=h.glc7fyugcipe> > for providing explicit developer opt-outs for breaking changes (especially > interventions like this). Sure, there is some risk of an explicit opt-out > being abused but that risk isn't necessarily any greater than abuse of your > heuristic, and at least you can more easily measure and track it and update > behavior as necessary for any "arms race" with abusive sites. Have you > considered offering developers a deprecation trial > <https://www.chromium.org/blink/launching-features/#deprecation-trial> to > reduce the risk of them abusing your heuristics and get you contact info > for the developers who feel they must opt-out? > > > I hadn't considered a deprecation trial, but I think it's a good idea to > reduce the risk of Web developers abusing our heuristics. In terms of > process, should I create a "Feature removal" entry at chromestatus.com or > can we handle this as part of this intent? > Great! Yeah we can just use this intent, no need for extra overhead. And of course it's important to document how to use the trial in the blog post. > We think that requiring some effort to allow high background CPU usage > under Energy Saver is reasonable, as it can significantly impact battery > life and contradicts Energy Saver's purpose (note: Energy Saver is only > available on battery power, activates when battery level is below 20% by > default). > > > I suspect that most impacted users would simply disable energy saver > completely rather than make the extra effort to discover and use the > site-specific opt-out. But that's fine - both settings aren't hard to find, > and if you see a lot of users disabling energy saver then you can do some > research to see if better per-site controls might help reduce that (though > we might be stuck for the users who have already opted out completely). > > > "though we might be stuck for the users who have already opted out > completely": If we observe any significant difference in the number of > Energy Saver activations between the Control/Enabled groups, or if we > observe an upward trend of users without Energy Saver after the launch, > we'll investigate why and make adjustments. > Oh of course, that makes sense - thanks! > > Is the plan for Chrome 133 to be fully at 100%, with 132 still well > below that? > The plan is to experiment on 1% of stable users in Chrome 133 and then > ramp up gradually as we gain confidence that the feature is well tuned. The > feature is already under experimentation in Canary/Dev. We intend to > expand Tab Freezing beyond Energy Saver in the future, taking into account > lessons learned from this limited scope launch, but that will be handled > under new Intents. > > > Ok, we've come to appreciate that that pattern increases the risk somewhat > because it makes it even harder for IT admins and support personnel to > reproduce and action site compat issues their users are complaining about. > I don't think we've yet come up with some well-informed guidance for > mitigating this risk, so I won't ask for something different (eg. could > keep to <10% in 133 and then go 100% in 134). But it's something to keep an > eye out for in customer reports and perhaps inform our future guidance, so > please let me know (here or privately) if it ends up showing up as an issue > in customer reports or not. > > > Sounds good. > > > > > Will the blog post you mentioned be published prior to 133 beta (Jan 15)? > That's the goal, though DevRel hasn't confirmed a date. I'll check in with > them. > > > Ok, thanks. If the blog post gets delayed, please hold off on extending > the experiment to stable until the blog post is live. > > > Sounds good. > > > > Have a nice day, > > François > > On Wednesday, November 27, 2024 at 10:20:09 AM UTC-5 Rick Byers wrote: > > I evaluated this intent relative to our compat principles > <https://bit.ly/blink-compat> and overall think you've done an excellent > job mitigating the compat risks. In particular the user controls, > developer-influencable heuristics and enterprise opt-out seem likely to be > significant mitigations. I'm also confident that you will be proactive in > monitoring for issues and being responsive to feedback. > > Heuristics like the energy saver and CPU threshold seem great to me on > balance, but I'm also nervous that they will make troubleshooting rare but > severe issues harder (especially since these signals can't really be > monitored via web page telemetry). We've learned from one recent incident > that sometimes the rarest incidents can be extremely bad - eg. causing a > serious business disruption for one single organization but not more widely > (making support for that organization much harder). In such cases, > discoverability and understandability of the issue (including by skilled IT > support personnel) is key to avoiding extended outages. With that in mind, > I have a couple questions: > > Does Chrome have any visual indication that a tab has been frozen? How > discoverable is it for users that they can add a site to an exclusion list? > > Is the plan for Chrome 133 to be fully at 100%, with 132 still well below > that? I'm just wondering to what extent someone looking into website logs > for an issue will be able to detect a clear correlation with Chrome 133 > (increasing the chance that they reach out to us or find this mentioned in > the chrome 133 blog post)? > > Will the blog post you mentioned be published prior to 133 beta (Jan 15)? > I see it's mentioned > <https://support.google.com/chrome/a/answer/7679408?hl=en&co=CHROME_ENTERPRISE._Product%3DChromeBrowser#top:~:text=131%20on%20Android-,Tab%20freezing%20on%20Energy%20saver,-When%20Energy%20saver> > in Chrome 131 enterprise release notes already, thank you! > > Thanks, > Rick > > On Tue, Nov 26, 2024 at 3:11 PM Chromestatus < > ad...@cr-status.appspotmail.com> wrote: > > Contact emails fdo...@chromium.org, shas...@chromium.org > > Explainer None > > Specification https://wicg.github.io/page-lifecycle > > Design docs > > https://docs.google.com/document/d/1uTJifh_erMX4_CTKgKljlj9O4SAmGam5W61FBHeasGI/edit?usp=sharing > > Summary > > When Energy Saver is active, Chrome will freeze a "browsing context group" > that has been hidden and silent for >5 minutes if any subgroup of > same-origin frames within it exceeds a CPU usage threshold, unless it: - > Provides audio- or video-conferencing functionality (detected via > microphone, camera or screen/window/tab capture or an RTCPeerConnection > with an 'open' RTCDataChannel or a 'live' MediaStreamTrack). - Controls an > external device (detected via usage of Web USB, Web Bluetooth, Web HID or > Web Serial). - Holds a Web Lock or an IndexedDB connection that blocks a > version update or a transaction on a different connection. Freezing > consists of pausing execution. It is formally defined in the Page Lifecycle > API. The CPU usage threshold will be calibrated to freeze approximately 10% > of background tabs when Energy Saver is active. > > > Blink component Blink>Scheduling > <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EScheduling> > > TAG review None > > TAG review status Not applicable > > Risks > > > Interoperability and Compatibility > > Interoperability: This feature does not expose new capabilities to the > Web, so it has low chances of creating situations in which the same > HTML/CSS/Js/... behaves differently in different browsers. That being said, > we invite other browsers vendors that already shipped "tab freezing" to > share and discuss their opt-out rules, which will help offer consistent > behavior for web developers across browsers, avoiding situations where a > site's background functionality works correctly in some browsers but not > others. Compatibility: This feature may affect existing sites with > background functionality. However, breaking some functionality to extend > battery life is in line with user expectations when "Energy Saver" is > active. We're interested in Web developer feedback to adjust our opt-outs > and minimize avoidable breakages. "Energy Saver" can be disabled via the > the "BatterySaverModeAvailability" enterprise policy. > > > *Gecko*: Under consideration ( > https://github.com/mozilla/standards-positions/issues/87) > > *WebKit*: No signal > > *Web developers*: No signals In the past, Web developers expressed > concerns about freezing, because it made it difficult to implement > background functionality that users care about in a reliable way (e.g. > notification for calendar event). By freezing only pages that use a lot of > CPU and only when Energy Saver is active, breakages that were reported in > the past are mitigated. Additionally, we will listen to Web developers > feedback on multiple channels (crbug, blink-dev, stack overflow, twitter, > github) and make adjustments to heuristics if we find that background > functionality that users care about is broken. Users may deactivate Energy > Saver or manually opt-out sites at chrome://settings/performance > > *Other signals*: Chrome on Android freezes background tabs after 5 > minutes ( > https://groups.google.com/a/chromium.org/g/blink-dev/c/NKtuFxLsKgo/m/brL3bfS5CAAJ). > Chrome on desktop and Android freezes pages before putting them in the > BFCache. Chrome on desktop freezes tabs in collapsed tab groups. Edge > freezes background tabs after a configurable timeout ( > https://www.microsoft.com/en-us/edge/features/sleeping-tabs-at-work?form=MT00D8). > > > Ergonomics > > No Ergonomics Risks identified. > > > Activation > > No action is required to support browsers that don't freeze pages. > > > Security > > A frame can observe when it is frozen, either directly (via the “freeze” > event) or indirectly (timer runs later than expected, server doesn’t > receive a ping…). When the decision to freeze a frame depends on > observations made on other cross-origin frames (crossing CPU usage > threshold, using Web API that opt-outs from freezing) there is a risk of > leaking information across origins. Multiple solutions were considered to > balance security and ergonomy requirements. We finally landed on "freezing > a browsing context group based on independent observations made on groups > of same-origin/same-page frames in that browsing context group". Pros & > cons + All frames on a page are in the same “frozen” state (does not break > Web devs assumptions). + All frames that can synchronously script each > other are in the same “frozen” state (does not break Web devs assumptions). > + Not aggregating CPU usage across origins minimizes leaks, because an > attacker can’t vary its own CPU usage to precisely measure the CPU usage of > another origin. - Leaks Web API usage across cross-origin frames (a frame > can learn that a cross-origin frame in the "browsing context group" uses or > doesn't use one of the APIs that prevents freezing depending on whether it > itself gets frozen). > > > WebView application risks > > Does this intent deprecate or change behavior of existing APIs, such that > it has potentially high risk for Android WebView-based applications? > > This is a desktop-only feature which does not affect Webview. > > > Debuggability > > The frozen state of a tab is displayed in the "Lifecycle state" column of > chrome://discards. Whether a page can be frozen and why (e.g. usage of > WebRTC) is displayed in the "Is freezable" column of chrome://discards. The > #freezing-on-energy-saver and #freezing-on-energy-saver-testing features at > about:flags can be used to test this intervention. It is also possible to > manually freeze a tab via chrome://discards to verify how it reacts. > > > Will this feature be supported on all six Blink platforms (Windows, Mac, > Linux, ChromeOS, Android, and Android WebView)? Yes > > Chrome for Android already freezes pages in the background (not tied to > Energy Saver). This proposal brings freezing to desktop. > > > Is this feature fully tested by web-platform-tests > <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> > ? No > > Flag name on about://flags freezing-on-energy-saver > > Finch feature name FreezingOnBatterySaver > > Requires code in //chrome? False > > Tracking bug https://crbug.com/325954772 > > Launch bug https://launch.corp.google.com/launch/4282880 > > Measurement This feature doesn't introduce new APIs that web pages need > to adopt. > > Availability expectation This feature doesn't introduce new APIs that > other browsers need to make available. It expands the sets of conditions > under which Chrome may freeze tabs (previously, only tabs in collapsed tab > groups could be frozen). > > Adoption expectation This feature doesn't introduce new APIs that web > pages need to adopt. Web pages may listen to the freeze/resume events to > react to freezing, but it's not an issue if a web page doesn't. These > events are already dispatched when a tab in a collapsed tab group is > frozen. > > Adoption plan In collaboration with DevRel, we will publish an article > covering the conditions under which freezing is triggered and possible > remediations for broken background use cases. > > Non-OSS dependencies > > Does the feature depend on any code or APIs outside the Chromium open > source repository and its open-source dependencies to function? > No > > Estimated milestones Shipping on desktop 133 DevTrial on desktop 132 > > Anticipated spec changes > > Open questions about a feature may be a source of future web compat or > interop issues. Please list open issues (e.g. links to known github issues > in the project for the feature specification) whose resolution may > introduce web compat/interop risk (e.g., changing to naming or structure of > the API in a non-backward-compatible way). > This feature does not modify the spec. It changes the conditions under > which tabs are frozen in Chrome. Those conditions are expected to evolve > over time. > > Link to entry on the Chrome Platform Status > https://chromestatus.com/feature/5158599457767424?gate=5076873410772992 > > Links to previous Intent discussions Intent to Prototype: > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAG9b2qVcRLRWXUz61AkRWi%2BkaOJwgUK8bNCRBG6LOpqgOd%2BvSw%40mail.gmail.com > Ready for Trial: > https://groups.google.com/a/chromium.org/g/blink-dev/c/Xu1C7WhoGm4/m/_9U_kLHDAwAJ > > > This intent message was generated by Chrome Platform Status > <https://chromestatus.com>. > > -- > 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+...@chromium.org. > > > To view this discussion visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67462b62.2b0a0220.19a388.0546.GAE%40google.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67462b62.2b0a0220.19a388.0546.GAE%40google.com?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 visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY9fhohUewpp%3D_eeMcWEbQtZvBvLDNnnPT6eSAbdwxq8uA%40mail.gmail.com.