Chair: Yoav Weiss
Scribe: Charlie Vazac
Participants: Ryosuke Niwa, Nic Jansma, Charlie Vazac, Tim Dresser, Nicolás Peña, Panagiotis Astithas
Start by setting up next call - Next meeting is October 2nd, 11a PST
New charter announced today, we need to rejoin the wg.
Talk to your AC rep, AC rep needs to click thru the rejoining process.
Resource Timing
- https://github.com/w3c/resource-timing/pull/163
- Theoretical potential for loss of entries versus more complex processing model
- In PR, Yoav specified fixed size of secondary buffer, meaning we might end up dropping entries on the table
- Webkit model will not drop entries, but it’s more complex
- Amount of entries is unbound between buffer full event and ultimate clearing or increasing of the buffer size
- Ryosuke points out that it’s no different in MO, IntersectionObsever - unlimited entries
- Yoav points out that, with this pattern, the buffer could overflow to infinity
- Yoav argues that the processing model of Webkit is significantly more complex than what’s specified in the spec
- Yoav points out that this is a edge-case
- Ryosuke wants a way to ensure that developer will not miss any entries
- Yoav says that there is a bug in the spec today means we’ll always drop at least one entry
- Tim D. asked what is concern with complexity
- Yoav is concerned about spec and impl. Complexity
- Ryosuke says that current spec is un-implementable
- Yoav: do we want a simpler model with losing entries, or more complex one that doesn’t lose entries
- Tim D. should we see what the complex version of the spec would look like to see how bad it is?
- Yoav agrees to do this work in next few weeks - ACTION ITEM
- Panagiotis does not have feedback on this - will not be at TPAC, likely no webperf folks will be there
- Tim D. points out that Harald said Moz. reps might be there
- Untriaged issues
- https://github.com/w3c/resource-timing/issues/164
- Devtools shows “queuing” and “stalled” for some requests, but we don’t show it in RT
- Those values are included in duration, so they are inferable
- This is mostly for h1, not h2
- Yoav - I’m not sure this is something we want to expose, and this would be most effective on h1 stacks, as there’s no queuing related to TCP connects in most impls. of h2, they are only queued in h1 when there are no connections available
- Nic - is this just about tcp queuing time? Yoav - yes
- Steve Souders posted a few years back that the RT chunks are not additive to duration
- Nic - we see gaps between the chunks in RT data in the wild, browser quirks, stalls, boomerang does not expect the chunks to add up to duration
- Nic - we don’t try to account for ALL the time
- Nic - with cross origin resources, there is a gap in the data _somewhere_
- Yoav - because there are many queuing times, exposing them all night be messy, Nic agrees
- Yoav - and we can’t expose queuing time for cross origin resources without TAO
- Nic to comment in github issue ACTION ITEM
- Nic - without queuing/blocking time, we don’t know if it was network time, or time spent waiting for the network (queuing)
- Ryosuke - we might need a clearer definition of queuing
- Ryosuke - for the screenshots between the browsers, blocking and queuing might not mean the same thing
- Ryosuke - time spent waiting for server should be after connect start
- Nic - boomerang calculates blocking time as connect-end to request-start
- Ryosuke - what else would you get from queuing / blocking?
- Nic - if you don’t have TAO, you can’t know if the time was spent waiting for connection, or waiting on network
- Yoav - you shouldn’t/can’t know, security impl.
- Yoav - what the OP is trying to accomplish is available with arithmetic, does he/she need something else?
- Yoav - this is probably not something we want to pursue, unless we are missing something else
- Resolution: Nic to comment in thread, check if our understanding matches, see if the arithmetic approach suits his/her needs
- https://github.com/w3c/resource-timing/issues/161 (from Nicolás - @npm1)
- Yoav - in chromiums impl, fetch is observed, so it can’t be terminated early ??
- Nic - is this a fetch spec or RT spec issue?
- Yoav - either in RT or in fetch, we need to say “shouldn’t be observable”
- Yoav - but why can’t a fetch be terminated early because of RT?
- Yoav - [quotes relevant fetch spec bits]
- Ryosuke - oh, this is a gc thing
- Ryosuke - making RT observable makes gc observable
- Yoav/Ryosuke - we don’t want to do that
- Yoav - from the notes, RT shouldn’t be observable thru script
- Ryosuke - explains how one could observe gc thru RT
- Yoav - points out that the fetch spec defines “observability” as something thru fetch c’tor/options, this doesn’t apply to RT
- Ryosuke - we need to file issue in fetch
- Yoav - this applies to PO and perf timeline
- Ryosuke - does this mean sw can observe the same? Yoav - yes
- Action Item - Ryosuke to open issue on fetch to better clarify what is observable / observing, and to exclude RT and maybe service-workers as well
- Ryosuke - normative text is not what we want here
- Yoav - is this a blocker for L2? Ryosuke - no, just a spec bug
- https://github.com/w3c/resource-timing/issues/160 (from Nicolás - @npm1)
- Yoav - this is for h2 connection coalescing
- Nic - so dns-start should be earlier? Yoav - yes, non-zero
- Yoav - browser has to know if we resolve to same host, to see if we can coalesce, we aren’t reporting that time
- Yoav - this should be blocking L3
- Ryosuke - this is common enough, deserves non-normative text, tests for this would be tough
- Yoav - wpt’s have a new server that might make h2 testing possible
- Ryosuke - but dns lookups might not be observable
- Yoav - maybe just did dns happen or did it not happen
- Yoav - we definitely need more clarification, this could end up as a manual test
- Ryosuke - to do this right, wpt would need to implement a name server
- Yoav - dns is measurable when it’s not zero
- Ryosuke - but you can’t run it a second time! Name server might be caching things, is this truly a blocker for getting L2 out?
- Ryosuke - maybe because of the testabiilty issue, we shouldn’t consider this a blocker
- Yoav - we need to fix spec language, as a note, try to make it testable
- Ryosuke - there is no easy way to automate this testing Yoav - I agree
- Conclusion - spec change is blocking, test work is not - ACTION ITEM
- Yoav - clearing DNS cache is not cross-platform process
Preload
(Yoav - we have 14 open issues, let’s do them all in 7 minutes! jk)
- Issue 127 - https://github.com/w3c/preload/issues/127
- TLDR: SRI is not read/honored when it comes to preload requests
- Yoav - the browser doesn’t keep around buffers that it needs to calculate integrity of resources, this is in chromium impl
- Ryosuke - is this just impl issue?
- Yoav / Ryosuke back and forth about chromium impl.
- Yoav - ultimate problem is that a script would be downloaded and parsed, even if it wouldn’t have passed SRI ??
- Yoav - chromium folks from Japan said fixing this in (some way) would take months and months, recommendation is to included integrity on the LINK node
- Ryosuke - what if integrity is not specified?
- Yoav - then you get the double-download. The script or style will be the second one, because browser can’t know if integrity of preloaded resource is ok
- Yoav - double download doesn’t mean it will hit the network twice, http cache
- Yoav - we don’t know what webkit does - Ryosuke - we don’t have this issue in webkit
- Ryosuke - maybe we should allow a MAY, such that they can download again
- Ryosuke - is ok with asking for integrity being specified on the LINK