PSA: new navigation architecture launching in M60

131 views
Skip to first unread message

Camille Lamy

unread,
Jul 21, 2017, 10:13:51 AM7/21/17
to chromium-dev, blink-dev
Hi fellow Chromites,

Following 3 years of development, the new navigation architecture (aka PlzNavigate) is set to launch in M60! If all goes well, we should progressively switch all M60 stable users to PlzNavigate using Finch.

Our experiment on Beta shows that switching to PlzNavigate results in a 3 to 5% improvement to TimeToFirstContenfulPaint on all navigations. Yay! It does however slightly regress TTFCP on cached back/forward navigations specifically. We have investigated and identified the issue (it's due to our usage of blob urls to deliver the navigation response to the renderer process), and are working on a fix for M62.

In terms of development in Chromium, we're going to enable PlzNavigate by default on trunk soon. We will keep executing test suites with the old navigation codepath on CQ bots until we are fully assured of the stability of PlzNavigate. Once that happens, we will begin the process of removing the old navigation codepath. This should happen around the M62 branchpoint.

Thanks to everybody that helped make this project happen!
Camille

Kinuko Yasuda

unread,
Jul 21, 2017, 10:22:36 AM7/21/17
to cl...@chromium.org, chromium-dev, blink-dev
Woohoo.  Congratulations!

2017/07/21 午後11:12 "Camille Lamy" <cl...@chromium.org>:

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/chromium-dev/CAMKsNvr4wrLzEMK7-p2w2J%2BWnNRMdbzPYgtONV3gz1554n3N8w%40mail.gmail.com.

Charles Harrison

unread,
Jul 21, 2017, 10:23:16 AM7/21/17
to Camille Lamy, chromium-dev, blink-dev
Kudos for reaching an important milestone!! Do we have a sense of how much code we'll be able to delete when we remove the old code path?

--
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+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMKsNvr4wrLzEMK7-p2w2J%2BWnNRMdbzPYgtONV3gz1554n3N8w%40mail.gmail.com.

Ken Rockot

unread,
Jul 21, 2017, 10:25:17 AM7/21/17
to Charles Harrison, Camille Lamy, chromium-dev, blink-dev
Congratulations to all involved!

I'm super excited to see the old navigation code going away soon. Should be a nice reduction in complexity. :)

Camille Lamy

unread,
Jul 21, 2017, 10:36:56 AM7/21/17
to Ken Rockot, Charles Harrison, chromium-dev, blink-dev
In terms of complexity, codesearch returns 161 usages of IsBrowserSideNavigationEnabled() in non test-code. A few of those are DCHECKs, so we should be removing ~100 divergences between the two code paths. Once that's done, we also hope to do a lot of simplification in the blink loader code/, since a lot of the code that handles navigation there will no longer be needed.

On Fri, Jul 21, 2017 at 4:23 PM Ken Rockot <roc...@chromium.org> wrote:
Congratulations to all involved!

I'm super excited to see the old navigation code going away soon. Should be a nice reduction in complexity. :)

On Fri, Jul 21, 2017 at 7:22 AM, Charles Harrison <cshar...@chromium.org> wrote:
Kudos for reaching an important milestone!! Do we have a sense of how much code we'll be able to delete when we remove the old code path?
On Fri, Jul 21, 2017 at 10:12 AM, Camille Lamy <cl...@chromium.org> wrote:
Hi fellow Chromites,

Following 3 years of development, the new navigation architecture (aka PlzNavigate) is set to launch in M60! If all goes well, we should progressively switch all M60 stable users to PlzNavigate using Finch.

Our experiment on Beta shows that switching to PlzNavigate results in a 3 to 5% improvement to TimeToFirstContenfulPaint on all navigations. Yay! It does however slightly regress TTFCP on cached back/forward navigations specifically. We have investigated and identified the issue (it's due to our usage of blob urls to deliver the navigation response to the renderer process), and are working on a fix for M62.

In terms of development in Chromium, we're going to enable PlzNavigate by default on trunk soon. We will keep executing test suites with the old navigation codepath on CQ bots until we are fully assured of the stability of PlzNavigate. Once that happens, we will begin the process of removing the old navigation codepath. This should happen around the M62 branchpoint.

Thanks to everybody that helped make this project happen!
Camille

--
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.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.

Kinuko Yasuda

unread,
Jul 21, 2017, 11:23:23 AM7/21/17
to Camille Lamy, Ken Rockot, Charles Harrison, chromium-dev, blink-dev
On Fri, Jul 21, 2017 at 11:34 PM, Camille Lamy <cl...@chromium.org> wrote:
In terms of complexity, codesearch returns 161 usages of IsBrowserSideNavigationEnabled() in non test-code. A few of those are DCHECKs, so we should be removing ~100 divergences between the two code paths. Once that's done, we also hope to do a lot of simplification in the blink loader code/, since a lot of the code that handles navigation there will no longer be needed.

Yay, this sounds very exciting!
 

On Fri, Jul 21, 2017 at 4:23 PM Ken Rockot <roc...@chromium.org> wrote:
Congratulations to all involved!

I'm super excited to see the old navigation code going away soon. Should be a nice reduction in complexity. :)

On Fri, Jul 21, 2017 at 7:22 AM, Charles Harrison <cshar...@chromium.org> wrote:
Kudos for reaching an important milestone!! Do we have a sense of how much code we'll be able to delete when we remove the old code path?
On Fri, Jul 21, 2017 at 10:12 AM, Camille Lamy <cl...@chromium.org> wrote:
Hi fellow Chromites,

Following 3 years of development, the new navigation architecture (aka PlzNavigate) is set to launch in M60! If all goes well, we should progressively switch all M60 stable users to PlzNavigate using Finch.

Our experiment on Beta shows that switching to PlzNavigate results in a 3 to 5% improvement to TimeToFirstContenfulPaint on all navigations. Yay! It does however slightly regress TTFCP on cached back/forward navigations specifically. We have investigated and identified the issue (it's due to our usage of blob urls to deliver the navigation response to the renderer process), and are working on a fix for M62.

In terms of development in Chromium, we're going to enable PlzNavigate by default on trunk soon. We will keep executing test suites with the old navigation codepath on CQ bots until we are fully assured of the stability of PlzNavigate. Once that happens, we will begin the process of removing the old navigation codepath. This should happen around the M62 branchpoint.

Thanks to everybody that helped make this project happen!
Camille

--
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+unsubscribe@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.

ben.m...@gmail.com

unread,
Jul 21, 2017, 12:59:03 PM7/21/17
to blink-dev, chromi...@chromium.org
This is awesome!

Do you guys have any guide as to how this might change user-visible metrics? For example, if the network request is sent off before the browser is able to fork a renderer process is it possible that it could cause an apparent inflation in Navigation Timing metrics (ie, could it look like the request took longer).

Also, how does this interact with navigation preload in service worker?

Peter Kasting

unread,
Jul 21, 2017, 2:00:15 PM7/21/17
to Camille Lamy, chromium-dev, blink-dev
On Fri, Jul 21, 2017 at 7:12 AM, Camille Lamy <cl...@chromium.org> wrote:
Following 3 years of development, the new navigation architecture (aka PlzNavigate) is set to launch in M60! If all goes well, we should progressively switch all M60 stable users to PlzNavigate using Finch.

Congratulations on this milestone!  I'm excited to have such a major cleanup/reorg of the navigation stack land.  The old stack perpetually seemed complicated and poorly-owned, and the prospect of the new stack being simpler and better-owned and tested makes me really happy.

PK 

Kouhei Ueno

unread,
Jul 21, 2017, 9:13:07 PM7/21/17
to Peter Kasting, Camille Lamy, chromium-dev, blink-dev
Congratulations on the launch!
Super excited that now we can work on streamlined nav loading path!

--
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+unsubscribe@chromium.org.

Michael Giuffrida

unread,
Jul 22, 2017, 3:01:24 AM7/22/17
to cl...@chromium.org, chromium-dev, blink-dev
Are there any docs or header files related to PlzNavigate that would explain what the changes are? (I found this doc from 2014.)

Specifically, I'm interested in whether this will improve loading time for Chrome WebUI, e.g. chrome://settings.

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
---
You received this message because you are subscribed to the Google Groups "Chromium-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/chromium-dev/CAMKsNvr4wrLzEMK7-p2w2J%2BWnNRMdbzPYgtONV3gz1554n3N8w%40mail.gmail.com.

Camille Lamy

unread,
Jul 24, 2017, 8:13:10 AM7/24/17
to Michael Giuffrida, chromium-dev, blink-dev
Thanks everyone!

When it comes to documentation, we have an updated version of the design doc here (from 2016).

For the user-visible metrics, they should go down. In particular, renderer-creation time is already included in the metrics, and its impact on page load time is lessened with PlzNavigate. There are two cases where the user-visible metrics might go up: cross-site redirects to pages with a Service Worker, and back-forward navigations. We have addressed the Service Worker issue in M61, and we plan on fixing b/f navigations in M62.

John Abd-El-Malek

unread,
Aug 14, 2017, 10:13:19 AM8/14/17
to chromium-dev, blink-dev
Heads-up that we're turning this on at 100% now. Trunk is still on by default, although main waterfall + CQ runs with PlzNavigate. In the next few days we'll flip trunk and switch the PlzNavigate test runs to run the old code paths. Once M62 branches we will start deleting the old code.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMKsNvp2D4ZvHOz%2ByHKdG_xMA9ZDg569rf%3DDvwMXgQmo0CHt-g%40mail.gmail.com.

John Abd-El-Malek

unread,
Aug 15, 2017, 8:11:59 PM8/15/17
to chromium-dev, blink-dev
We've had to roll this back because the full stable rollout exposed 3 bugs.
Reply all
Reply to author
Forward
0 new messages