Closed Bug 1447719 Opened 6 years ago Closed 6 years ago

Set browser.startup.blankWindow to true on Windows and Linux

Categories

(Firefox :: General, enhancement, P1)

enhancement

Tracking

()

RESOLVED DUPLICATE of bug 1473142
Firefox 61
Tracking Status
firefox61 --- verified

People

(Reporter: florian, Assigned: florian)

References

(Regressed 1 open bug)

Details

(Whiteboard: [fxperf:p1])

Attachments

(6 files)

We would like to start gathering nightly feedback on the code that landed in bug 1336227.

UX said we don't want this on Mac where the application windows typically appear all at once and where the bouncing dock icon already provides feedback that something is happening.
Assignee: nobody → florian
Status: NEW → ASSIGNED
Comment on attachment 8961041 [details] [diff] [review]
Patch

Review of attachment 8961041 [details] [diff] [review]:
-----------------------------------------------------------------

\o/

::: browser/app/profile/firefox.js
@@ +265,3 @@
>  pref("browser.startup.blankWindow", false);
> +#else
> +pref("browser.startup.blankWindow", true);

Should this be Nightly-only until we're happy with the feedback we receive?
Attachment #8961041 - Flags: review?(mconley) → review+
The Platform Integration team still has platform level early window work scheduled for this year. If you decide this is sufficient, please let me know!
Depends on: 1447788
(In reply to Mike Conley (:mconley) from comment #2)

> Should this be Nightly-only until we're happy with the feedback we receive?

I'll have changes to make to this anyway, so I don't think an extra ifdef is needed right now.

(In reply to Jim Mathies [:jimm] from comment #3)
> The Platform Integration team still has platform level early window work
> scheduled for this year. If you decide this is sufficient, please let me
> know!

I hope this is sufficient, but let's wait for some feedback. We'll probably know by the end of the 61 nightly cycle.

(In reply to Florian Quèze [:florian] from comment #1)
> Pushed this to try at
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=6bf76948b2d9b3ee9a1f3a08a72d9b775a8d5ab3

This looks green except for bug 1447788, a new try push with that additional fix is green: https://treeherder.mozilla.org/#/jobs?repo=try&revision=4793f5ba7dcda9e5252bedaeae3095141d7da4ff

Talos looks very happy on Linux, and unchanged on Windows, which is a bit surprising but doesn't block landing: https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=348b31934e502e5633f5e0ece2d7c17f748bdb2b&newProject=try&newRevision=6bf76948b2d9b3ee9a1f3a08a72d9b775a8d5ab3&framework=1&showOnlyComparable=1&showOnlyImportant=1
Pushed by florian@queze.net:
https://hg.mozilla.org/integration/mozilla-inbound/rev/f026ead5dbfc
Set browser.startup.blankWindow to true on Windows and Linux, r=mconley.
https://hg.mozilla.org/mozilla-central/rev/f026ead5dbfc
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 61
Depends on: 1448135
Depends on: 1448146
Either this bug or the other 2 from here [1] brought these perf improvements.

== Change summary for alert #12323 (as of Wed, 21 Mar 2018 21:24:10 GMT) ==

Improvements:

 57%  ts_paint_webext linux64 opt e10s stylo     543.24 -> 232.17
 57%  ts_paint_webext linux64 pgo e10s stylo     514.58 -> 221.58
 51%  ts_paint_heavy linux64 opt e10s stylo      459.67 -> 224.00
 51%  ts_paint linux64 opt e10s stylo            455.92 -> 223.17
 51%  ts_paint_heavy linux64 pgo e10s stylo      434.92 -> 214.00
 50%  ts_paint linux64 pgo e10s stylo            431.83 -> 214.17

For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=12323

[1] https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=e21a2a57d05dfe3c5ff8ba71131127fa781ffdd0&tochange=f026ead5dbfce9d6530429ac568ecc5544cc9b3b
Depends on: 1448423
I have reproduced this bug with Nightly 61.0a1 (2018-03-21) on Windows 10 , 64 Bit ! 

This bug's fix is Verified with latest Nightly !

Build   ID    20180327105613
User Agent    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0

[bugday-20180328]
Depends on: 1448917
Depends on: 1448485
(In reply to Florian Quèze [:florian] from comment #0)
> UX said we don't want this on Mac where the application windows typically
> appear all at once and where the bouncing dock icon already provides
> feedback that something is happening.

I expect most Linux distributions will build with
--enable-startup-notification, which provides feedback that something is
happening.  Exactly what it provides depends on the system.
Depends on: 1449925
Depends on: 1450267
Depends on: 1450293
Depends on: 1450408
I have reproduced this bug with 61.0a1 (2018-03-21) on Ubuntu 16.04 LTS!

This bug's fix is Verified with latest Nightly !

Build   ID    20180331101347
User Agent    Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0
QA Whiteboard: [bugday-20180328]
As par comment 10 & comment 12 , I am marking this bug as verified fixed !
Status: RESOLVED → VERIFIED
Depends on: 1450626
Depends on: 1453782
Depends on: 1456270
Reviewing this patch for a user research study. Attached are two videos: one is the current behavior and the second is the white box first paint.

To clarify, when the concept for chunked application launch was originally presented, we discussed first paint within the chrome, not first paint of a white box. The chrome should appear first and then the optimized first paint. The first paint of a white box without chrome is not a standard application launch sequence and the application appears broken.
Status: VERIFIED → REOPENED
Flags: needinfo?(mconley)
Flags: needinfo?(distratios)
Resolution: FIXED → ---
Attached video Current Beta.mp4
Attached video Blank Window Beta.mp4
(In reply to Bill Selman from comment #14)
> Reviewing this patch for a user research study. Attached are two videos: one
> is the current behavior and the second is the white box first paint.
> 
> To clarify, when the concept for chunked application launch was originally
> presented, we discussed first paint within the chrome, not first paint of a
> white box. The chrome should appear first and then the optimized first
> paint. The first paint of a white box without chrome is not a standard
> application launch sequence and the application appears broken.
Flags: needinfo?(distratios) → needinfo?(past)
(In reply to Bill Selman from comment #14)
> To clarify, when the concept for chunked application launch was originally
> presented, we discussed first paint within the chrome, not first paint of a
> white box. The chrome should appear first and then the optimized first
> paint. The first paint of a white box without chrome is not a standard
> application launch sequence and the application appears broken.

Hm. This definitely doesn't match our understanding of what we were to do here - and I'm reasonably certain phlsa gave his thumbs up on the patches behaviour.

Redirecting to phlsa - was there a miscommunication here?
Flags: needinfo?(mconley) → needinfo?(philipp)
Okay folks, here's an update.

wselman and gemma were the original sponsors of the early first paint project, and conducted all of the original research. The original spec for the feature included the native titlebar in the early paint, which we don't currently display. We, instead, display a fully blank window, which according to wselman is something we never want to see.

I think that's sufficient cause to disable the feature in 61, and hold it to Nightly until we match their spec.
Flags: needinfo?(philipp)
Filed bug 1465583 to disable the feature on all channels except for Nightly.
See Also: → 1465583
To clarify...Chrome does have a blank window but there are animated fades transitioning between phases in the start up sequence; there is constant movement between the stages. Also, the blank window in Chrome lasts significantly less time on the test machine. Edge shows fades and gradient transition from a branded screen.

The patch is on the way to the goal, but there are some transitional nuances that make the current implementation appear abrupt. We are digging into options. I have attached videos of both Edge and Chrome start up sequences on Windows 10.
Attached video Chrome Launch.mp4
Attached video Edge Launch.mp4
Depends on: 1465595
Thanks for the ping! Mike is the key stakeholder here, so I don't have a lot to add. 

Let me try to summarize however what has been proposed as the ideal future state, to make sure everyone is on the same page:

1. We need to reduce further the time it takes to get from the blank window to the fully painted window (comment 21) - perhaps with the followups of bug 1336227.
2. We need to add some animations/fading to make the window appearance smoother (comment 21).
3. We need to display the browser chrome in the early blank (content) window paint (comment 14).

Now, if this is accurate, the questions still in my mind are:

a) Do we need both 2 and 3 or only one of them?
b) We want 2 presumably for both the blank and the fully painted windows?
c) Are we still going to do the UR study with what we have now or has it been canceled?
Flags: needinfo?(past)
Addressing the items one by one:

1. Yes. This would be the best outcome we can achieve. However, Mike says this is a different project in terms of engineering effort. He can confirm.
2. Yes. We have a setting to show animation on launch. It improves the smoothness of the opening sequence. We might consider evaluating a fade from the blank canvas to the first display of the browser chrome as well.
3. Not necessarily...if it slows down performance on the start-up sequence. It is more important to show continuous motion.

We are still planning to run the UR study because it is already scheduled. 

We can address three treatments of the start-up sequence:
1. Current state (release 60)
2. Blank canvas with browser.suppress_first_window_animation=true
3. Blank canvas with browser.suppress_first_window_animation=false
(In reply to Bill Selman from comment #14)

> To clarify, when the concept for chunked application launch was originally
> presented, we discussed first paint within the chrome, not first paint of a
> white box. The chrome should appear first and then the optimized first
> paint. The first paint of a white box without chrome is not a standard
> application launch sequence and the application appears broken.

The request we got from UX was to show something on screen asap, especially the dock tile. A large part of the goal here is to acknowledge that Firefox is starting, so that the user doesn't wonder if his click was registered, and click the icon several times.

The startup timings in your videos (are they warm startups? or is your test machine pretty fast?) make this completely irrelevant, but it's very relevant for lots of users, especially when starting Firefox the first time in the morning after booting up the computer.


(In reply to Bill Selman from comment #21)
> To clarify...Chrome does have a blank window but there are animated fades
> transitioning between phases in the start up sequence; there is constant
> movement between the stages.

Your Chrome startup video has no transition between the completely blank window and the chrome fully painted. So we seem to have the same behavior as Chrome.

Your Chrome video has the chrome with a light color, so transitioning from white to this light color is less abrupt than transitioning from white to the dark chrome color of Firefox. Your Firefox also has the menubar visible, which is a non-default configuration that makes the dark area at the top much more noticeable when it appears.

> Also, the blank window in Chrome lasts
> significantly less time on the test machine.

This is general startup performance (that we keep profiling and improving over time) and isn't related to this project.

> Edge shows fades and gradient
> transition from a branded screen.

The Edge behavior is more like a splash screen.


(In reply to Mike Conley (:mconley) (:⚙️) (Catching up on needinfos / reviews) from comment #19)

> The original spec for
> the feature included the native titlebar in the early paint, which we don't
> currently display.

Showing the native titlebar on the blank window would cause bad flicker, because once the chrome is painted, we display a non-native titlebar with a custom height.

> We, instead, display a fully blank window, which
> according to wselman is something we never want to see.

We were already displaying a blank window for a frame or two even with this feature pref'ed off. This feature just makes the blank window appear way earlier in the startup process (and consequently remain on screen much longer). And the time until this blank window was on screen was used for the "first paint" benchmarks that softvision was running for quantum/photon.

Also, Chrome displays that exact same blank window.
I've managed to perform a smoke run testing against Windows 10 x64 and Ubuntu 16.04 x64 for this feature (with hw acceleration enabled/disabled), focusing on different ways to open the browser. During this testing session on Beta 61.0b9, we haven't found any new bugs on the current implementation.

More info about the testing report can be found here: https://testrail.stage.mozaws.net/index.php?/reports/view/951
FYI phlsa and I will revisit this issue when he is back from PTO, in the meantime I am in favor of disabling as per comment #19.
Priority: -- → P1
(In reply to Mike Conley (:mconley) (:⚙️) (Catching up on needinfos / reviews) from comment #19)
> The original spec for the feature included the native titlebar in the early paint, which we don't
> currently display. We, instead, display a fully blank window, which
> according to wselman is something we never want to see.

Why not just a blank window with a centred Firefox logo?
That would prevent users with (very) slow computers thinking that Firefox is "broken" when the chrome doesn't display in the window. Vivaldi has an implementation like this.
I've attached a video showing what I mean.
Depends on: 1485629
No longer depends on: 1448423
No longer depends on: 1485629
No longer depends on: 1450626
No longer depends on: 1456270
No longer depends on: 1455154
Status: REOPENED → RESOLVED
Closed: 6 years ago6 years ago
Resolution: --- → DUPLICATE
Depends on: 1489852
Regressions: 1545313
No longer regressions: 1545313

(In reply to qwertyuiopyozo from comment #29)

Why not just a blank window with a centred Firefox logo?
That would prevent users with (very) slow computers thinking that Firefox is
"broken" when the chrome doesn't display in the window. Vivaldi has an
implementation like this.
I've attached a video showing what I mean.

About 10 years ago many programs used splash screens. Some people decided that it is a bad idea (maybe they are wrong, who knows?). You are proposing a splash screen, but in fullscreen mode and very light that will damage user's eyes in dark daytime.

I think, that if there is a problem of telling the user that Firefox is loading, then it is better to show something smaller and not so bright and ugly (because it doesn't have usual browser elements as tabs, address bar and so on).

May be it should look like this one, but with some Foxy in it:
https://img.raymond.cc/blog/wp-content/uploads/2014/08/powerpoint-splash-screen.png

And another thing:
All the point with this initial paint is giving the user of low-end PC a feeling that the process is started/starting, right?
But on my PC current Nightly is starting in about 2 seconds, maybe it is not needed it such circumstances?
Then, the process may look like this:

  1. Scheduling a task to show splash screen on some 2-3 seconds in the future.
  2. Starting main loading process, showing normal browser window with tabs etc.
  3. On the first interface paint signaling the scheduler that the task with the splash screen is not needed (cancel it).

What do you all think about that?

Regressions: 1545313
Regressions: 1635927
Regressions: 1862415
No longer regressions: 1862415
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: