Thursday, April 2, 2015: Q1/Q2 OKRs
Attendees: eae, slightlyoff, benjhayden, bnutter, cbiesinger,
dsinclair, dglazkov, jchaffraixm, kojiim, nduca, skobes
Graded Q1 OKRs: https://www.chromium.org/blink/layout-team/okrs/2015q1
Q2 OKRs: https://www.chromium.org/blink/layout-team/okrs/2015q2
Q1 Evaluation
* eae presents draft document *
<eae> Let's go through our Q1 OKRs and see how we did and what we can
learn.
[ Have telemetry benchmark suite running key_silk_cases monitoring
layout times with less than 1% variation between runs ]
<eae> Variation between runs is about 3% with the new layout_avg
telemetry metric, down from about 10% for existing webkit performance
tests. Scored at 0.6.
<benjhayden> A way to reduce variance further would be to boost the
signal ratio by doing a lot more layout. Not sure if that is the right
thing to focus on. Perhaps we should focus on real world use cases
instead. This might be as good as we can get the tolerance with the
current setup.
<benjhayden> Have started rewriting metrics to expose more
information, this work will carry forward into Q2.
[ Add 3 real-world pages with lots of layout to key_silk_cases. At
least two of which are mobile oriented ]
<eae> Ben added two new, real world, tests. Score 0.7.
<benjhayden> Perhaps we could add more polymer tests?
<eae> The Polymer Topeka tests is great as it is representative of a
real world app. Adding more like that could be useful but for now
we're pretty good.
[ Speed up some key_silk_cases tests ]
<eae> We speed up a couple of webkit performance tests by over 10%,
most notably chapter-reflow and line-layout. We didn't manage to speed
up layout in any of the key_silk_cases tests though. Score 0.0.
<jchaffraix> No one owned the task, no one felt responsible and that
might be way.
<benjhayden> layout is already pretty fast
<dsinclair> need to pick specific tests and have actionable goals
<jchaffraix> lets talk about that for Q2 goals
[ Create a Measure API prototype and write-up of lessons learned ]
<eae> We split this into text and element measure and have write-ups
for both. Score 1.0.
<jchaffraix> We probably scoped this too narrowly and achieved a 1.0.
Should we have been a bit more ambitious?
<cbiesinger> Could you add links to the write-up doc(s)?
<julien> Will do.
Note: Linked from graded Q1 OKR document;
https://www.chromium.org/blink/layout-team/okrs/2015q1
[ Support natural layout animations (subpixel layout during animation) ]
<eae> Work was abandoned and depriotitized. Score 0.0.
<jchaffraix> Could you add some background as tho why it was
depriotitized?
<eae> Sure. It didn't seem worthwhile without perf guarantees from
something like layout boundaries. Focused on work to improve line
layout performance instead.
[ Finish root layer scrolling ]
<eae> Steve made great progress here but didn't quite get to finish it
at all. Score 0.5
<skobes> Somethings worked, others didn't... Need another quarter to
finish.
[ Move line layout to LayoutUnit ]
<dsinclair> We're getting close, but haven't made the switch yet. We
still need to look through all the test changes on Windows and see if
there are problems or if we just need to rebaseline. Score 0.7.
<eae> What about the performance problems Stefan found? Do we think it
mostly from the convenience wrappers used to make the transition?
<dsincliar> Not sure, Stefan has been focusing on that. I've been
putting out other fires.
<eae> Will follow up with Stefan (szager).
[ Triage all clusterfuzz asserts and fix 50% of them ]
<cbiesinger> We didn't do a very good job on scoping, the goal was too
ambitious. Score 0.2
<cbiesinger> I switched focus to flexbox work half way through the
quarter. Doing both in parallel might have been better.
[ Have bugs automatically filed for new clusterfuzz asserts ]
<cbiesinger> Auto-filing doesn't make sense without triaging. Score 0.0
<cbiesinger> All work is done, just needs to flip a switch.
[ Render tree modifications during layout ]
<dsinclair> Looked at list markers specifically this quarter. Fixed
all of the crashers just ran into one issue where moving a renderer
further down tree causes issues. Score 0.7
<dsinclair> Think I know the way forward, just need to do it. List
marker work is close to done.
<dsinclair> There are other parts that we haven't started looking at,
like menus with only one item in them being a special case.
<dsinclair> Menus on mac/linux/windows special case when there is only
one item, has a single renderer. Android is different.
<dsinclair> Next up, full screen. Julien was looking at it for awhile.
<eae> Julien, do you want to give a quick update on full screen?
<jchaffraix> I wrongly though someone has fixed a prerequisite bug for
full screen. I spent some time doing tons of testing/rebaselining with
the assumption we could land the change. Realized that we couldn't as
the prerequisite bug wasn't fixed.
<jchaffraix> Blocked on complex problem around re-attach. When
toggling fullscreen you change state of render requiring re-attach
which is problematic.
<jchaffraix> Presto did work to save state when re-attaching to avoid
restarting plugins when re-attaching. Presto re-attaches more than
blink which prompted this.
[ Speed up complex text by a factor of 2 ]
<eae> New goal added mid-quarter. We managed to speed up complex text
by a minimum of over 2 and up to 40x in some cases. Score 1.0
<eae> We might have been a bit too conservative here, we'll correct that
for Q2!
Non-OKR tasks
<eae> Let's talk about tasks we spent significant amounts of time on that was not covered by our OKRs. From draft doc:
- rendering/ -> layout/ move and renaming
- bidi bugs
- mac text rendering follow up
- security bugs
- updating flexbox to latest version of spec
- import w3c flexbox tests
- css writing mode tests
- win_blink_rel deflaking <eae> A few of those, like the rendering -> layout rename and the win_blink_rel work should probably have been added to the OKRs mid quarter. <eae> We cannot plan for the unexpected but if we have unforeseen work that we expect to continue we should consider adding it mid-quarter to the list. <jchaffraix> Did we miss anything? * silence * <eae> I guess the silence means we have agreement, let's move on. Q2 OKR Planning
[ O: Gain insight into real world layout performance. ]
[ KR: Have a report characterizing layout performance for all layout
scenarios. - benjhayden ]
<eae> Could you explain what we mean by layout scenarios?
<benjhayden> That is part of the goal, we know load layout is
different from animation layout and incremental layout. Yet both can
do a lot of the same work. We're still trying to figure out what it
means.
<jchaffraix> Is this layout classes? Load vs animation?
<benjhayden> There are different types of animation layout, think
moves vs gets taller. Most layouts are a mix of many types, there is a
lot to figure out. It is a bit ill-defined at the moment.
<dsinclar> Could you add some words to make that more clear? Wasn't
obvious what it meant, I thought it was layout classes.
<benjhayden> That is part of it, we need to know what is text layout
vs block, load vs incremental etc. Lots of work to define.
<jchaffraix> This needs better wording.
<dsinclar> Should we split it into two KRs? One for moving on page,
other for what we call layout classes in blink?
<jchaffraix> We don't know the granularity.
<eae> Having a report split on a couple of different axis would be
useful, we don't know what the axis are yet though so being more
specific is hard.
<benjhayden> Having a report is a good key result, figuring out how to
present the data is part of the objective.
[ O: Improve high-level layout design. ]
[ KR: Have design document for grand node measure refactoring. ]
[ - jchaffraix ]
[ KR: List markers not modifying layout tree during layout (in dev). ]
[ - dsinclair ]
[ KR: Initial implementation of menu item not modifying layout tree
during layout (in canary). -dsinclair ]
<jchaffraix> For those that haven't been following along, we've
started talking about element measure and display outside/
- webkit is 82% <cbiesinger> Is WebKit Blink? <kojii> We've asked the working group to split it, for now the WebKit number mostly means Blink. <jchaffraix> What would this work entail? We need something we could measure. <kojii> Firfox is behind a flag, should launch soon. IE we have not tested much. <eae> Do we want to support all? What would be a good goal to aim for here? Specific properties we want to support? Increase the number by a couple of percentage points? <jchaffraix> Is unclear. How much are we passing right now? <jchaffraix> Never mind, found it. We're at 80. <kojii> We used to be at 60, in Q1 i raised it to 80. <jchaffraix> Should we aim for 100? <kojii> Coverage goes down as tests gets add. Is 85% too conservative? [ internal discussion, redacted ] <eae> Makes sense. Let's aim for 85. [ KR: Build the plan to support updated Unicode Bidirectional ] [ Algorithm - kojii ] <eae> Updating the UBA is something that we've been punting for years, the i18n team is really pushing for it. <kojii> Top priority for BIDI team. <eae> Will be a lot of work given that we have a custom version for speed. Whether we update our custom one or improve the performance of the new one it'll be a lot of work. <kojii> Need to investigate, goal is to have a plan. <julien> So the deliverable is to have a plan, not to do the work? <eae> Yes.