From mboxrd@z Thu Jan 1 00:00:00 1970 From: Danny Milosavljevic Subject: Re: Graphical Installer - Call for Testing. Date: Wed, 5 Jul 2017 19:27:31 +0200 Message-ID: <20170705192731.5fdd6933@scratchpost.org> References: <20170104075928.GA23509@jocasta.intra> <87eg07cybi.fsf@gmail.com> <20170113063511.GA18383@jocasta.intra> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:45922) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSo5V-0007GI-JM for guix-devel@gnu.org; Wed, 05 Jul 2017 13:27:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSo5R-0001u2-Ho for guix-devel@gnu.org; Wed, 05 Jul 2017 13:27:41 -0400 Received: from dd1012.kasserver.com ([85.13.128.8]:48110) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dSo5R-0001tB-6y for guix-devel@gnu.org; Wed, 05 Jul 2017 13:27:37 -0400 In-Reply-To: List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Chris Marusich , John Darrington Cc: guix-devel@gnu.org Hi, > * Left-clicking on buttons, entries, etc. had no effect. I expected it > to be equivalent to pressing enter or space. I've implemented this for most things now (except for the status bar at the bottom). > * Left-clicking leaves the clicked square (i.e., row+column > intersection) highlighted, which is visually distracting. Not sure what can be done about this. > * The installer should either guide the user through a linear series of > steps, or explain at the beginning what the user should do. I wasn't > sure what to do at first when I was dropped into the installer. This > doesn't preclude a non-linear path through the installation phases, > but I do think a more guided path would be less confusing. I agree - it was jarring for me as well. > * The installer begins with nothing selected. This contributed to my > initial confusion: what am I supposed to do? I agree - providing reasonable defaults would be very good. The "Install the system" page then should show a summary of it all before doing anything. > * The installer should display a keymap, or a hotkey which displays help > info (like the help page in cfdisk, or top). John added this now. > * I think you made the first letter of some commands bold (like the "C" > in "Continue"), but I didn't notice it until I tried the installation > on a machine with a different monitor. More contrast, or an > underlined character, might help call that out more. Yeah, the HIG standard is underline. Does underline work in curses on the Linux console? Apparently it's always auto-mapped to color. > * I'm not sure how, but I got stuck in a menu loop between "Partition > the disks" and "Choose mount point". Hitting "Continue" and "Go Back" > in any order never took me to any other step, or back to the main > menu. I worked around the issue by getting a shell and rebooting. Yeah, I don't get the nonlinear structure either. > * Partition the disks: when launching cfdisk, consider explaining that > we're going to launch cfdisk to do the actual partitioning, and the > user needs to quit cfdisk to come back and continue the installation. I'm writing guile-parted bindings now :) > * The interface was at times sluggish - there was a noticeable delay > (hundreds of milliseconds) between pressing e.g. the left-arrow key > and the next bottom-menu item being selected. I don't see this when moving around on the page - but I do see it when activating items. It would be better if the screen was cleared or a progress bar shown or something. > * By default, this installer provides a lot of manual control over how > the disks are partitioned, what file systems will be installed, and > what their mount points will be. Perhaps by default we should offer > one or more common configurations - e.g., one partition, containing an > ext4 file system, mounted at / - and move the finer-grained manual > controls into a sub-menu of some kind. For comparison, I've just > installed Ubuntu and Debian today, and both of their installers offer > such simplified paths for installation. - useful if someone does not > know much about that stuff yet or they just want an easy default. There should be defaults - especially when the selected disk is empty, it should just default to a reasonable setup. > * Following that note, if we presented pre-set combinations of > partitions/file systems/mount points, I can imagine adding another > "simple configuration" to that list, >for encrypted home partition, or Yes please. > an entire encrypted disk. Yes please. I do consulting in strange environments often - so basically if the system can't encrypt, I can't use it. > * The installer contains various input text boxes (e.g., for file system > label). These boxes are invisible; a border would help call them out > (I almost didn't realize they existed). John fixed that (they have an opaque background now). >Also, left/right arrow keys > did not scroll left/right, which surprised me, but backspace and > delete worked well enough. Yeah. There's (ncurses form) which should automatically support all that stuff - but the installer doesn't use it. Why? Is (gurses form) more flexible? > * The generated operating system configuration should use file system > UUID or label, if possible, rather than device path. I didn't get that far yet. Is that still the case? > * Choose mount point: since you can also set the label here, maybe > change the title of the section to "Choose file system and mount > point" or something? In the long run, I think this all should be "disk setup" and encompass partitioning, lvm, encryption, file system creation and mount point setup. > * The installer takes a "window within a window" approach for > installation phases. This conflicts with the "replace the whole > window" behavior that occurs when running cfdisk. Writing the parted bindings... :) >I think that using > a "replace the whole window" approach for the whole installer would > help unify the overall look and feel. So, instead of creating a > window within the installer window for the "Partition the disks" > phase, just replace the entire window with the relevant interface for > the sub-menu. I actually like the window-within-window approach, especially since it can show some kind of path or status of where the user is nicely. I wonder whether the nesting works for more than two levels, though. > * Choose mount point: clarify what the actions Check, Write, and > re(Create) mean. I wasn't sure until I tried them all! I think that's cfdisk ? Or where? > * Passphrase entry (for wireless setup): after inputting my wireless > network's passphrase, the message "Successfully initiated > wpa_supplicant" was displayed without a newline on the same line where > I had just put my passphrase, which looked clunky. Yeah, I wonder why the terminal emulator widget for curses isn't used for everything. It's already used by the installer for mkfs like this: (make-window-port ...) (pipe-cmd ...). > * I didn't realize that "enter" performed a different action than > "space." On some menus it seems to matter which one you use, but on > others, it seems like they behave the same. I think clarifying the > keymap/interface will help with this. There's already a function "select-key?" which is supposed to rectify that, although it doesn't test for Space. Why not? I'll just add it ... commit 5cdffcd93415ff9c5d082799734376337ec0cf3e in wip-installer-2 . > * Generate the configuration: for some reason, when I entered this menu, > I was dropped back into the "Allocate disk partitions" menu, which was > confusing. Perhaps I was just confused and hit the wrong button! I don't know - but the non-linear structure confuses me as well. > * Allocate disk partition: label the header. I didn't realize there was > a column for "mount point" until I set up a mount point; a header > would have helped call out the fact that I had not yet set up a mount > point. Commit 8c27950e3a3eeacbfaa944b50df2baebe8de21c8 adds one. > * Install the system: there was a 10-20 second delay after pressing > enter to begin the installation, during which I wasn't sure if > anything was actually being done. Not sure if that's the installer's > fault, though. After that, the installation began. The installation page already uses a window port so it shouldn't be so bad. I didn't test it yet, though. Maybe adding (force-output window-port) at the beginning of install-page-activate-focused-item would help. > * Install the system: there were a lot of ^[[ characters at the start of > the lines which were output in the window showing the progress of the > installation. Also, there was a lot of flashing underneath lines like > "Downloading https://mirror.hydra.gnu.org/... | 3.4 MiB transferred", > as if the underscore symbol was being moved super fast from the start > of the line to the end of the line repeatedly. Yeah, that also happens without the graphical installer. I think the download progress in guix/build/download.scm should be amended to check whether the line actually changed before printing it again. It has some funky macro but then it proceeds to manually repeat the same form twice; also it seems to support to reroute progress display to another port in the middle of the download. Does that count as "already written" then or not? So it's not easy to fix... Quick and dirty: diff --git a/guix/build/download.scm b/guix/build/download.scm index 6ef623334..47be927ab 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -147,6 +147,14 @@ Otherwise return STORE-PATH." (define time-monotonic time-tai)) (else #t)) +(define previous-progress-line #f) +(define (display-line-if-changed line port) + (if previous-progress-line (string=? previous-progress-line line)) + #f + (begin + (set! previous-progress-line line) + (display line port))) + (define* (progress-proc file size #:optional (log-port (current-output-port)) #:key (abbreviation basename)) @@ -184,9 +192,9 @@ used to shorten FILE for display." (seconds->string elapsed) (progress-bar %) %))) (display "\r\x1b[K" log-port) - (display (string-pad-middle left right - (current-terminal-columns)) - log-port) + (display-line-if-changed (string-pad-middle left right + (current-terminal-columns)) + log-port) (flush-output-port log-port) (cont)))) (lambda (transferred cont) @@ -201,9 +209,9 @@ used to shorten FILE for display." (seconds->string elapsed) (byte-count->string transferred)))) (display "\r\x1b[K" log-port) - (display (string-pad-middle left right + (display-line-if-changed (string-pad-middle left right (current-terminal-columns)) - log-port) + log-port) (flush-output-port log-port) (cont)))))))) > * Final step: the installer told me to remove the installation device > and reboot. I followed these instructions by removing the device. > When I tried to reboot, the program crashed with a kernel panic - not > surprising, I guess, since I had removed the entire system out from > under it... This was benign, since I was able to just power cycle my > system, but maybe we need to change the wording or something here? John fixed it I think. > * My opinion is that the reasonable default is to create a user, or at > least give an opportunity to ask for the creation of a user. I > understand this is not what you want in an installer, since you use > LDAP for account info, but I suspect most people would expect this. John did this now.