diff options
| -rw-r--r-- | website/posts/gnu-guix-1.0.1-released.md | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/website/posts/gnu-guix-1.0.1-released.md b/website/posts/gnu-guix-1.0.1-released.md new file mode 100644 index 0000000..26651fb --- /dev/null +++ b/website/posts/gnu-guix-1.0.1-released.md @@ -0,0 +1,211 @@ +title: GNU Guix 1.0.1 released +date: 2019-05-17 17:17 +author: Ludovic Courtès +slug: gnu-guix-1.0.1-released +tags: Releases, System tests +--- +We are pleased to announce the release of GNU Guix version 1.0.1. This +new version fixes bugs in the [graphical +installer](https://www.gnu.org/software/guix/manual/en/html_node/Guided-Graphical-Installation.html) +for the standalone Guix System. + +The release comes with [ISO-9660 installation +images](https://www.gnu.org/software/guix/manual/en/html_node/System-Installation.html), +a [virtual machine +image](https://www.gnu.org/software/guix/manual/en/html_node/Running-Guix-in-a-VM.html), +and with tarballs to install the package manager on top of your +GNU/Linux distro, either [from +source](https://www.gnu.org/software/guix/manual/en/html_node/Requirements.html) +or [from +binaries](https://www.gnu.org/software/guix/manual/en/html_node/Binary-Installation.html). +Guix users can update by running `guix pull`. + +It’s been just over two weeks since we [announced +1.0.0](https://www.gnu.org/software/guix/blog/2019/gnu-guix-1.0.0-released/)—two +weeks and 702 commits by 39 people already! + +This is primarily a bug-fix release, specifically focusing on issues in +the graphical installer for the standalone system: + + - The most [embarrassing bug](https://issues.guix.gnu.org/issue/35541) + would lead the graphical installer to produce a configuration where + [`%base-packages`](https://www.gnu.org/software/guix/manual/en/html_node/Using-the-Configuration-System.html#index-_0025base_002dpackages) + was omitted from the `packages` field. Consequently, the freshly + installed system would not have the usual commands in `$PATH`—`ls`, + `ps`, etc.—and Xfce would fail to start for that reason. See below + for a “post-mortem” analysis. + - The `wpa-supplicant` service would [sometimes fail to + start](https://issues.guix.gnu.org/issue/35550) in the installation + image, thereby breaking network access; this is now fixed. + - The installer [now](https://issues.guix.gnu.org/issue/35540) allows + you to toggle password and passphrase visibility, and it [no + longer](https://issues.guix.gnu.org/issue/35716) restricts their + length. + - The installer [can now + create](https://issues.guix.gnu.org/issue/35716) Btrfs file + systems. + - `network-manager-applet` is [now](https://issues.guix.gnu.org/35554) + part of + [`%desktop-services`](https://www.gnu.org/software/guix/manual/en/html_node/Desktop-Services.html#index-_0025desktop_002dservices), + and thus readily usable not just from GNOME but also from Xfce. + - The + [`NEWS`](https://git.savannah.gnu.org/cgit/guix.git/tree/NEWS?h=version-1.0.1) + file has more details, but there were also minor bug fixes for + [`guix environment`](https://bugs.gnu.org/35618), [`guix + search`](https://bugs.gnu.org/35588), and [`guix + refresh`](https://bugs.gnu.org/35684). + +A couple of new features were reviewed in time to make it into 1.0.1: + + - [`guix system + docker-image`](https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-system.html) + now produces an OS image with an “entry point”, which makes it + easier to use than before. + - [`guix system + container`](https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-system.html) + has a new `--network` option, allowing the container to share + networking access with the host. + - 70 new packages were added and 483 packages were updated. + - Translations were updated as usual and we are glad to announce a + 20%-complete [Russian translation of the + manual](https://www.gnu.org/software/guix/manual/ru/html_node). + + +# Recap of [bug #35541](https://issues.guix.gnu.org/issue/35541) + +The 1.0.1 release was primarily motivated by [bug +#35541](https://issues.guix.gnu.org/issue/35541), which was reported +shortly after the 1.0.0 release. If you installed Guix System with the +[graphical +installer](https://www.gnu.org/software/guix/manual/en/html_node/Guided-Graphical-Installation.html), +chances are that, because of this bug, you ended up with a system where +all the usual GNU/Linux commands—`ls`, `grep`, `ps`, etc.—were _not_ in +`$PATH`. That in turn would also prevent Xfce from starting, if you +chose that desktop environment for your system. + +We quickly published in the [system installation +instructions](https://www.gnu.org/software/guix/manual/en/html_node/Guided-Graphical-Installation.html) +a note explaining how to work around the issue: + + - First, install packages that provide those commands, along with the + text editor of your choice (for example, `emacs` or `vim`): + + ``` + guix install coreutils findutils grep procps sed emacs vim + ``` + + - At this point, the essential commands you would expect are + available. Open your configuration file with your editor of choice, + for example `emacs`, running as root: + + ``` + sudo emacs /etc/config.scm + ``` + + - Change the `packages` field to add the “base packages” to the list of + globally-installed packages, such that your configuration looks like + this: + + ```scheme + (operating-system + ;; … snip … + (packages (append (list (specification->package "nss-certs")) + %base-packages)) + ;; … snip … + ) + ``` + + - Reconfigure the system so that your new configuration is in effect: + + ``` + guix pull && sudo guix system reconfigure /etc/config.scm + ``` + +If you already installed 1.0.0, you can perform the steps above to get +all these core commands back. + +Guix is _purely declarative_: if you give it [an operating system +definition](https://www.gnu.org/software/guix/manual/en/html_node/Using-the-Configuration-System.html) +where the “base packages” are not [available +system-wide](https://www.gnu.org/software/guix/manual/en/html_node/Using-the-Configuration-System.html#Globally_002dVisible-Packages), +then it goes ahead and installs precisely that. That’s exactly what +happened with this bug: the installer generated such a configuration and +passed it to `guix system init` as part of the installation process. + +# Lessons learned + +Technically, this is a “trivial” bug: it’s fixed by adding one line to +your operating system configuration and reconfiguring, and the fix for +the installer itself [is also a +one-liner](https://git.savannah.gnu.org/cgit/guix.git/commit/?id=ecb0df6817eb3767e6b4dcf1945f3c2dfbe3b44f). +Nevertheless, it’s obviously a serious bug for the impression it +gives—this is _not_ the user experience we want to offer. So how did such +a serious bug go through unnoticed? + +For several years now, Guix has had a number of automated [_system +tests_](https://www.gnu.org/software/guix/blog/2016/guixsd-system-tests/) +running in virtual machines (VMs). These tests primarily ensure that +[system +services](https://www.gnu.org/software/guix/manual/en/html_node/Services.html) +work as expected, but some of them [specifically test system +installation](https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/tests/install.scm): +installing to a RAID or encrypted device, with a separate `/home`, using +Btrfs, etc. These tests even run on our [continuous integration +service](http://ci.guix.gnu.org/jobset/guix-master) (search for the +“tests.*” jobs there). + +Unfortunately, those installation tests target the so-called [“manual” +installation +process](https://www.gnu.org/software/guix/manual/en/html_node/Manual-Installation.html), +which is scriptable. They do _not_ test installer’s graphical user +interface. Consequently, testing the user interface (UI) itself was a +manual process. Our attention was, presumably, focusing more on UI +aspects since—so we thought—the actual installation tests were already +taken care of by the system tests. That the generated system +configuration could be syntactically correct but definitely wrong from a +usability viewpoint perhaps didn’t occur to us. The end result is that +the issue went unnoticed. + +The lesson here is that: manual testing should _also_ look for issues in +“unexpected places”, and more importantly, we need automated tests for +the graphical UI. The Debian and Guix installer UIs are similar—both +using the [Newt](https://pagure.io/newt) toolkit. Debian tests its +installer using +[“pre-seeds”](https://wiki.debian.org/DebianInstaller/Preseed), which +are essentially answers to all the questions and choices the UI would +present. We could adopt a similar approach, or we could test the UI +itself at a lower level—reading the screen, and simulating key strokes. +UI testing is notoriously tricky so we’ll have to figure out how to get +there. + +# Conclusion + +Our 1.0 party was a bit spoiled by this bug, and we are sorry that +installation was disappointing to those of you who tried 1.0. We hope +1.0.1 will allow you to try and see what declarative and programmable +system configuration management is like, because that’s where the real +value of Guix System is—the graphical installer is icing on the cake. + +Join us [on `#guix` and on the mailing +lists](https://www.gnu.org/software/guix/contact/)! + + +#### About GNU Guix + +[GNU Guix](https://www.gnu.org/software/guix) is a transactional package +manager and an advanced distribution of the GNU system that [respects +user +freedom](https://www.gnu.org/distros/free-system-distribution-guidelines.html). +Guix can be used on top of any system running the kernel Linux, or it +can be used as a standalone operating system distribution for i686, +x86_64, ARMv7, and AArch64 machines. + +In addition to standard package management features, Guix supports +transactional upgrades and roll-backs, unprivileged package management, +per-user profiles, and garbage collection. When used as a standalone +GNU/Linux distribution, Guix offers a declarative, stateless approach to +operating system configuration management. Guix is highly customizable +and hackable through [Guile](https://www.gnu.org/software/guile) +programming interfaces and extensions to the +[Scheme](http://schemers.org) language. + |
