First of all I want to thank everyone for their input.
I also want to make clear that the hide the menu +
not listening for a keypress at all (aka fastboot) is a
Fedora 30 thing, quoting myself:
"For F29, single OS Fedora Workstation install we get:
1) grub menu hidden by default with a 1 second timeout to press ESC
or F8 to show it
2) grub menu shown with 5 sec timeout after a failed boot
For F30, single OS Fedora Workstation install install we get:
1) grub menu not shown, 0 second timeout, no way to get to the menu
2) grub menu shown with 5 sec timeout after a failed boot"
I understand that some people are worried to not be able
to get to the grub menu when they need to. I hear you and I
share your worries about this.
With that said I want to emphasize out that for F29 you will
still be able to always get the grub menu by pressing F8 at
boot (or ESC on some Asus and Lenovo machines where the
firmware has hijacked F8).
This assumes your keyboard works in grub at all, but if it
doesn't then nothing changes compared to F28.
And we will also show the menu as we used to do in F28
when the previous boot has either failed, or the system was
not shutdown cleanly.
There has been some discussion about what defines a successful
boot. I've been thinking a bit about this and my plan is to
set the boot_success flag (which grub itself will clear each
boot) from a systemd timer which is part of the users
gnome systemd user session and runs after 2 minutes.
So we will check that the user successfully logged in and that
his gnome3 session has lasted at least 2 minutes.
This means that the user will be able to get the grub menu by
simply rebooting from the gdm screen rather then logging in,
or if gdm does not work just shutting down the machine either
by a short press and letting systemd do its thing, or by
a forced-power off.
Last but not least several people have mentioned that this all
needs to be documented properly. I completely agree and I plan
to write docs about all of this, but I need to do the code first
because of the various freezes and because it is easier to
document things once they are finished. Note I hereby _promise_
that I write some proper documentation on this once the code