GNU Guix 1.0.0 released
We are excited to announce the release of GNU Guix version 1.0.0!
The release comes with ISO-9660 installation
images,
a virtual machine
image,
and with tarballs to install the package manager on top of your
GNU/Linux distro, either from
source
or from
binaries.
Guix users can update by running guix pull
.
One-point-oh always means a lot for free software releases. For Guix,
1.0 is the result of seven years of development, with code, packaging,
and documentation contributions made by 260 people, translation work
carried out by a dozen of people, and artwork and web site development
by a couple of individuals, to name some of the activities that have
been happening. During those years we published no less than 19 “0.x”
releases.
We took our time to get there, which is quite unusual in an era where
free software moves so fast. Why did we take this much time? First, it
takes time to build a community around a GNU/Linux distribution, and a
distribution wouldn’t really exist without it. Second, we feel like
we’re contributing an important piece to the GNU operating
system, and that is surely
intimidating and humbling.
Last, we’ve been building something new. Of course we stand on the
shoulders of giants, and in particular Nix,
which brought the functional software deployment paradigm that Guix
implements. But developing Guix has been—and still is!—a challenge in
many ways: it’s a programming
language
design challenge, an
operating
system
design challenge, a challenge for
security,
reproducibility,
bootstrapping,
usability, and more. In other words, it’s been a long but insightful
journey! 🙂
Presumably some of readers are discovering Guix today, so let’s recap
what Guix can do for you as a user. Guix is a complete toolbox for
software deployment in general, which makes it different from most of
the tools you may be familiar with.
This may sound a little abstract so let’s look at concrete use cases:
-
As a user, Guix allows you to install applications and to keep
them
up-to-date:
search for software withguix search
, install it withguix install
, and maintain it up-to-date by regularly runningguix pull
andguix upgrade
. Guix follows a so-called “rolling
release” model, so you can runguix pull
at any time to get the
latest and greatest bits of free software.This certainly sounds familiar, but a distinguishing property here
is dependability: Guix is transactional, meaning that you can at
any time roll back to a previous “generation” of your package set
withguix package --roll-back
, inspect differences withguix package -l
, and so on.Another useful property is reproducibility: Guix allows you to
deploy the exact same software environment on different machines
or at different points in time thanks toguix describe
andguix pull
.This, coupled with the fact that package management operations do
not require root access, is invaluable notably in the context of
high-performance computing (HPC) and reproducible science, which the
Guix-HPC effort has been
focusing on. -
As a developer, we hope you’ll enjoy
guix environment
,
which allows you to spawn one-off software environments. Suppose
you’re a GIMP developer: runningguix environment gimp
spawns a
shell with everything you need to hack on GIMP—much quicker than
manually installing its many dependencies.Developers often struggle to push their work to users so they get
quick feedback. Theguix pack
provides an easy way to create container images for use by Docker
& co., or even standalone relocatable
tarballs
that anyone can run, regardless of the GNU/Linux distribution they
use.Oh, and you may also like package transformation
options,
which allow you define package variants from the command line. -
As a system administrator—and actually, we’re all system
administrators of sorts on our laptops!—, Guix’s declarative and
unified approach to configuration management should be handy. It
surely is a departure from what most people are used to, but it is
so reassuring: one configuration file is enough to specify all the
aspects of the system
config—services,
file systems, locale, accounts—all in the same language.That makes it surprisingly easy to deploy otherwise complex services
such as applications that depend on Web services. For instance,
setting up
CGit
or
Zabbix
is a one-liner, even though behind the scenes that involves setting
up nginx, fcgiwrap, etc. We’d love to see to what extent this helps
people self-host services—sort of similar to what
FreedomBox and
YunoHost have been focusing on.With
guix system
you can instantiate a configuration on your machine, or in a virtual
machine (VM) where you can test it, or in a container. You can also
provision ISO images, VM images, or container images with a complete
OS, from the same config, all withguix system
.
The quick reference
card shows the
important commands. As you start diving deeper into Guix, you’ll
discover that many aspects of the system are exposed using consistent
Guile programming interfaces:
package
definitions,
system
services,
the “init” system, and a whole
bunch of system-level libraries. We believe that makes the system very
hackable, and we hope you’ll find it as much fun to play with as we do.
So much for the overview!
For those who’ve been following along, a great many things have changed
over the last 5 months since the 0.16.0
release—99
people contributed over 5,700 commits during that time! Here are the
highlights:
- The ISO installation image now runs a cute text-mode graphical
installer—big
thanks to Mathieu Othacehe for writing it and to everyone who
tested it and improved it! It is similar in spirit to the Debian
installer. Whether you’re a die-hard GNU/Linux hacker or a novice
user, you’ll certainly find that this makes system installation
much less tedious than it was! The installer is fully translated
to French, German, and Spanish. - The new VM
image
better matches user expectations: whether you want to tinker with
Guix System and see what it’s like, or whether you want to use it
as a development environment, this VM image should be more directly
useful. - The user interface was improved: aliases for common operations
such asguix search
andguix install
are now available, diagnostics are now colorized, more operations
show a progress bar, there’s a new--verbosity
option recognized
by all commands, and most commands are now “quiet” by default. - There’s a new
--with-git-url
package transformation
options,
that goes with--with-branch
and--with-commit
. - Guix now has a first-class, uniform mechanism to configure
keyboard
layout—a
long overdue addition. Related to that, Xorg
configuration
has been streamlined with the newxorg-configuration
record. - We introduced
guix pack -R
a while
back:
it creates tarballs containing relocatable application bundles
that rely on user namespaces. Starting from 1.0,guix pack -RR
(like “reliably relocatable”?) generates relocatable binaries that
fall back to PRoot on systems where
user
namespaces
are not supported. - More than 1,100 packages were added, leading to close to 10,000
packages, 2,104
packages were updated, and several system services were
contributed. - The manual has been fully translated to
French,
the
German
and Spanish
translations are nearing completion, and work has begun on a
Simplified
Chinese
translation. You can help translate the manual into your
language
by joining the Translation
Project.
That’s a long list already, but you can find more details in the
NEWS
file.
One-point-oh is a major milestone, especially for those of us who’ve
been on board for several years. But with the wealth of ideas we’ve
been collecting, it’s definitely not the end of the road!
If you’re interested in “devops” and distributed deployment, you will
certainly be happy to help in that area, those interested in OS
development might want to make the
Shepherd more flexible and
snappy, furthering integration with Software
Heritage
will probably be #1 on the to-do list of scientists concerned with
long-term reproducibility, programming language tinkerers may want to
push
G-expressions
further, etc. Guix 1.0 is a tool that’s both serviceable for one’s
day-to-day computer usage and a great playground for the tinkerers among
us.
Whether you want to help on design, coding, maintenance, system
administration, translation, testing, artwork, web services, funding,
organizing a Guix install party… your contributions are
welcome!
We’re humans—don’t hesitate to get in touch with
us, and enjoy Guix 1.0!
About GNU Guix
GNU Guix is a transactional package
manager and an advanced distribution of the GNU system that respects
user
freedom.
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
programming interfaces and extensions to the
Scheme language.