After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 793501 - Fedora patches to allow reducing initial setup redundancy
Fedora patches to allow reducing initial setup redundancy
Status: RESOLVED FIXED
Product: gnome-initial-setup
Classification: Applications
Component: general
3.27.x
Other Linux
: Normal normal
: ---
Assigned To: GNOME Initial Setup maintainer(s)
GNOME Initial Setup maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2018-02-16 03:30 UTC by Michael Catanzaro
Modified: 2018-04-03 02:33 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Show welcome screen if language page is skipped (9.37 KB, patch)
2018-02-16 03:31 UTC, Michael Catanzaro
none Details | Review
Allow skipping pages only in new/existing user modes (3.39 KB, patch)
2018-02-16 03:31 UTC, Michael Catanzaro
none Details | Review
screenshot of language page (16.26 KB, image/png)
2018-02-19 16:12 UTC, Michael Catanzaro
  Details
screenshot of language page with language selection enabled (32.70 KB, image/png)
2018-02-19 16:15 UTC, Michael Catanzaro
  Details
Show welcome screen if language page is skipped (9.00 KB, patch)
2018-03-31 16:59 UTC, Michael Catanzaro
committed Details | Review
Allow skipping pages only in new/existing user modes (4.29 KB, patch)
2018-03-31 16:59 UTC, Michael Catanzaro
committed Details | Review

Description Michael Catanzaro 2018-02-16 03:30:27 UTC
I'm attaching patches that Fedora will need to implement https://fedoraproject.org/wiki/Changes/ReduceInitialSetupRedundancy. These both seem upstreamable to me. The first patch improves the user experience when language selection is skipped. The second patch allows skipping pages conditional on new/existing user mode, so that we can skip some pages only on firstboot and not for subsequently-created user accounts.

CCing Sam and Cosimo because the second patch changes the format of the skip file. It's only been around for one release and I assume only Endless is using it, so we might as well just change it now IMO. /var/lib/eos-image-defaults/branding/gnome-initial-setup.conf will need to be updated accordingly.
Comment 1 Michael Catanzaro 2018-02-16 03:31:19 UTC
Created attachment 368395 [details] [review]
Show welcome screen if language page is skipped

We can't *really* skip the language page, because we need to display some
sort of welcome screen. In this case, let's just hide the language
selection element. To make this look decent, the icon needs to be a bit
bigger, and we need to center everything. Turns out, these changes look
fine even when the language page is not skipped, so they don't need to
be conditional on that.
Comment 2 Michael Catanzaro 2018-02-16 03:31:23 UTC
Created attachment 368396 [details] [review]
Allow skipping pages only in new/existing user modes

This makes the skip file a bit more powerful. Instead of specifying
pages that will always be skipped, it's now possible to specify pages to
be skipped in just new user mode or just existing user mode. This way we
can hide pages that are redundant with distro installers in new user
mode (firstboot), but still show them otherwise.

To skip a page always, like Endless has been doing, just put it in
both sections.
Comment 3 Michael Catanzaro 2018-02-19 16:12:45 UTC
Created attachment 368566 [details]
screenshot of language page

This is what the language page looks like now, with language selection disabled

Might be cleaner to split it out to a separate page that's shown only if the language page is disabled, but this way is much simpler. ;)
Comment 4 Michael Catanzaro 2018-02-19 16:15:15 UTC
Created attachment 368567 [details]
screenshot of language page with language selection enabled

And here's a screenshot of the language page with language selection enabled. Only noticeable difference is the icon size. Maybe it is a tad too big now; perhaps I should make the icon size conditional on which mode we're showing. (The original icon size just felt too small when language selection is disabled.)
Comment 5 robert 2018-02-20 00:23:50 UTC
> CCing Sam and Cosimo because the second patch changes the format of the skip file. It's only been around for one release and I assume only Endless is using it, so we might as well just change it now IMO. /var/lib/eos-image-defaults/branding/gnome-initial-setup.conf will need to be updated accordingly.

Hmm... this file, if included on generated system images, is outside of the OStree that allows Endless to push upgrades to it, because our original purpose of introducing this feature is was include variations in images outside of the base OS. (Which is a more specific version of your problem of changing behaviour downstream without changing the upstream code.)

Looking at your patch it seems like you could arrange for selecting on something else (a new group or a new key within the existing group) for the pages to skip in the existing user case. It would be appreciated if this could be done in a way that didn't break compatibility needlessly with our existing usage, and condemning us to carry a patch in perpetuity.
Comment 6 Michael Catanzaro 2018-02-20 03:41:00 UTC
(In reply to robert from comment #5)
> Looking at your patch it seems like you could arrange for selecting on
> something else (a new group or a new key within the existing group) for the
> pages to skip in the existing user case. It would be appreciated if this
> could be done in a way that didn't break compatibility needlessly with our
> existing usage, and condemning us to carry a patch in perpetuity.

Yup, absolutely; maintaining compatibility with the existing [pages] group is easy if needed. It's nicer to not do so, but I was thinking it would be trivial to update Endless's config file. If /var/lib/eos-image-defaults/branding/gnome-initial-setup.conf is outside the ostree (really? under /var/lib? alas!), then I can cook a new version that doesn't break compat.
Comment 7 Michael Catanzaro 2018-02-20 04:14:13 UTC
(In reply to Michael Catanzaro from comment #6)
> (really? under /var/lib? alas!)

Eh, all of /var is outside of ostree, same as /etc. Wouldn't work very well otherwise... silly me.
Comment 8 Allan Day 2018-02-21 11:02:18 UTC
The new bare "welcome" page is quite empty and would benefit from additional text and dedicated artwork. I think we'd prefer not to add this if it's only going to be shown in some situations.

This leaves us two options:

 1. Always show the welcome page, which will result in making initial setup longer in some cases
 2. Always show language selection, even if it means repeating an option that's already been configured
Comment 9 Michael Catanzaro 2018-02-21 16:55:28 UTC
1 would work better for Fedora.

Option 2 requires restoring the pages we've hidden from Anaconda, and going back to not doing user creation in g-i-s. That's part of the deal for https://fedoraproject.org/wiki/Changes/ReduceInitialSetupRedundancy.
Comment 10 Michael Catanzaro 2018-02-21 17:04:39 UTC
(In reply to Michael Catanzaro from comment #9)
> Option 2 requires restoring the pages we've hidden from Anaconda, and going
> back to not doing user creation in g-i-s. That's part of the deal for
> https://fedoraproject.org/wiki/Changes/ReduceInitialSetupRedundancy.

We could do that, of course. But now is our best change to push through with the Anaconda changes, when they have been approved for this cycle.
Comment 11 Allan Day 2018-02-22 16:46:22 UTC
From the information in this bug, it's hard to know exactly what the user experience will look like. It would be useful to have details of which steps will be shown in which scenarios.
Comment 12 Michael Catanzaro 2018-02-22 17:49:13 UTC
There are two scenarios: new user mode and existing user mode. Existing user mode is when the user account exists before gnome-initial-setup is run. That's currently *almost always* the case in Fedora. The only exception is if the user skips the user account creation spoke in Anaconda, which no reasonable user would ever do, unless they happen to be a GNOME developer trying to test it out. So in practice, new user mode was *never* run until now.

Currently, all panels are shown in new user mode. Some of the panels are skipped in existing user mode. The panels are:

language (always)
keyboard (always)
eula (skipped in Fedora since there is no EULA)
network (for laptops)
privacy (always)
timezone (new user mode only)
software (new user mode only)
goa (always)
account (new user mode only)
password (new user mode only)
summary (always)

The panels that are new user mode only were effectively always skipped in Fedora. So the current Fedora workflow is:

language
keyboard
network (for laptops)
privacy
goa
summary

Currently, distros can skip arbitrary panels using the skip file, but with two restrictions: (a) everything breaks if the language panel is skipped, and (b) a panel that is skipped gets must be skipped in both new user mode and existing user mode.

These patches implement two changes:

 * If language panel is skipped, everything no longer breaks. We enter the language panel anyway and show just the welcome bits, without the language selection bits.
 * It's now possible to skip panels in only new user mode or only existing user mode, but not the other

In Fedora, I use this patch to skip language, keyboard layout, and timezone, which will be set in Anaconda. (The change proposal is written to allow us to choose where timezone goes; we could skip it in Anaconda instead without asking 
for approval.) I have separately hidden account creation, root password creation, and network configuration (the page that only allows setting hostname) from anaconda. So now, Fedora will use new user mode on first boot. That means the Fedora workflow changes to:

welcome (language page without language selection)
network
privacy
software (new!)
goa
account (new!)
password (new!)
summary

Language and keyboard layout are removed, three new panels are added. We have flexibility to add timezone as well if we remove the time selection panel from Anaconda. (I've opted not to for now, but we could if we think we can get away with it. Risk is that the time could be crazy on files created by the installer, and users replacing Windows are guaranteed to get the wrong time since system clock will be in local time.)

For Fedora political reasons, it was important to push this through downstream now, because we have to ask permission again if we make substantial changes or if it slips to the next release. And there is serious risk there: FESCo had recently instructed us to remove all the redundancy from g-i-s; we needed to negotiate to undo that and get back to this point. We can take as long as we want to do it nicer upstream, but also consider that these patches don't actually change the default upstream behavior: they only give more control to downstreams to choose non-default behavior more flexibly.
Comment 13 Michael Catanzaro 2018-02-22 17:52:58 UTC
(In reply to Michael Catanzaro from comment #12)
> So now, Fedora will use new user mode on first
> boot. That means the Fedora workflow changes to:
> 
> welcome (language page without language selection)
> network
> privacy
> software (new!)
> goa
> account (new!)
> password (new!)
> summary

I forgot to add: there are no changes to existing user mode. So when new accounts are created in control-center, the workflow will still be the same as before:

language
keyboard
network (for laptops)
privacy
goa
summary

which is the same both upstream and downstream.

And the upstream default behavior in new user mode is also unchanged. That will remain:

language
keyboard
eula (if present)
network (for laptops)
privacy
timezone
software
goa
account
password
summary

I think we don't want to change this, because language and keyboard layout selection is important in OEM mode. I think OEM mode is what you were thinking when you designed gnome-initial-setup in the first place, and that's what we really wish the default user experience would be, so it makes sense to keep this the upstream default.
Comment 14 Michael Catanzaro 2018-03-31 16:59:17 UTC
Created attachment 370393 [details] [review]
Show welcome screen if language page is skipped

We can't *really* skip the language page, because we need to display some
sort of welcome screen. In this case, let's just hide the language
selection element. To make this look decent, we need to center everything.
Turns out, these changes look fine even when the language page is not
skipped, so they don't need to be conditional on that.
Comment 15 Michael Catanzaro 2018-03-31 16:59:21 UTC
Created attachment 370394 [details] [review]
Allow skipping pages only in new/existing user modes

This makes the skip file a bit more powerful. Instead of specifying
pages that will always be skipped, it's now possible to specify pages to
be skipped in just new user mode or just existing user mode. This way we
can hide pages that are redundant with distro installers in new user
mode (firstboot), but still show them otherwise.
Comment 16 Michael Catanzaro 2018-03-31 17:01:15 UTC
These new patches preserve compatibility with the old skip file format, to avoid causing problems for Endless. Now that I've tried it, I actually like the file format better this way anyway.

I want to land the patch in bug #794166 first, though, because it will be easier for me to rebase these patches on top of that one than vice-versa.
Comment 17 Michael Catanzaro 2018-04-02 16:28:41 UTC
Attachment 370393 [details] pushed as 7bc7c50 - Show welcome screen if language page is skipped
Attachment 370394 [details] pushed as b430a6a - Allow skipping pages only in new/existing user modes
Comment 18 Michael Catanzaro 2018-04-02 16:37:51 UTC
Note that we still surely want to implement point 1 here:

(In reply to Allan Day from comment #8)
> The new bare "welcome" page is quite empty and would benefit from additional
> text and dedicated artwork. I think we'd prefer not to add this if it's only
> going to be shown in some situations.
> 
> This leaves us two options:
> 
>  1. Always show the welcome page, which will result in making initial setup
> longer in some cases
>  2. Always show language selection, even if it means repeating an option
> that's already been configured

as the current welcome page does not look very good.

but this fixes things to at least work properly for distros like Fedora and Ubuntu that skip the language selection.