Before "notifications" have been used as a signal of a page that wants to run in the background. I didn't see it listed here. The other use case that has been mentioned in similar threads is stock market applications which seem to both want to run in the background and do non-trivial work of some kind.

As for possible pitfalls I do wonder what happens on very slow or throttled computers where any work at all will be interpreted as "high cpu usage".

But I think this overall is a very reasonable feature for a browser. There will be challenges in, tuning, UI and user communication, but nothing that I consider a feature blocker.

LGTM2

/Daniel

On 2024-12-04 03:45, Vladimir Levin wrote:
You've mentioned things like mail/calendar should still work. Is this because the expected background CPU usage is low or is it that it's using some API that directly opts it out of the freezing behavior? I'm particularly worried about things like calendar that don't _typically_ need to do any work, but _occasionally_ want to show a notification that you have an upcoming meeting. If there happens to be some background work happening in those that causes it to be frozen, that seems like it could be a hard to discover problem (due to the fact that it maybe only occasionally uses too much CPU) and quite painful for the user. In general, any site that can do background work and notifies the user via notifications seems like it could be problematic

Thanks,
Vlad

On Fri, Nov 29, 2024 at 7:38 PM Rick Byers <rby...@chromium.org> wrote:

    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.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 <http://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
    
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY9fhohUewpp%3D_eeMcWEbQtZvBvLDNnnPT6eSAbdwxq8uA%40mail.gmail.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/CADsXd2P1o1wBfdum060TnNmotmxoCFr0fEqKjjzUg%2BaepNijkw%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2P1o1wBfdum060TnNmotmxoCFr0fEqKjjzUg%2BaepNijkw%40mail.gmail.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/4086d432-7397-4bc5-9ba8-40f783428cf8%40gmail.com.

Reply via email to