DevHeads.net

F28 System Wide Change: Reduce Initial Setup Redundancy

= System Wide Change: Reduce Initial Setup Redundancy =
<a href="https://fedoraproject.org/wiki/Changes/ReduceInitialSetupRedundancy" title="https://fedoraproject.org/wiki/Changes/ReduceInitialSetupRedundancy">https://fedoraproject.org/wiki/Changes/ReduceInitialSetupRedundancy</a>

Change owner(s):
* Michael Catanzaro <mcatanzaro AT gnome DOT org>

Currently there is a high level of redundancy between the Anaconda
installer and gnome-initial-setup. This change aims to eliminate these
redundancies and streamline the initial user experience in Fedora
Workstation.

== Detailed Description ==

Firstly, please note that the effects of this change will be
restricted to Fedora Workstation. We do not propose any changes that
affect alternative Fedora installers (e.g. Calamares) or initial setup
tools (e.g. the initial-setup package, not to be confused with
gnome-initial-setup).

A few years ago, Fedora Workstation developers discussed with Anaconda
developers the redundancy between many Anaconda settings and
gnome-initial-setup. The Anaconda developers responded by added a
configuration file mechanism, /etc/sysconfig/anaconda, which can be
used to suppress Anaconda spokes if written before Anaconda runs. This
file is also written by Anaconda to tell the initial-setup tool which
Anaconda spokes the user has visited, so that the initial-setup tool
can suppress specific spokes. Although this functionality has existed
for some time now, the Workstation developers until now failed to
follow up and begin using it. We now intend to make use of this
functionality to suppress Anaconda spokes that are redundant with
gnome-initial-setup. Meanwhile, our friends at Endless OS have added a
similar configuration file for gnome-initial-setup that allows us to
suppress some configuration that is best handled in Anaconda. Below,
we discuss what we plan to do with specific settings.

=== Language and Keyboard Layout ===

Although we do not propose it at this time, language and keyboard
layout selection should be presented to the user *before* entering the
live session, as it is currently too difficult for users to change
these settings unless they are already familiar with Fedora, and --
unless you speak English and use a US keyboard -- these settings must
be changed for the live session to be usable. Both Anaconda and
gnome-initial-setup are too late for configuring these settings. (An
exception would be for netinstalls of Fedora Workstation, where
Anaconda is the best place for this configuration.) In the meantime,
until we have a way to prompt users for these settings earlier than
Anaconda, these panels should be removed from gnome-initial-setup,
because Anaconda is clearly a better place than gnome-initial-setup
for this configuration. (This would affect gnome-initial-setup when
creating the first user account. Additional user accounts created
later would still receive these panels in gnome-initial-setup.)

=== Time and Date ===

We want to remove the time and date spoke from Anaconda, since it is
largely redundant with the timezone page in gnome-initial-setup.
However, it might be necessary to remove this page from
gnome-initial-setup instead, as previously there have been technical
concerns raised regarding the necessity of configuring the system
clock before running the installer. This choice will be based on
technical feedback from the Fedora developer community.

=== Network ===

We will remove the network configuration spoke from Anaconda.
Currently this spoke only allows configuring the system hostname, but
it places restrictions on the possible characters in the hostname that
do not match the restrictions used by Fedora Workstation. Fedora
Workstation uses systemd-hostnamed to allow "pretty" hostnames with
Unicode characters and spaces, which we expect to be displayed
properly and consistently in the user interface, but the Anaconda
configuration does not follow this pattern. Additionally, exposing the
hostname as network configuration is confusing. We may consider adding
a simpler "Computer Name" setting that allows "pretty" characters and
is not presented as a networking setting in the future, but it does
not seem necessary to prompt the user to set a hostname at all.

Note: this applies only to USB install, obviously not to netinstall.
We will need some way to differentiate between the two when writing
the Anaconda configuration file.

=== User Account ===

Currently, users have the option of creating the initial user account
in Anaconda, or not. Anaconda does not require this if the user sets a
root password. Users who do not create a user account in Anaconda are
required to create a user account later, by gnome-initial-setup. This
means we currently have two different ways of creating the first user
account in Workstation, with (potentially) two different sets of bugs.
Since Anaconda allows configuring whether the initial user is added to
the wheel group, it also means some initial users will be in wheel and
others will not. We will remove the user account creation spoke in
Anaconda. All users will create the first user account using
gnome-initial-setup, and all initial users will be added to the wheel
group. Of course, this can be easily changed after installation if
desired.

=== Root Account ===

Currently, users have the option of setting a root password in
Anaconda, or not. Anaconda does not require this if the user creates
an initial user account and selects the option to add it to the wheel
group. We will remove the root password creation spoke. All
Workstation installs will have no root password set by default, as in
Ubuntu. Having a root password is not useful for nontechnical users,
and it is confusing to ask users to create multiple passwords. Because
the initial user created by gnome-initial-setup will be added to the
wheel group, all administrative functions will continue to be
available within the desktop environment via Polkit. Additionally, the
initial user will have sudo access to run commands as root. Of course,
a root password can be set after installation using `sudo passwd`.

== Scope ==
* Proposal owners:
Provide a default /etc/config/anaconda file for Fedora Workstation.
This could be e.g. shipped in the gnome-initial-setup package or
written by the firstboot tool before Anaconda runs.

* Other developers:
Anaconda developers to review UI. QA team to review installation tests.

* Release engineering: #6878 [ <a href="https://pagure.io/releng/issue/6878" title="https://pagure.io/releng/issue/6878">https://pagure.io/releng/issue/6878</a> ]
** List of deliverables: No changes needed

* Policies and guidelines:
No changes needed

* Trademark approval:
N/A (not needed for this Change)