guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] doc: "Introduction" revise and add figure.


From: Ludovic Courtès
Subject: Re: [PATCH] doc: "Introduction" revise and add figure.
Date: Sat, 26 Mar 2016 00:00:30 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Hi!

After much hesitation and questions, I ended up pushing something
similar in spirit to what you suggest, but with my own words (commit
6f773606812075ee5c6747c3b7f95285254e48f2).

The suggestion you made of describing features “top-down” made a lot of
sense to me, esp. compared to the previous one which insisted on the
“functional paradigm”, which is not really the first thing newcomers are
interested in.  However, I felt a few things needed a different
explanation.

Also, while I agree that illustrations would be helpful, I’m not
satisfied with the diagram you proposed.  I think the meaning of arrows
is unclear, and it also puts too much emphasis on Hydra, “system
profiles”, and “system services.”

Anyway, below is the intro as it currently appears in ‘master’.

Thank you!

Ludo’.


GNU Guix(1) is a package management tool for the GNU system.  Guix makes
it easy for unprivileged users to install, upgrade, or remove packages,
to roll back to a previous package set, to build packages from source,
and generally assists with the creation and maintenance of software
environments.

   Guix provides a command-line package management interface (*note
Invoking guix package::), a set of command-line utilities (*note
Utilities::), a visual user interface in Emacs (*note Emacs
Interface::), as well as Scheme programming interfaces (*note
Programming Interface::).  Its “build daemon” is responsible for
building packages on behalf of users (*note Setting Up the Daemon::) and
for downloading pre-built binaries from authorized sources (*note
Substitutes::).

   Guix includes package definitions for many GNU and non-GNU packages,
all of which respect the user’s computing freedom
(https://www.gnu.org/philosophy/free-sw.html).  It is _extensible_:
users can write their own package definitions (*note Defining
Packages::) and make them available as independent package modules
(*note Package Modules::).  It is also _customizable_: users can
_derive_ specialized package definitions from existing ones, including
from the command line (*note Package Transformation Options::).

   You can install GNU Guix on top of an existing GNU/Linux system where
it complements the available tools without interference (*note
Installation::), or you can use it as part of the standalone “Guix
System Distribution” or GuixSD (*note GNU Distribution::).  With
GNU GuixSD, you _declare_ all aspects of the operating system
configuration and Guix takes care of instantiating the configuration in
a transactional, reproducible, and stateless fashion (*note System
Configuration::).

   Under the hood, Guix implements the “functional package management”
discipline pioneered by Nix (*note Acknowledgments::).  In Guix, the
package build and installation process is seen as a _function_, in the
mathematical sense.  That function takes inputs, such as build scripts,
a compiler, and libraries, and returns an installed package.  As a pure
function, its result depends solely on its inputs—for instance, it
cannot refer to software or scripts that were not explicitly passed as
inputs.  A build function always produces the same result when passed a
given set of inputs.  It cannot alter the environment of the running
system in any way; for instance, it cannot create, modify, or delete
files outside of its build and installation directories.  This is
achieved by running build processes in isolated environments (or
“containers”), where only their explicit inputs are visible.

   The result of package build functions is “cached” in the file system,
in a special directory called “the store” (*note The Store::).  Each
package is installed in a directory of its own in the store—by default
under ‘/gnu/store’.  The directory name contains a hash of all the
inputs used to build that package; thus, changing an input yields a
different directory name.

   This approach is the foundation for the salient features of Guix:
support for transactional package upgrade and rollback, per-user
installation, and garbage collection of packages (*note Features::).

   ---------- Footnotes ----------

   (1) “Guix” is pronounced like “geeks”, or “ɡiːks” using the
international phonetic alphabet (IPA).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]