LGTM3

On Wednesday, August 21, 2024 at 9:06:12 AM UTC-7 Daniel Bratell wrote:

> LGTM2
>
> /Daniel
> On 2024-08-16 04:44, Domenic Denicola wrote:
>
> LGTM1! 
>
> Please consider updating the explainer a bit to capture where things ended 
> up, or at least adding a warning of some sort that it's a bit out of date.
>
> On Fri, Aug 16, 2024 at 12:33 AM Scott Haseley <shase...@chromium.org> 
> wrote:
>
>> On Wed, Aug 14, 2024 at 9:35 PM Domenic Denicola <dome...@chromium.org> 
>> wrote:
>>
>>> Very exciting to see this ready to ship after what sounds like a 
>>> successful experiment. A few small questions...
>>>
>>> On Sat, Aug 10, 2024 at 6:19 AM Scott Haseley <shase...@chromium.org> 
>>> wrote:
>>>
>>>> Contact emails shase...@chromium.org
>>>>
>>>> Explainer 
>>>> https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md
>>>>
>>>> https://github.com/WICG/scheduling-apis/blob/main/explainers/prioritized-task-scheduling.md#scheduleryield
>>>>
>>>> *Note*: The explainer includes parameters to yield(), but we're 
>>>> initially shipping this with only the default behavior described in the 
>>>> specification. It wasn't clear if the parameters were necessary, there was 
>>>> some concern internally over the exact behavior 
>>>> <https://github.com/WICG/scheduling-apis/issues/96>, and it 
>>>> complicates the API. They may yet prove necessary, but it's safer to roll 
>>>> this out --- handling the main use case --- and revisit later, if needed. 
>>>>
>>>> Specification 
>>>> https://wicg.github.io/scheduling-apis/#dom-scheduler-yield
>>>>
>>>> Summary 
>>>>
>>>> Provides a method for yielding control to the browser, which can be 
>>>> used to break up long tasks. Awaiting the promise returned by 
>>>> scheduler.yield() causes the current task to yield, continuing in a new 
>>>> browser task. This can be used to improve responsiveness issues caused by 
>>>> long tasks. Continuations are prioritized to mitigate performance problems 
>>>> of existing alternatives.
>>>>
>>>>
>>>> Blink component Blink>Scheduling>APIs 
>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EScheduling%3EAPIs>
>>>>
>>>> TAG review https://github.com/w3ctag/design-reviews/issues/966
>>>>
>>>> TAG review status Pending
>>>>
>>>> Chromium Trial Name SchedulerYield
>>>>
>>>> Link to origin trial feedback summary 
>>>> https://docs.google.com/document/d/1HSlhqWsamWyR9bwgtCzB2TpVW7CUm9QkyKbK0TdM0RA/edit?usp=sharing
>>>>
>>>> Origin Trial documentation link 
>>>> https://github.com/WICG/scheduling-apis/blob/main/implementation-status.md
>>>>
>>>> Risks 
>>>>
>>>>
>>>> Interoperability and Compatibility 
>>>>
>>>> This is a new feature and will not change existing event loop task 
>>>> scheduling, so the main risk is that other browsers might not implement 
>>>> the 
>>>> feature. There is an interop challenge, however, that comes with 
>>>> prioritization: we want to be specific enough to provide developers 
>>>> guarantees and interoperable implementations, but provide enough 
>>>> scheduling 
>>>> flexibility for UAs (like the HTML specification does with task 
>>>> sources/task queues), which we'll keep in mind while drafting the spec 
>>>> (see 
>>>> also https://github.com/WICG/scheduling-apis/issues/67).
>>>>
>>>>
>>>> *Gecko*: Positive (
>>>> https://github.com/mozilla/standards-positions/issues/1039) Note that 
>>>> the issue opened for yield() was folded in with the original Scheduling 
>>>> APIs proposal, as this is an enhancement to that.
>>>>
>>>> *WebKit*: No signal (
>>>> https://github.com/WebKit/standards-positions/issues/361)
>>>>
>>>> *Web developers*: Positive
>>>>
>>>> Several partners were able to improve site performance using the API 
>>>> during Origin Trial (see the Origin Trial feedback link for quotes).
>>>>
>>>> Also some tweets I found with positive sentiment:
>>>>  - https://x.com/cramforce/status/1588912606777335808
>>>>  - https://x.com/mohamedmansour/status/1752909705842933943
>>>>  - https://x.com/sebastienlorber/status/1589939130225475584
>>>>
>>>> *Other signals*:
>>>>
>>>> Ergonomics 
>>>>
>>>> The default use (inserting yield points in long tasks) should enable 
>>>> Chrome to maintain better performance (responsiveness). There is a risk of 
>>>> continuations starving other work, but there are reasonable mitigations, 
>>>> e.g. bounding total of prioritized continuations (see also 
>>>> https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md#preventing-task-starvation-by-continuations
>>>> ).
>>>>
>>>>
>>>> Activation 
>>>>
>>>> The feature would benefit from a polyfill so that tasks still yield in 
>>>> the case the feature is unavailable. The behavior can be approximated by 
>>>> awaiting `scheduler.postTask()` or wrapping `setTimeout(0)` in a promise. 
>>>> The signal inheritance bit [1], however, would need transpilation support 
>>>> to propagate the current signal across async (Promise) boundaries.
>>>>
>>>>
>>>> [1] 
>>>> https://docs.google.com/document/d/1rIOBBbkLh3w79hBrJ2IrZWmo5tzkVFc0spJHPE8iP-E/edit#heading=h.c484rp62uh2i
>>>>
>>>> Security 
>>>>
>>>>
>>>> https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md#self-review-questionnaire-security-and-privacy
>>>>  
>>>> https://wicg.github.io/scheduling-apis/#sec-security
>>>>
>>>>
>>>> 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?
>>>>
>>>> No, this is a new API.
>>>>
>>>>
>>>> Debuggability 
>>>>
>>>> This has basic new-API devtools support. We plan to work with the 
>>>> devtools team to see if we can integrate continuations into the 
>>>> performance 
>>>> panel in some way.
>>>>
>>>>
>>>> Will this feature be supported on all six Blink platforms (Windows, 
>>>> Mac, Linux, ChromeOS, Android, and Android WebView)? Yes
>>>>
>>>> Is this feature fully tested by web-platform-tests 
>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>> ? Yes 
>>>>
>>>>
>>>> https://wpt.fyi/results/scheduler/tentative/yield?label=experimental&label=master&aligned
>>>>
>>>>
>>>> DevTrial instructions 
>>>> https://github.com/WICG/scheduling-apis/blob/main/implementation-status.md
>>>>
>>>> Flag name on chrome://flags --enable-blink-features=SchedulerYield
>>>>
>>>> Finch feature name None
>>>>
>>>> Non-finch justification None
>>>>
>>>
>>> I think this should be no chrome://flags, and a Finch feature name of 
>>> SchedulerYield. (Assuming you got the default of having a base::Feature 
>>> generated from the Blink feature.
>>>
>>
>> Ah, right. I did the default thing in runtime_enabled_features, so the 
>> Finch feature name would be SchedulerYield. I think the chrome://flags 
>> thing was left over from needing to provide the flag for dev trial. Updated 
>> in chromestatus.
>>  
>>
>>>
>>>>
>>>> Requires code in //chrome? False
>>>>
>>>> Tracking bug 
>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=979020
>>>>
>>>> Measurement Usage is measured by the SchedulerYield UseCounter: 
>>>> https://chromestatus.com/metrics/feature/popularity#SchedulerYield
>>>>
>>>> Availability expectation Initially available only in Chromium browsers.
>>>>
>>>> Adoption expectation Feature is a key part of optimizing long tasks, 
>>>> which contribute to poor responsiveness: 
>>>> https://web.dev/articles/optimize-long-tasks. Several partners are 
>>>> waiting for this API as part of INP optimization efforts.
>>>>
>>>> Adoption plan There has already communication with developers in 
>>>> anticipation of this API, e.g. 
>>>> https://web.dev/articles/optimize-long-tasks. I'll work with the 
>>>> devrel team on what additional communication may be required.
>>>>
>>>> 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 129 
>>>> Origin trial desktop first 115 
>>>> Origin trial desktop last 120 
>>>> DevTrial on desktop 113 
>>>> Shipping on Android 129 
>>>> Origin trial Android first 115 
>>>> Origin trial Android last 120 
>>>> DevTrial on Android 113 
>>>> Shipping on WebView 129 
>>>> Origin trial WebView first 115 
>>>> Origin trial WebView last 120 
>>>>
>>>> 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).
>>>>
>>>> No breaking changes are expected, but enhancements may be added as we 
>>>> learn more from usage. We also may need to adjust our internal scheduling 
>>>> policies (i.e. relative ordering of task sources) depending on what we 
>>>> learn from early adopters. 
>>>>
>>>> The open issue that could potentially affect this API is the naming of 
>>>> related "yieldy" APIs: 
>>>> https://github.com/WICG/scheduling-apis/issues/95. This was raised in 
>>>> the WebKit position, specifically that scheduler.render() (future API 
>>>> enhancement) doesn't quite fit. We plan to name around scheduler.yield(), 
>>>> and are leaning towards rolling scheduler.render() in as a yield() 
>>>> parameter -- but this is still TBD.
>>>>
>>>
>>>
>>> https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md#open-questions
>>>  
>>> lists a few open questions, which could have compat impacts. I suspect that 
>>> section of the explainer just hasn't been updated. Can you confirm?
>>>
>>
>> Confirmed. The outcome of those:
>>
>> >> 1. What should the default option be, inheritance or 'user-visible' 
>> priority?
>>
>> The API inherits the originating task's priority/signal if it was 
>> scheduled with scheduler.postTask() or requestIdleCallback ("background" 
>> priority continuation).
>>
>> >> 2. Does yield({priority}) set the priority to be inherited in future 
>> calls, or is the original signal used?
>>
>> This is what I mentioned in the explainer section. We removed the 
>> parameters (for now), so this no longer applies, but we'll have to revisit 
>> this if reinstating the parameters.
>>
>> >> 3. Should the API be allowed to return a resolved promise, if it knows 
>> it won't run other work? This could be more trouble than it's worth, but 
>> maybe there's potential to cut down (scheduling) overhead.
>>
>> We didn't end up pursuing this.
>>  
>>
>>>
>>>>
>>>> Link to entry on the Chrome Platform Status 
>>>> https://chromestatus.com/feature/6266249336586240?gate=6275382550986752
>>>>
>>>> Links to previous Intent discussions Intent to Prototype: 
>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXGoJ1SBQP-ABM3%2BsDtKzUZiPoSCWqW2mLOjMrUfFBx4TomSw%40mail.gmail.com
>>>> Intent to Experiment: 
>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXGoJ1Uj8nX5HrUT86iZ83YBj%3D6GJ4jnKZKYF3tOq%3D_twN_Yg%40mail.gmail.com
>>>>
>>>>
>>>> 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+unsubscr...@chromium.org.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXGoJ3q%2BzPuSwBQ6Xp48aCP6m1kdE30Znh4wuzB_bL16UQwBg%40mail.gmail.com
>>>>  
>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXGoJ3q%2BzPuSwBQ6Xp48aCP6m1kdE30Znh4wuzB_bL16UQwBg%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 on the web visit 
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra8bbQg5X__L1%2BJbWS_yr%3Dgf7WnNHEQgBtKG%2Bf99w7ZRjA%40mail.gmail.com
>  
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra8bbQg5X__L1%2BJbWS_yr%3Dgf7WnNHEQgBtKG%2Bf99w7ZRjA%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 on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/046b5827-105c-4270-a9e6-2c80d6505f22n%40chromium.org.

Reply via email to