GNOME Bugzilla – Bug 793501
Fedora patches to allow reducing initial setup redundancy
Last modified: 2018-04-03 02:33:06 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.
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.
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.
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. ;)
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.)
> 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.
(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.
(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.
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
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.
(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.
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.
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.
(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.
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.
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.
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.
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
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.