Performance Chat Summary: 9 May 2023

<div style&equals;"text-align&colon;center"><&sol;div><div>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;core&sol;2023&sol;05&sol;09&sol;performance-chat-agenda-09-may-2023&sol;">Meeting agenda here<&sol;a> and the full chat log is available <a href&equals;"https&colon;&sol;&sol;wordpress&period;slack&period;com&sol;archives&sol;C02KGN5K076&sol;p1683644466202769">beginning here on Slack<&sol;a>&period;<&sol;p>&NewLine;<h2 class&equals;"wp-block-heading">Announcements<&sol;h2>&NewLine;<ul>&NewLine;<li>n&sol;a<&sol;li>&NewLine;<&sol;ul>&NewLine;<h2 class&equals;"wp-block-heading" id&equals;"focus-group-updates">Priority Projects<&sol;h2>&NewLine;<h3 class&equals;"wp-block-heading" id&equals;"images">Server Response Time<&sol;h3>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;performance&sol;roadmap-2023&sol;&num;category-server-response-time">Link to roadmap projects<&sol;a><&sol;p>&NewLine;<p>Contributors&colon; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;aristath&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>aristath<&sol;a><&sol;p>&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> has a number of PRs that are nearly ready to commit&colon;&NewLine;<ul>&NewLine;<li><a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4128" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4128<&sol;a><&sol;li>&NewLine;<li><a rel&equals;"noreferrer noopener" aria-describedby&equals;"qtip-27" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4382" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4382<&sol;a><&sol;li>&NewLine;<li><a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4417" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4417<&sol;a><&sol;li>&NewLine;<li><a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4412" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4412<&sol;a><&sol;li>&NewLine;<li><a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4411" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4411<&sol;a><&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> I’m waiting on some final feedback&comma; but am close to being able to share the results of the performance research I finished up a few weeks ago&period; The highlights from that research are that there may be some good opportunities to look into the way template rendering is being handled in both classic and block themes&comma; and also some bottlenecks I observed with translations in classic themes&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;swissspidy&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>swissspidy<&sol;a> Curious about the translations part and how it only affects classic themes<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> Same&excl; I noticed a very large difference between the two architectures&period; Not sure why that is happening&comma; so it would be really useful to look into&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> This is a follow on from get&lowbar;pages -> get&lowbar;posts <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4386" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4386<&sol;a> – Add filter to allow developers to change params to WP&lowbar;Query&comma; an ask from ployglot<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> I opened this as well <a href&equals;"https&colon;&sol;&sol;core&period;trac&period;wordpress&period;org&sol;changeset&sol;58277">&lbrack;58277&rsqb;<&sol;a> TLDR&comma; saves around 600&plus; calls to wp&lowbar;cache&lowbar;get that are not needed&NewLine;<ul>&NewLine;<li>Numbers are very very promising in blackfire but not as much in benchmarks&comma; still working this out<&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3 class&equals;"wp-block-heading" id&equals;"images">Database Optimization<&sol;h3>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;performance&sol;roadmap-2023&sol;&num;category-database-optimization">Link to roadmap projects<&sol;a><&sol;p>&NewLine;<p>Contributors&colon; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;aristath&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>aristath<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;olliejones&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>olliejones<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;rjasdfiii&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>rjasdfiii<&sol;a><&sol;p>&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> updates above<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;olliejones&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>olliejones<&sol;a> I’ve been working on object cache instrumentation&comma; no big results to report<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> There a project afoot to add a spec for getting object cache information <a href&equals;"https&colon;&sol;&sol;github&period;com&sol;rhubarbgroup&sol;wp-object-cache-info-spec">https&colon;&sol;&sol;github&period;com&sol;rhubarbgroup&sol;wp-object-cache-info-spec<&sol;a>&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;olliejones&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>olliejones<&sol;a> A new revision of this is coming soon&comma; from me<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> Basically add a <code>wp&lowbar;cache&lowbar;info<&sol;code> function to core and allow WP CLI&comma; query monitor and other tools to understand the cache implementation<&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3 class&equals;"wp-block-heading" id&equals;"object-caching">JavaScript &&num;038&semi; CSS<&sol;h3>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;performance&sol;roadmap-2023&sol;&num;category-javascript-css">Link to roadmap project<&sol;a><&sol;p>&NewLine;<p>Contributors&colon; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;mukesh27&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>mukesh27<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;10upsimon&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>10upsimon<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;adamsilverstein&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>adamsilverstein<&sol;a><&sol;p>&NewLine;<ul>&NewLine;<li>One agenda item here today Discussion this week on CSP&sol;async concerns in <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4391" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4391<&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> I left some more <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4391&num;issuecomment-1536869109" target&equals;"&lowbar;blank">feedback<&sol;a> related to compatibility with Content-Security-Policy and the deferred inline scripts&colon; the current implementation has a vulnerability related to CSP nonces&comma; and it also blocks Strict CSP by requiring <code>’unsafe-hashes’<&sol;code> due to the <code>onload<&sol;code> attribute&period; I provided recommendations for how to address these issues and have been <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;wordpress-develop&sol;pull&sol;4391&num;issuecomment-1538572942" target&equals;"&lowbar;blank">discussing<&sol;a> with <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> One of my questions about the CSP concerns you raised&comma; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> is whether this whole class of problem would be eliminated if we were to change the way we are approaching <code>async<&sol;code> dependencies&comma; or if the problem exists with <code>defer<&sol;code> as well&quest; For example&comma; if we weren’t concerned about maintaining loading order &lpar;because with <code>async<&sol;code> it shouldn’t matter if the scripts are well constructed&rpar; then we wouldn’t need to control loading inline scripts so they run after their dependencies&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> Yes&comma; the problem with CSP nonces exists for deferred inline scripts for <code>defer<&sol;code> scripts as well<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> Ok&comma; so I’ll need to double check whether it still makes sense for us to control the loading order there&comma; and if so&comma; then work on implementing one of your suggestions&period; Your explanation and research here has been really valuable&comma; so thank you&excl;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> If we eliminate special support for deferred inline <code>after<&sol;code> scripts for <code>async<&sol;code> scripts&comma; then we can get rid of the <code>onload<&sol;code> attribute and just use <code>addEventListener&lpar;'load'&rpar;<&sol;code> in an <code>after<&sol;code> script&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> Being unfamiliar with &OpenCurlyDoubleQuote;it also blocks Strict CSP by requiring <code>’unsafe-hashes’<&sol;code> due to the <code>onload<&sol;code> attribute” can you elaborate or share a link with how the <code>onload<&sol;code> attribute causes a problem there&quest;”<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> sure&comma; CSP’s security model relies on nonces and hashes&period; For nonces&comma; all <code>script<&sol;code> elements on a page should have a <code>nonce<&sol;code> attribute which matches a <code>nonce<&sol;code> value passed in the <code>Content-Security-Policy<&sol;code> response header&period; However&comma; such nonces are not possible to be attached to event handler attributes&comma; like <code>onload<&sol;code><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> Your suggestion with <code>addEventListener&lpar;'load'&rpar;<&sol;code> is problematic if it is wrapped around the inline script because it changes the scope of the code within&period; This was ruled out as an option early on in the design of this API because of that<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> Actually not quite because the callback passed to <code>addEventListener&lpar;'load'&rpar;<&sol;code> still just calls <code>wpLoadAfterScripts&lpar;handle&rpar;<&sol;code> In the same way that <code>onload&equals;"wpLoadAfterScripts&lpar;handle&rpar;"<&sol;code> is now<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> Ah&comma; so you mean WP core would handle that event listener on its own&quest;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> It’s just that this change is not compatible with <code>async<&sol;code> scripts&comma; but it does work for <code>defer<&sol;code> scripts<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> That is the part I don’t understand&comma; why wouldn’t that work for <code>async<&sol;code> whereas <code>onload<&sol;code> would&quest;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> Because <code>async<&sol;code> scripts can load immediately before the rest of the document loads&period; Example&colon; <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;async-script-load-event-listener-test&period;glitch&period;me&sol;&quest;delay&equals;500" target&equals;"&lowbar;blank">https&colon;&sol;&sol;async-script-load-event-listener-test&period;glitch&period;me&sol;&quest;delay&equals;500<&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> I think the approach of the event listener is definitely preferable&comma; as <code>defer<&sol;code> is more important to holistically support at this point&comma; as it works in a simpler way with the current way core handles dependencies&NewLine;<ul>&NewLine;<li>That would mean we keep <code>defer<&sol;code> functioning like it does now&comma; but will have to &lpar;continue to&rpar; rethink <code>async<&sol;code> support&comma; which I think is okay&period; I’d also like to throw out there a consideration of potentially only launching with <code>defer<&sol;code> in the first version of this<&sol;li>&NewLine;<li>That would give us time to decouple the <code>async<&sol;code> exploration<&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> Apart from getting into the weeds about how to best address the CSP issue&comma; I do think it’s worth a broader discussion about whether our current approach to <code>async<&sol;code> scripts is too conservative &lpar;mostly to try and help developers avoid loading errors with dependencies&rpar;&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> I think the concerns we based the current implementation from are valid&comma; but maybe a bit heavy handed&comma; so I’m open to us being less concerned with load order concerns if everyone is agreed&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> <&sol;li>&NewLine;<li>My impression is that <code>async<&sol;code> scripts are currently quite rare compared to <code>defer<&sol;code> scripts&period; It’s even rarer that <code>async<&sol;code> scripts would depend on each other&period; But in the cases where they do have dependencies &lpar;e&period;g&period; AMP&rpar; then the loading order is handled in the scripts themselves&comma; and not by source order in the page&period; Other cases of async scripts having dependencies&comma; e&period;g&period; Google Analytics&comma; it’s also handled by the library and loading order doesn’t matter<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> My concern with loosening that is around developer education&period; We would need to be very clear on what applying <code>async<&sol;code> to a script implies&period; Core would handle <code>defer<&sol;code> to always work &lpar;make it blocking if needed&rpar;&comma; but for <code>async<&sol;code> it would indeed be on the plugin &sol; theme developer if we loosen the current limits<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> I think that it would be a reasonable position to take&comma; that if you are registering a script that is <code>async<&sol;code> or depends on an <code>async<&sol;code> script&comma; then it is your responsibility to manage the load order concerns&period; But agree that dev ed would be important<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;spacedmonkey&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>spacedmonkey<&sol;a> FYI&comma; gutenberg will likely needed deferred scripts for Interactivity API runtime &lpar; I guess is part of co-op editting &rpar;&period; See <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;gutenberg&sol;pull&sol;49994" target&equals;"&lowbar;blank">https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;gutenberg&sol;pull&sol;49994<&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> Fortunately&comma; there are ample educational materials out there for how <code>async<&sol;code> behaves&period; And devs should only use it if they know what they are doing&period;&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> That’s what concerns me <&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> Yep&excl; But as this would be somewhat new for WP script enqueueing&comma; we should support that with some WP-focused documentation as well&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> Unless someone feel strongly that we should NOT make this the responsibility of the developer&comma; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;10upsimon&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>10upsimon<&sol;a> and I can work on updating the current approach to allow for a less strict implementation&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> I think this still deserves more discussion&comma; also with the other now additional consideration that inline scripts would also be responsibility of the developer<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;westonruter&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>westonruter<&sol;a> What’s certain is that while we would promote <code>defer<&sol;code>&comma; we would need to be very clear in the docs that <code>async<&sol;code> order is not predictable&period; So while <code>defer<&sol;code> can often be applied to all scripts&comma; this is definitely not the case for <code>async<&sol;code>&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> Happy to make it a future agenda item here&period; We’ll also be looking for feedback when we post on make core about the feature and can address it there as well&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> But more importantly&comma; what about decoupling this discussion&quest; I suggested that above&colon; I think we’re all pretty clear what should happen with <code>defer<&sol;code>&comma; but we need to discuss <code>async<&sol;code> more&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> agreed<&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> Why not remove all <code>async<&sol;code> support from the current PR and keep that for an iteration&quest; This allows us to iterate on what is already clear&comma; and gives us time to approach the other problem separately<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> I think we should save that option for if we can’t come to resolution in the next few weeks&period;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> That’s fair&comma; though I want to make sure we don’t come to early conclusions and eagerly update the PR with something that is then still being discussed<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> It’s clear that we’re basically &OpenCurlyDoubleQuote;going back to the drawing board” with <code>async<&sol;code>&period; So one could argue that topic is not yet ready for engineering&period; Having that discussion and providing related comments on the PR makes it more difficult for the folks working on the code to focus on the improvements to the PR that are clear&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> I disagree that we’re going back to the drawing board&comma; but am happy to pick this up async so we can move on with this conversation<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> We are changing the design of how <code>async<&sol;code> support works from how it was designed&comma; that’s what I mean by that&period; Which of course is not a bad thing&comma; but we’re not ready to write code for that because of it still being discussed<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> Yeah&comma; but it seems like a rather small change that will result in reducing the logic we’ve implemented&comma; not adding a lot more&comma; so I’m not all that concerned as long as we get consensus on the correct approach&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;clarkeemily&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>clarkeemily<&sol;a> I’d like to suggest picking this up async&comma; perhaps on the GitHub issue&quest; We can also add an agenda item to revisit this time next week too if no conclusion is drawn on the GH issue&quest; We have a few more project updates to go through&comma; so we can circle back async<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3 class&equals;"wp-block-heading" id&equals;"measurement">Images<&sol;h3>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;performance&sol;roadmap-2023&sol;&num;category-images">Link to roadmap projects<&sol;a><&sol;p>&NewLine;<p>Contributors&colon; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;thekt12&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>thekt12<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;adamsilverstein&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>adamsilverstein<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a><&sol;p>&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> Just a quick reminder that the Fetchpriority standalone plugin was published on Friday&comma; the Fetchpriority standalone plugin was approved for <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;wordpress&period;org&sol;" target&equals;"&lowbar;blank">wordpress&period;org<&sol;a>&period; Since we already have the infrastructure for it set up in <code>WordPress&sol;performance<&sol;code>&comma; and since we’ve already established that it works with the WebP Uploads standalone plugin&comma; I’m going to go ahead and publish a first version now&period; Will share progress here<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3 class&equals;"wp-block-heading" id&equals;"javascript">Measurement<&sol;h3>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;performance&sol;roadmap-2023&sol;&num;category-measurement">Link to roadmap projects<&sol;a><&sol;p>&NewLine;<p>Contributors&colon; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;adamsilverstein&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>adamsilverstein<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;olliejones&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>olliejones<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;mukesh27&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>mukesh27<&sol;a><&sol;p>&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joemcgill&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joemcgill<&sol;a> I plan to open a few tickets for some enhancements we’d like to make to the automated performance tooling we added to core during the 6&period;2 milestone&comma; but no immediate work happening there&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3 class&equals;"wp-block-heading">Ecosystem Tools<&sol;h3>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;performance&sol;roadmap-2023&sol;&num;category-ecosystem-tools">Link to roadmap projects<&sol;a><&sol;p>&NewLine;<p>Contributors&colon; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;joegrainger&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>joegrainger<&sol;a><&sol;p>&NewLine;<ul>&NewLine;<li>&commat;joegrainer I have been away the past week so not much to update here from me but I will be working through the issues raised in the Plugin Checker Milestone 1 Review&sol;QA&period; We have made some progress and closed a few of these out already&period; You can follow all progress on the <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;10up&sol;plugin-check&sol;" target&equals;"&lowbar;blank">GitHub repo<&sol;a> here&period; Thanks&excl;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3 class&equals;"wp-block-heading" id&equals;"infrastructure">Creating Standalone Plugins<&sol;h3>&NewLine;<p><a href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;performance&sol;issues&sol;656">Link to GitHub overview issue<&sol;a><&sol;p>&NewLine;<p>Contributors&colon; <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;mukesh27&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>mukesh27<&sol;a> <a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;10upsimon&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>10upsimon<&sol;a><&sol;p>&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;flixos90&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>flixos90<&sol;a> Just the above&comma; <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;wordpress&period;org&sol;plugins&sol;fetchpriority&sol;" target&equals;"&lowbar;blank">Fetchpriority<&sol;a> was published&comma; and following that I submitted Dominant Color Images for plugin review &lpar;which is expected to take 25&plus; days&comma; so we’ll have some time to wait&rpar;<&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;mukesh27&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>mukesh27<&sol;a> The PR <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;performance&sol;pull&sol;710" target&equals;"&lowbar;blank">Use dynamic version from <&sol;a><code>plugins&period;json<&sol;code><a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;github&period;com&sol;WordPress&sol;performance&sol;pull&sol;710" target&equals;"&lowbar;blank"> for manual workflow &num;710<&sol;a> ready for review<&sol;li>&NewLine;<&sol;ul>&NewLine;<h1 class&equals;"wp-block-heading">Open Floor<&sol;h1>&NewLine;<ul>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;profiles&period;wordpress&period;org&sol;thelovekesh&sol;" class&equals;"mention"><span class&equals;"mentions-prefix">&commat;<&sol;span>thelovekesh<&sol;a> Since the performance plugin is expanding in terms of the number of classes&comma; functions&comma; and hooks it contains&comma; I believe it would be great to start documenting things so that plugin and theme developers may use them&period; We can start using the phpdoc-parser to automatically create the necessary documentation from code comments when a release is made and the same can be deployed to the GitHub pages site&lpar;<a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;wordpress&period;github&period;io&sol;performance&sol;" target&equals;"&lowbar;blank">https&colon;&sol;&sol;wordpress&period;github&period;io&sol;performance&sol;<&sol;a>&rpar; or to <a rel&equals;"noreferrer noopener" href&equals;"https&colon;&sol;&sol;wordpress&period;org&sol;" target&equals;"&lowbar;blank">WordPress&period;org<&sol;a>&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<p><strong>Our next chat will be held on <a href&equals;"https&colon;&sol;&sol;www&period;timeanddate&period;com&sol;worldclock&sol;fixedtime&period;html&quest;iso&equals;20230516T1500"><abbr class&equals;"date" title&equals;"2023-05-16T15&colon;00&colon;00&plus;00&colon;00">Tuesday&comma; May 16&comma; 2023 at 15&colon;00 UTC<&sol;abbr><&sol;a> in the <a href&equals;"https&colon;&sol;&sol;wordpress&period;slack&period;com&sol;messages&sol;core-performance&sol;">&num;core-performance channel<&sol;a> in <a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;chat&sol;">Slack<&sol;a>&period;<&sol;strong><&sol;p>&NewLine;<p class&equals;"o2-appended-tags"><a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;core&sol;tag&sol;core-performance&sol;" class&equals;"tag"><span class&equals;"tag-prefix">&num;<&sol;span>core-performance<&sol;a>&comma; <a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;core&sol;tag&sol;performance&sol;" class&equals;"tag"><span class&equals;"tag-prefix">&num;<&sol;span>performance<&sol;a>&comma; <a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;core&sol;tag&sol;performance-chat&sol;" class&equals;"tag"><span class&equals;"tag-prefix">&num;<&sol;span>performance-chat<&sol;a>&comma; <a href&equals;"https&colon;&sol;&sol;make&period;wordpress&period;org&sol;core&sol;tag&sol;summary&sol;" class&equals;"tag"><span class&equals;"tag-prefix">&num;<&sol;span>summary<&sol;a><&sol;p>&NewLine;<&sol;div>&NewLine;

Sponsored
Sponsored
A WordPress Commenter

Recent Posts

Blocktober Wraps Up as Telex Inspires a Wave of WordPress Experimentation

As October winds down, so too does Blocktober, Tammie Lister’s month-long challenge to create a…

4 hours ago

WordPress Foundation and WooCommerce Join Countersuit Against WP Engine, Alleging Trademark Infringement and False Advertising

The WordPress Foundation and WooCommerce have joined Automattic and Matt Mullenweg in countersuing WP Engine,…

4 days ago

FAIR and Patchstack Joining Forces at CloudFest USA Hackathon to Build New Security Integration

The first-ever CloudFest USA Hackathon, taking place November 4 in Miami, will bring together contributors…

5 days ago

WordCamp Canada 2025 Fosters Connections Between Generations of WordPress Users

Canada’s largest gathering of WordPress enthusiasts drew a strong turnout at Carleton University last weekend,…

5 days ago

WooCommerce 10.3 Brings Cost of Goods Sold to Core, MCP Beta for AI Integrations

WooCommerce 10.3 was released this week, introducing one of the most requested features for store…

5 days ago

Devin Walker Joins Automattic as Artistic Director for Jetpack

Automattic has hired GiveWP co-founder Devin Walker as Artistic Director for Jetpack, where he will…

6 days ago