Hello blink-dev team, I work for SAP and try to understand how the process of web standards deprecations works in general.
I just posted couple of questions on MDN, illustrated by "unload event" deprecation example. Feedback over this or that channel welcome: https://github.com/orgs/mdn/discussions/438 Many thanks Srdjan, https://github.com/bsrdjan On Friday, August 11, 2023 at 5:42:38 PM UTC+2 Brandon Heenan wrote: > Created crbug/1472321 to track that improvement > > On Fri, Aug 11, 2023 at 1:28 AM Fergal Daly <fer...@google.com> wrote: > >> On Fri, 11 Aug 2023 at 09:08, Brandon Heenan <bhe...@google.com> wrote: >> >>> That makes sense—I suppose a more general wording that would apply here >>> would be "These flags prevent or revert a breaking change and will only be >>> available for a limited time." Does that sound better to you / others on >>> the thread? >>> >> >> That sounds great to me, >> >> F >> >>> >>> On Thu, Aug 10, 2023 at 4:33 AM Fergal Daly <fer...@google.com> wrote: >>> >>>> On Wed, 9 Aug 2023 at 07:23, Brandon Heenan <bhe...@google.com> wrote: >>>> >>>>> Still, previous breaking changes to the unload event that affected SAP >>>>> were present in the /deprecated page, so the safest thing to do is to >>>>> follow the same pattern here, no? >>>>> >>>> >>>> The switch landed here <https://crrev.com/c/4736842>, It's in M117. >>>> I've sent a CL <https://crrev.com/c/4764528> to make it appear on the >>>> deprecated flags page. We can CP that, >>>> >>>> F >>>> >>>> It's not marked as a deprecated feature, so it's just in the regular >>>> flags UI. We can CP a tiny change to move it. What gives me pause is that >>>> the page says >>>> >>>> "These features are disabled by default. They will not be available in >>>> future versions of Chrome." >>>> >>>> This doesn't quite match what we are doing. >>>> >>>> >>>> >>>>> >>>>> On Tue, Aug 8, 2023 at 12:18 AM Fergal Daly <fer...@google.com> wrote: >>>>> >>>>>> On Tue, 8 Aug 2023 at 08:00, Brandon Heenan <bhe...@google.com> >>>>>> wrote: >>>>>> >>>>>>> Flipping the permission policy default is still a breaking change >>>>>>> that requires some action from the developer to keep unload events, >>>>>>> right? >>>>>>> If so, we still want en entry in the /deprecated page so that unmanaged >>>>>>> (vendors/BYOD/outbound) users accessing on-prem deployments have some >>>>>>> mitigation. Kenji and I discussed this case with SAP last week, and >>>>>>> that >>>>>>> level of mitigation seemed necessary. >>>>>>> >>>>>> >>>>>> It's just about naming/presentation - I'm adding a switch no matter >>>>>> what, just whether it shows in the deprecated tab or the main tab, >>>>>> >>>>>> F >>>>>> >>>>>> >>>>>>> >>>>>>> On Mon, Aug 7, 2023 at 3:35 AM Fergal Daly <fer...@google.com> >>>>>>> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Sat, 8 Jul 2023 at 07:55, Brandon Heenan <bhe...@google.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hello, I'm chiming in to provide some thoughts from the enterprise >>>>>>>>> perspective. >>>>>>>>> >>>>>>>>> Our goal is to not block forward progress to the web, but to >>>>>>>>> improve the web in an enterprise-friendly way. You shouldn't ever >>>>>>>>> hear me >>>>>>>>> say "you can't do X because it's scary to the enterprise team." You >>>>>>>>> should >>>>>>>>> instead hear "We expect X to be risky, but here are the things we >>>>>>>>> know we >>>>>>>>> can do to make it much less risky." >>>>>>>>> >>>>>>>>> In this case, yes, this is risky for enterprises. We can say this >>>>>>>>> with confidence because we've seen escalations before when we've made >>>>>>>>> changes to unload events (crbug.com/933153, crbug.com/953228). >>>>>>>>> >>>>>>>>> Kenji and Daisuke have been working with us, and my understanding >>>>>>>>> of the plan is to: >>>>>>>>> >>>>>>>>> - >>>>>>>>> >>>>>>>>> Allow developers to opt-in early to the new behavior (unload >>>>>>>>> event ignored) with a permission policy >>>>>>>>> - >>>>>>>>> >>>>>>>>> Communicate the change on chromestatus and the enterprise >>>>>>>>> release notes (already happening >>>>>>>>> >>>>>>>>> <https://support.google.com/chrome/a/answer/7679408?sjid=15316582819754370342-NA#skpUnload114>). >>>>>>>>> >>>>>>>>> We will provide a bug link for customers for feedback in a future >>>>>>>>> release. >>>>>>>>> - >>>>>>>>> >>>>>>>>> Reach out to enterprises and developers we expect to be >>>>>>>>> affected >>>>>>>>> - >>>>>>>>> >>>>>>>>> Introduce an enterprise policy to allow an IT admin to control >>>>>>>>> unload event behavior >>>>>>>>> - >>>>>>>>> >>>>>>>>> Introduce a flag in chrome://flags/deprecated to allow end >>>>>>>>> users to control unload event behavior >>>>>>>>> >>>>>>>>> >>>>>>>> I looked into this, I'm not sure this should be a deprecated flag. >>>>>>>> It doesn't really fit the description. Some time in the future when we >>>>>>>> start to fully disable unload, there should be a deprecated flag for >>>>>>>> unload >>>>>>>> but right now we are just flipping the permission policy default. >>>>>>>> >>>>>>>> Are you OK with just adding a UI entry for the existing flag that >>>>>>>> controls this Permission-Policy rollout (which is named >>>>>>>> DeprecateUnload but >>>>>>>> I'm happy to rename it) >>>>>>>> >>>>>>>> F >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> - >>>>>>>>> >>>>>>>>> As early as M117, change the default for the policy so that >>>>>>>>> unload events will be ignored. This is the breaking change, and >>>>>>>>> there's >>>>>>>>> likely to be friction here. The two escalations mentioned above >>>>>>>>> both >>>>>>>>> resulted in respins the first time they reached this point. >>>>>>>>> However, this >>>>>>>>> time around, IT admins will be able to fix their environment >>>>>>>>> immediately >>>>>>>>> with the enterprise policy, end users will be able to fix >>>>>>>>> themselves with >>>>>>>>> the deprecation flag, and developers will be able to fix their app >>>>>>>>> with the >>>>>>>>> permission policy. With those mitigations in place, the risk of >>>>>>>>> requiring a >>>>>>>>> respin (or Finch rollback) due to enterprise impact is >>>>>>>>> dramatically >>>>>>>>> reduced, and this is how we eventually successfully shipped both >>>>>>>>> of those >>>>>>>>> above escalations. >>>>>>>>> - >>>>>>>>> >>>>>>>>> We expect a long transition period after that. By default, the >>>>>>>>> unload event is ignored, but different stakeholders are able to >>>>>>>>> revert to >>>>>>>>> legacy behavior. Within enterprise, we expect the enterprise >>>>>>>>> policy to be >>>>>>>>> the most useful mitigation, and the deprecation flag is the backup >>>>>>>>> for BYOD >>>>>>>>> or unmanaged devices. For the above escalations, this migration >>>>>>>>> period was >>>>>>>>> over a year, and I'm expecting something similar this time. >>>>>>>>> - >>>>>>>>> >>>>>>>>> At some point in the future, we expect to remove those >>>>>>>>> mitigations and remove support for the unload event completely. We >>>>>>>>> don't >>>>>>>>> have any specific dates for that yet; we will be responsive to the >>>>>>>>> needs of >>>>>>>>> web stakeholders, enterprise and otherwise. >>>>>>>>> >>>>>>>>> The two escalations I mentioned above were successfully resolved >>>>>>>>> and the changes to not allow popups on page unload and to not allow >>>>>>>>> synchronous XHRs on page unload were shipped. Both of those changes >>>>>>>>> followed essentially the same plan I just laid out above, and so I >>>>>>>>> think >>>>>>>>> it's reasonable to do the same thing here. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thursday, June 29, 2023 at 7:02:06 AM UTC-7 Rick Byers wrote: >>>>>>>>> >>>>>>>>>> On Thu, Jun 29, 2023 at 1:47 AM Kenji Baheux <kenji...@google.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Jun 29, 2023 at 1:48 PM Fergal Daly <fer...@google.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> On Thu, 29 Jun 2023 at 01:16, Rick Byers <rby...@chromium.org> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Fergal, >>>>>>>>>>>>> Thanks for pushing through this contentious and challenging >>>>>>>>>>>>> deprecation. We discussed this in the API owners meeting today >>>>>>>>>>>>> and were >>>>>>>>>>>>> worried that this plan seemed likely to be seriously problematic >>>>>>>>>>>>> for >>>>>>>>>>>>> enterprises (policy opt-out is helpful, but far from a silver >>>>>>>>>>>>> bullet >>>>>>>>>>>>> unfortunately). To what extent have you engaged with them and >>>>>>>>>>>>> worked to >>>>>>>>>>>>> follow the enterprise breaking change policy >>>>>>>>>>>>> <https://www.chromium.org/developers/enterprise-changes/>? >>>>>>>>>>>>> Our hunch is that at 1% or 5% we'd get escalations forcing us to >>>>>>>>>>>>> abandon >>>>>>>>>>>>> this plan. Of course, if the enterprise team is OK with it, we >>>>>>>>>>>>> could always >>>>>>>>>>>>> try anyway and see if our hunch is right. It's possible I'm >>>>>>>>>>>>> over-indexing >>>>>>>>>>>>> on past experiences like deprecating sync XHR in unload >>>>>>>>>>>>> handlers >>>>>>>>>>>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/LnqwTCiT9Gs/m/tO0IBO4PAwAJ> >>>>>>>>>>>>> >>>>>>>>>>>>> and that the enterprise world is different now, but I doubt it >>>>>>>>>>>>> :-). >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> In addition to Daisuke's response... are you concerned about >>>>>>>>>>>> enterprises that are not using fleet management and so cannot use >>>>>>>>>>>> the >>>>>>>>>>>> opt-out? If you think an enterprise policy will not be sufficient, >>>>>>>>>>>> a >>>>>>>>>>>> mitigation for those enterprises would be for us to publish an >>>>>>>>>>>> extension >>>>>>>>>>>> that allows anyone to re-enable unload (for all sites or for >>>>>>>>>>>> specific >>>>>>>>>>>> sites) by injecting the PP:unload header. Are the escalations that >>>>>>>>>>>> can't be >>>>>>>>>>>> resolved by either a policy or extension? >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> One extra comment on the extension option (great for desktop). >>>>>>>>>>> >>>>>>>>>>> If you wonder about the mobile BYOD scenarios, where extensions >>>>>>>>>>> don't exist, then we are a bit lucky here because unload is already >>>>>>>>>>> unreliable on mobile. So, it seems extremely unlikely that we'd see >>>>>>>>>>> mobile >>>>>>>>>>> enterprise/edu products that rely on unload on mobile. >>>>>>>>>>> >>>>>>>>>>> *Rick:* are there specific scenarios / environments that we >>>>>>>>>>> haven't covered? >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I'm glad to see the conversation with the enterprise team is >>>>>>>>>> further along than I had realized. Having skip unload events in the >>>>>>>>>> release >>>>>>>>>> notes >>>>>>>>>> <https://support.google.com/chrome/a/answer/7679408?sjid=5091298988245423514-NA#skpUnloadEv113> >>>>>>>>>> >>>>>>>>>> since M113 is a significant mitigation, sorry I wasn't caught up on >>>>>>>>>> the >>>>>>>>>> latest. And yes some sort of user opt-out for BYOD (extension or >>>>>>>>>> chrome::/flags, etc.) seems like an essential mitigation. I defer to >>>>>>>>>> the >>>>>>>>>> enterprise team's judgement here, so if they're OK with proceeding >>>>>>>>>> then we >>>>>>>>>> shouldn't let my enterprise fears block us. I expect we do need some >>>>>>>>>> easy >>>>>>>>>> way for an application to signal that it really does need unload >>>>>>>>>> handlers. >>>>>>>>>> Setting a permission policy is likely orders of magnitude easier >>>>>>>>>> than >>>>>>>>>> converting essential unload handlers to pagehide and ensuring >>>>>>>>>> they're safe >>>>>>>>>> to invoke multiple times. >>>>>>>>>> >>>>>>>>>> The other major constituency potentially impacted are ad >>>>>>>>>> networks. Perhaps the next step should be a 1% finch trial where we >>>>>>>>>> can >>>>>>>>>> measure various ad-related metrics? I'd defer to the judgment of the >>>>>>>>>> Chrome >>>>>>>>>> Ads team (@Josh Karlin). >>>>>>>>>> >>>>>>>>>> Anyway, I'm personally OK with 1% stable experiments (and >>>>>>>>>> whatever else on dev/beta). But I think we should discussing >>>>>>>>>> learnings from >>>>>>>>>> such 1% experiments here publicly before approving a plan to go >>>>>>>>>> beyond that. >>>>>>>>>> >>>>>>>>>> In general Yoav and I disagree with the WebKit and Gecko feedback >>>>>>>>>>>>> here and suspect that your original PP default-on proposal is far >>>>>>>>>>>>> more >>>>>>>>>>>>> likely to be a successful deprecation path for Chrome (and, >>>>>>>>>>>>> should they >>>>>>>>>>>>> choose to follow, Edge). I can understand why Firefox and WebKit >>>>>>>>>>>>> don't have >>>>>>>>>>>>> the same constraints around enterprises and so would choose >>>>>>>>>>>>> differently for >>>>>>>>>>>>> themselves. Yoav and I are happy to help in the standards >>>>>>>>>>>>> discussions. I'm >>>>>>>>>>>>> about to go on vacation for 2 weeks but Yoav said he'd follow up >>>>>>>>>>>>> with you >>>>>>>>>>>>> privately to brainstorm next steps. Sound good? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I would love to get moving on PP:unload ASAP no matter what. >>>>>>>>>>>> It's been through OT and is sitting behind a flag with some sites >>>>>>>>>>>> eager to >>>>>>>>>>>> use it. I'm happy to send an I2S for that while we discuss the >>>>>>>>>>>> harder >>>>>>>>>>>> problem. We hope that getting that out there can clear out a large >>>>>>>>>>>> chunk of >>>>>>>>>>>> the 1st- and 3rd-party unload usage, >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> +1, I'd suggest doing that regardless. >>>>>>>>>>> >>>>>>>>>>> There are a few large sites that have done some legwork on >>>>>>>>>>> unload handlers (theirs and third party partners), and are >>>>>>>>>>> interested in >>>>>>>>>>> pushing the remaining unload handlers out with PP:unload. Having >>>>>>>>>>> allies in >>>>>>>>>>> the ecosystem (i.e. extra incentives to migrate), will be helpful >>>>>>>>>>> going >>>>>>>>>>> forward :) >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Yep I think this was Yoav and my primary concern. For chrome to >>>>>>>>>> have a pragmatic and reasonable deprecation path given our user >>>>>>>>>> base, we >>>>>>>>>> really need sites adopting such an API. If we're not going to >>>>>>>>>> actually ship >>>>>>>>>> such an API then I think we'd have to give up on deprecating unload. >>>>>>>>>> I'd >>>>>>>>>> support shipping this API despite the lack of support from WebKit >>>>>>>>>> and >>>>>>>>>> Gecko. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> F >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Rick >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, Jun 28, 2023 at 4:07 AM Fergal Daly <fer...@google.com> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi API-owners, >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I am now asking for permission to go ahead with the following >>>>>>>>>>>>>> concrete unload deprecation plan below. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> Tools and outreach >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> M115 Enable `Permission-Policy: unload` (PP:unload) >>>>>>>>>>>>>> with the default being enabled. This allows sites to >>>>>>>>>>>>>> opt-in to unload >>>>>>>>>>>>>> deprecation. >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> Outreach to 1st/3rd parties, to migrate away from >>>>>>>>>>>>>> using unload and to enforce this with PP:unload. >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> Deprecation >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> M117 change the default for PP:unload so that unload >>>>>>>>>>>>>> handlers are skipped by default for 1% of page loads >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> M118 increase to 5% of page loads >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> M119 (last of 2023) increase to 10% of page loads >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> Evaluate progress on reduction of the use of unload >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> M120-128 increase +10% gradually to 100% of page loads >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Enterprise policy would allow opt-out entirely. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Obviously, the deprecation timeline is contingent on unload >>>>>>>>>>>>>> usage coming down in response to the earlier steps. >>>>>>>>>>>>>> >>>>>>>>>>>>>> We expect that 10% of page loads will provide a noticeable >>>>>>>>>>>>>> signal to sites that use unload. Also, if we were to just follow >>>>>>>>>>>>>> the >>>>>>>>>>>>>> current spec and not run unload when we can BFCache (as happens >>>>>>>>>>>>>> on >>>>>>>>>>>>>> Clank/Firefox mobile and all WebKit) we expect that we would >>>>>>>>>>>>>> skip 30-40% of >>>>>>>>>>>>>> unload handlers when the main frame navigates. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Decisions: >>>>>>>>>>>>>> >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> Timeline >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> All navigations vs main-frame navigations only >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Standardising >>>>>>>>>>>>>> >>>>>>>>>>>>>> We have some new data and have had some further discussions >>>>>>>>>>>>>> with browser vendors. There's no consensus. TL;DR WebKit are >>>>>>>>>>>>>> opposed to any >>>>>>>>>>>>>> Permissions-Policy but support removing unload eventually. >>>>>>>>>>>>>> Mozilla are >>>>>>>>>>>>>> still discussing. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Both Mozilla >>>>>>>>>>>>>> <https://github.com/mozilla/standards-positions/issues/691> >>>>>>>>>>>>>> and WebKit >>>>>>>>>>>>>> <https://github.com/WebKit/standards-positions/issues/127> >>>>>>>>>>>>>> were opposed to standardising `Permissions-Policy: unload` >>>>>>>>>>>>>> (defaulting to >>>>>>>>>>>>>> on) because they worried that a containing frame might >>>>>>>>>>>>>> selectively disable >>>>>>>>>>>>>> unload handlers in a child frame for malicious purposes (no >>>>>>>>>>>>>> specific cases >>>>>>>>>>>>>> were discussed). >>>>>>>>>>>>>> >>>>>>>>>>>>>> So we flipped to the idea of having PP:unload with the >>>>>>>>>>>>>> default being disabled. We cannot suddenly do that. We need to >>>>>>>>>>>>>> roll it out >>>>>>>>>>>>>> gradually. WebKit folks are opposed to this and have >>>>>>>>>>>>>> suggested >>>>>>>>>>>>>> <https://github.com/WebKit/standards-positions/issues/200#issuecomment-1596385073> >>>>>>>>>>>>>> >>>>>>>>>>>>>> we do a reverse origin trial instead. If our plan works out, >>>>>>>>>>>>>> eventually we >>>>>>>>>>>>>> would ROT as the final nail but ROT starting now has downsides >>>>>>>>>>>>>> for users >>>>>>>>>>>>>> and sites and no upside for the implementer. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Mozilla has so far not been negative >>>>>>>>>>>>>> <https://github.com/mozilla/standards-positions/issues/691> >>>>>>>>>>>>>> on the Permissions-Policy off-by-default approach but they are >>>>>>>>>>>>>> still >>>>>>>>>>>>>> discussing. They are concerned that disabling unloads when >>>>>>>>>>>>>> subframes are >>>>>>>>>>>>>> navigating could be a problem. We found that about 1/4 of >>>>>>>>>>>>>> subframe >>>>>>>>>>>>>> navigations involve an `unload` handler (most seem to involve >>>>>>>>>>>>>> handlers in >>>>>>>>>>>>>> cross-site and same-site site frames). We don't have examples of >>>>>>>>>>>>>> sites that >>>>>>>>>>>>>> rely on `unload` handlers in this way, although they probably do >>>>>>>>>>>>>> exist. >>>>>>>>>>>>>> Migrating to `pageshow` or using PP:unload for these sites >>>>>>>>>>>>>> should be >>>>>>>>>>>>>> trivial. >>>>>>>>>>>>>> >>>>>>>>>>>>>> We have the option to say that PP:unload only applies to main >>>>>>>>>>>>>> frame navigations. This would mean these sites would be >>>>>>>>>>>>>> completely >>>>>>>>>>>>>> unaffected however that has some downsides. It is harder to >>>>>>>>>>>>>> explain and >>>>>>>>>>>>>> does not end with full removal of `unload`. We would prefer to >>>>>>>>>>>>>> have this >>>>>>>>>>>>>> apply to all navigations unless we find a good reason not to. If >>>>>>>>>>>>>> we were to >>>>>>>>>>>>>> change part-way, there would be no breakage. We hope that once >>>>>>>>>>>>>> we drive >>>>>>>>>>>>>> down usage in 3rd-part iframes with PP:unload that the number of >>>>>>>>>>>>>> unload >>>>>>>>>>>>>> handlers running in subframe navigations decreases significantly. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Finally there was some discussion >>>>>>>>>>>>>> <https://github.com/w3c/webappsec-permissions-policy/issues/513#issuecomment-1564361739> >>>>>>>>>>>>>> >>>>>>>>>>>>>> about how Permissions-Policy off-by-default should work. Our >>>>>>>>>>>>>> current >>>>>>>>>>>>>> version requires every page to set the header and every parent >>>>>>>>>>>>>> to set the >>>>>>>>>>>>>> iframe `allow` attribute. This is maximally conservative. If at >>>>>>>>>>>>>> some point >>>>>>>>>>>>>> later on there is agreement to standardise on something less >>>>>>>>>>>>>> conservative, >>>>>>>>>>>>>> it will not break pages that have already re-enabled `unload`. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Overall it seems hard to standardise in advance but if we >>>>>>>>>>>>>> succeed in driving down `unload` usage, other browsers are >>>>>>>>>>>>>> on-board with >>>>>>>>>>>>>> removing unload. The worst case scenario would be where we >>>>>>>>>>>>>> implement >>>>>>>>>>>>>> PP:unload (which the others do not agree with) but make no >>>>>>>>>>>>>> noticeable >>>>>>>>>>>>>> progress on `unload` usage. If that happens we can just go with >>>>>>>>>>>>>> the >>>>>>>>>>>>>> currently specced behaviour (don't run `unload` if BFCaching is >>>>>>>>>>>>>> possible) >>>>>>>>>>>>>> and maybe revert the PP:unload, >>>>>>>>>>>>>> >>>>>>>>>>>>>> F >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Tue, 9 May 2023 at 16:01, Fergal Daly <fer...@google.com> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Mon, 8 May 2023 at 17:51, Rick Byers <rby...@chromium.org> >>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Fergal, >>>>>>>>>>>>>>>> It's exciting to see this moving forward! Just to clarify, >>>>>>>>>>>>>>>> this is effectively an I2S for the unload permissions-policy, >>>>>>>>>>>>>>>> is that >>>>>>>>>>>>>>>> right? Or are you also requesting permission to stop firing >>>>>>>>>>>>>>>> unload events >>>>>>>>>>>>>>>> now too? The latter is going to require some significant >>>>>>>>>>>>>>>> compat analysis, >>>>>>>>>>>>>>>> but could be greatly informed by the experience of having some >>>>>>>>>>>>>>>> top-level >>>>>>>>>>>>>>>> sites opt-out of unload for their frame tree. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> We're not requesting permission to stop firing at this >>>>>>>>>>>>>>> point. It is the far-away end-point. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Any plan to trigger a deprecation warning / report for the >>>>>>>>>>>>>>>> installation of unload handlers? It might be tricky to find a >>>>>>>>>>>>>>>> good balance >>>>>>>>>>>>>>>> of useful warnings without being too spammy. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Permission policy will do this as is with a console warning >>>>>>>>>>>>>>> and Reporting-API if you attempt to install a handler that is >>>>>>>>>>>>>>> disallowed by >>>>>>>>>>>>>>> policy. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> A couple more questions / comments inline: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Mon, May 8, 2023 at 7:43 AM Fergal Daly < >>>>>>>>>>>>>>>> fer...@chromium.org> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Contact emails >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> fer...@chromium.org, kenji...@chromium.org >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Explainer >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> https://github.com/fergald/docs/blob/master/explainers/permissions-policy-deprecate-unload.md >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Specification >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> https://github.com/whatwg/html/pull/7915 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> This is still marked as draft. Can you get this ready for >>>>>>>>>>>>>>>> review? If it's blocked only on having a 2nd implementor show >>>>>>>>>>>>>>>> support, then >>>>>>>>>>>>>>>> I'd be fine shipping based on a PR. But we should at least do >>>>>>>>>>>>>>>> what we can >>>>>>>>>>>>>>>> to solicit feedback on the spec change prior to shipping. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yes. There's nothing in the spec change that isn't in the >>>>>>>>>>>>>>> requests for positions but since neither of those are >>>>>>>>>>>>>>> supportive yet, I >>>>>>>>>>>>>>> have not asked for review of the PR. I'm hopeful that once we >>>>>>>>>>>>>>> have data on >>>>>>>>>>>>>>> use on unload in subframe navigations as discussed here >>>>>>>>>>>>>>> <https://github.com/mozilla/standards-positions/issues/691#issuecomment-1484997320> >>>>>>>>>>>>>>> that >>>>>>>>>>>>>>> Mozilla will be supportive. Those metrics are in 113 but based >>>>>>>>>>>>>>> on the data >>>>>>>>>>>>>>> from beta, we need to change how we record them. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Summary >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> A Permission-Policy for creating unload event listeners >>>>>>>>>>>>>>>>> will be added. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Initially, the default policy will be set to allow. From >>>>>>>>>>>>>>>>> there, Chrome will gradually migrate the default policy to >>>>>>>>>>>>>>>>> deny (i.e. increasingly disallow the creation of unload >>>>>>>>>>>>>>>>> event listeners, eventually reaching a state where deny >>>>>>>>>>>>>>>>> fully becomes the default policy). The ultimate goal is >>>>>>>>>>>>>>>>> to remove support for unload event. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Blink component >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Blink>PermissionsAPI >>>>>>>>>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EPermissionsAPI> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Motivation >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The unload event is extremely unreliable. It is ignored in >>>>>>>>>>>>>>>>> most cases by all mobile browsers except Firefox on Android. >>>>>>>>>>>>>>>>> Furthermore, >>>>>>>>>>>>>>>>> in Safari, the unload event is ignored on both desktop & >>>>>>>>>>>>>>>>> mobile platforms. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> In the current state, unload is a major BFCache blocker >>>>>>>>>>>>>>>>> (~18 percentage points reduction of hit rate for Chrome). >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The change will unlock a large fraction of that hit-rate >>>>>>>>>>>>>>>>> while providing an opt-out for those who need more time to >>>>>>>>>>>>>>>>> migrate. It also >>>>>>>>>>>>>>>>> sends a clear signal that unload should not be used in new >>>>>>>>>>>>>>>>> development. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Sidenote: the spec was changed to say that unload should >>>>>>>>>>>>>>>>> only run if the page cannot enter BFCache, which reflects >>>>>>>>>>>>>>>>> Safari’s >>>>>>>>>>>>>>>>> behavior, However neither Chrome nor Mozilla have implemented >>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>> behavior. In Chrome's case, we believe that this would >>>>>>>>>>>>>>>>> suddenly break >>>>>>>>>>>>>>>>> various sites and would make it hard for developers to know >>>>>>>>>>>>>>>>> if/when unload >>>>>>>>>>>>>>>>> may run. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Initial public proposal >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> None >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> TAG review >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> https://github.com/w3ctag/design-reviews/issues/738 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> TAG review status >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Pending >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Risks >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Interoperability and Compatibility >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> If no other browsers implement this, there is a risk that >>>>>>>>>>>>>>>>> devs continue to use unload widely and pages malfunction on >>>>>>>>>>>>>>>>> chrome. However >>>>>>>>>>>>>>>>> given that alternatives to unload exist it seems entirely >>>>>>>>>>>>>>>>> possible for >>>>>>>>>>>>>>>>> sites that are actively maintained to move off unload. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Gecko: ( >>>>>>>>>>>>>>>>> https://github.com/mozilla/standards-positions/issues/691#issuecomment-1484997320) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> It's possible that pages are depending on `unload` handlers >>>>>>>>>>>>>>>>> in subframes >>>>>>>>>>>>>>>>> for functionality even without any main frame navigation. We >>>>>>>>>>>>>>>>> should try to >>>>>>>>>>>>>>>>> understand how common this is before breaking it. It should >>>>>>>>>>>>>>>>> be possible to >>>>>>>>>>>>>>>>> measure how often subframe unloads fire when the mainframe is >>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>> navigating. This will give us an upper bound on the size of >>>>>>>>>>>>>>>>> the problem, - >>>>>>>>>>>>>>>>> Chrome: we have landed code to measure the occurrence of >>>>>>>>>>>>>>>>> unload in >>>>>>>>>>>>>>>>> different scenarios. We will report back the findings. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> WebKit: >>>>>>>>>>>>>>>>> https://github.com/WebKit/standards-positions/issues/127 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> From a quick skim, it sounds like WebKit is already happy >>>>>>>>>>>>>>>> with their tradeoff of not firing unload and doesn't see a >>>>>>>>>>>>>>>> need for an API >>>>>>>>>>>>>>>> that reduces unload further, is that about right? WebKit has >>>>>>>>>>>>>>>> mostly shipped >>>>>>>>>>>>>>>> heuristics here without trying to spec them first, right? In >>>>>>>>>>>>>>>> general I'm >>>>>>>>>>>>>>>> not too concerned >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yes, there's no great upside for them. I believe the >>>>>>>>>>>>>>> situation as specced where unload is unpredictable and likely >>>>>>>>>>>>>>> biased is bad >>>>>>>>>>>>>>> for devs and is probably skewing data collected via WebKit (and >>>>>>>>>>>>>>> Chrome/Mozilla mobile) but nobody is complaining. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I believe there was support expressed offline for the >>>>>>>>>>>>>>> prospect of killing off unload. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Web developers: Positive ( >>>>>>>>>>>>>>>>> https://groups.google.com/a/chromium.org/g/bfcache-dev/c/zTIMx7u4uxo/m/-M4IS6LDBgAJ) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The web communities we reached out had positive reactions to >>>>>>>>>>>>>>>>> our proposal >>>>>>>>>>>>>>>>> and we have not heard about any concrete blockers. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Other signals: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 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? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On WebView, we will introduce the Permissions-Policy but >>>>>>>>>>>>>>>>> not move the default to "deny". BFCache does not work on >>>>>>>>>>>>>>>>> WebView, so the >>>>>>>>>>>>>>>>> benefit is lower. Meanwhile the risk seems higher as we have >>>>>>>>>>>>>>>>> far less >>>>>>>>>>>>>>>>> visibility into the HTML being run in WebViews. A roll-out to >>>>>>>>>>>>>>>>> WebView >>>>>>>>>>>>>>>>> should be done independently and in consultation with the >>>>>>>>>>>>>>>>> WebView team. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Sounds like the right strategy to me, thanks! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Debuggability >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> None >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>>>>>>>>>>> ? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Yes >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Flag name >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> None >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Please put the new policy behind a RuntimeEnabledFeature >>>>>>>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/RuntimeEnabledFeatures.md>. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> It's effectively a new API so is required >>>>>>>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/flag_guarding_guidelines.md#When-is-a-flag-required> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> to have a finch killswitch. It sounds to me like it should be >>>>>>>>>>>>>>>> unlikely that >>>>>>>>>>>>>>>> simply adding the new policy could break things, but maybe >>>>>>>>>>>>>>>> some scenario is >>>>>>>>>>>>>>>> possible where we decide breakage in 3p iframes is bad enough >>>>>>>>>>>>>>>> to warrant an >>>>>>>>>>>>>>>> emergency fix? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yes, there will be a flag, maybe more than one. The >>>>>>>>>>>>>>> implementation details of rolling this out gradually have not >>>>>>>>>>>>>>> been worked >>>>>>>>>>>>>>> out. See below. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Requires code in //chrome? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> False >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Estimated milestones >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> M115 for availability of Permissions-Policy >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> M115 is the earliest we would start to disable unload, >>>>>>>>>>>>>>>>> however >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Is this a typo? Or are you considering disabling the event >>>>>>>>>>>>>>>> in the same release we first make the permissions policy >>>>>>>>>>>>>>>> available? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The plan is to make the PP available with a default of >>>>>>>>>>>>>>> enabled and then gradually flip the default to disabled. The >>>>>>>>>>>>>>> details are >>>>>>>>>>>>>>> here >>>>>>>>>>>>>>> <https://github.com/fergald/docs/blob/master/explainers/permissions-policy-deprecate-unload.md#logistics-of-deprecation>. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> It's not particularly nice. We have the option to just stop >>>>>>>>>>>>>>> 100% but that >>>>>>>>>>>>>>> seems fairly disruptive, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> F >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> https://chromestatus.com/feature/5579556305502208 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> 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 on the web visit >>>>>>>>>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLm7CR6EeL2KmBFyFpYT%3DNPXmTg4roLKV%3D7dRcCE%2BOoGwg%40mail.gmail.com >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLm7CR6EeL2KmBFyFpYT%3DNPXmTg4roLKV%3D7dRcCE%2BOoGwg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>>>>>>>>>>>>> . >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Kenji BAHEUX (my how-to <http://balance/kenjibaheux>) >>>>>>>>>>> Product Manager - Chrome >>>>>>>>>>> Google Japan >>>>>>>>>>> >>>>>>>>>> -- 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/32437ced-5f16-4448-b0d8-ffab8aeb9044n%40chromium.org.