From mboxrd@z Thu Jan 1 00:00:00 1970 From: myglc2 Subject: [PATCH] doc: "Introduction" revise and add figure. Date: Thu, 17 Mar 2016 21:53:59 -0400 Message-ID: <87io0k8saw.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57553) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1agjZc-0006Dj-TD for guix-devel@gnu.org; Thu, 17 Mar 2016 21:51:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1agjZV-0007Gc-EM for guix-devel@gnu.org; Thu, 17 Mar 2016 21:51:32 -0400 Received: from plane.gmane.org ([80.91.229.3]:55088) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1agjZU-0007GY-Pg for guix-devel@gnu.org; Thu, 17 Mar 2016 21:51:25 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1agjZS-0002TR-Ic for guix-devel@gnu.org; Fri, 18 Mar 2016 02:51:22 +0100 Received: from c-73-167-118-254.hsd1.ma.comcast.net ([73.167.118.254]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 18 Mar 2016 02:51:22 +0100 Received: from myglc2 by c-73-167-118-254.hsd1.ma.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 18 Mar 2016 02:51:22 +0100 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-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Makes the intro read as shown below. Figure attached. Comments welcome. - George 1 Introduction ************** The purpose of GNU Guix(1) is to allow users to easily install, upgrade, and remove free(2) GNU and non-GNU software. Guix can be installed stand-alone (*note System Installation::) or on top of an exiting GNU/Linux system (*note Installation::). When installed stand-alone, Guix provides a distribution of the GNU System consisting entirely of free GNU and non-GNU software, the “Guix System Distribution” or “GuixSD”, (*note GNU Distribution::). Key Guix components and features are shown and discussed below: Guix Feature Diagram. Guix uses a “build daemon” to build and install software packages (*note Setting Up the Daemon::). Packages can be built using developer source code or installed using pre-built package “substitutes” from elsewhere, for example from the Guix Hydra build farm, ‘hydra.gnu.org’ (*note Substitutes::). This frees users from dependence on others while providing the benefits of using pre-built packages if they are available. Guix installs software packages in a special directory, “the store”, by default ‘/gnu/store’. When a user installs packages, Guix makes them available to that user by creating a “per-user profile” of symbolic links into the store (*note Features::). When GuixSD is installed, the packages one would expect for basic user and administrator tasks (plus additional globally-installed packages, if any) are made available in the “system profile” (*note Using the Configuration System::). When Guix is installed on an existing GNU/Linux system, the existing system’s package manager provides the system profile and system services. In GuixSD, Guix “system configuration” manages the system profile and system services and supports declarative configuration, transactional instantiation, and rollback. Installed either way, Guix can produce GuixSD virtual machines, disk images, and disk installs (*note System Configuration::). Guix “package management” differs from typical GNU/Linux package management by focusing on users instead of system administrators. Guix enables each user to independently configure, install, upgrade, or rollback packages for their own use. This allows users to create software environments that extend, update, or replace the packages in the system profile (*note Package Management::). This, in turn, frees system administrators from the requirement to meet all user’s needs with the system profile. Guix includes command-line interfaces for package management (*note Invoking guix package::) and system configuration (*note Invoking guix system::). Guix provides an emacs user interface for package management, system configuration, and package recipes (*note Emacs Interface::). Guix is implemented primarily in GNU Guile and provides Scheme application programming interfaces (APIs) (*note Programming Interface::) and utilities (*note Utilities::) that simplify software packaging. Key Guix features, such as _declarative_ system configuration, transactional upgrade/rollback, and garbage collection, are implemented using a functional package management approach. The term “functional” refers to a specific package management discipline pioneered by Nix (*note Acknowledgments::) in which 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 a directory of its own. The directory name contains a hash of all the inputs used to build that package; thus, changing an input yields a different directory name. ---------- Footnotes ---------- (1) “Guix” is pronounced like “geeks”, or “ɡiːks” using the international phonetic alphabet (IPA). (2) The term “free” here refers to the freedom provided to users of that software (http://www.gnu.org/philosophy/free-sw.html). --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-doc-Introduction-revise-and-add-figure.patch Content-Transfer-Encoding: 8bit >From 53167523bc190125fb175e2f67ef9600018b9111 Mon Sep 17 00:00:00 2001 From: George Clemmer Date: Thu, 17 Mar 2016 20:13:05 -0400 Subject: [PATCH] doc: "Introduction" revise and add figure. * doc.am: add figure. * doc/guix.texi: ("Introduction"): revise and add figure. Describe key components and features from top-down. Introduce key components and terminology. ("various other sections") Align terminology: build daemon, the store, per-user profile, system profile. * doc/images/introduction.dot: figure source, included for reference. * doc/images/introduction.png: figure, commiting 'dot -Tpng' output because doc.am DOT_OPTIONS makes a mess of it. Alternative: more mods to doc.am. --- doc.am | 3 +- doc/guix.texi | 168 ++++++++++++++++++++++++++++---------------- doc/images/introduction.dot | 107 ++++++++++++++++++++++++++++ doc/images/introduction.png | Bin 0 -> 28524 bytes 4 files changed, 217 insertions(+), 61 deletions(-) create mode 100644 doc/images/introduction.dot create mode 100644 doc/images/introduction.png diff --git a/doc.am b/doc.am index a1eabad..ca3a222 100644 --- a/doc.am +++ b/doc.am @@ -61,7 +61,8 @@ doc/os-config-%.texi: gnu/system/examples/%.tmpl infoimagedir = $(infodir)/images dist_infoimage_DATA = \ $(DOT_FILES:%.dot=%.png) \ - doc/images/coreutils-size-map.png + doc/images/coreutils-size-map.png \ + doc/images/introduction.png # Try hard to obtain an image size and aspect that's reasonable for inclusion # in an Info or PDF document. diff --git a/doc/guix.texi b/doc/guix.texi index b36be05..4fb01b6 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -249,55 +249,100 @@ Coding Style @node Introduction @chapter Introduction -GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks'' -using the international phonetic alphabet (IPA).} is a functional -package management tool for the GNU system. Package management consists -of all activities that relate to building packages from sources, -honoring their build-time and run-time dependencies, -installing packages in user environments, upgrading installed packages -to new versions or rolling back to a previous set, removing unused -software packages, etc. +@cindex purpose +@cindex Guix +The purpose of GNU Guix@footnote{``Guix'' is pronounced like +``geeks'', or ``ɡiːks'' using the international phonetic alphabet +(IPA).} is to allow users to easily install, upgrade, and remove +free@footnote{The term ``free'' here refers to the +@url{http://www.gnu.org/philosophy/free-sw.html,freedom provided to +users of that software}.} GNU and non-GNU software. -@cindex functional package management -The term @dfn{functional} refers to a specific package management -discipline pioneered by Nix (@pxref{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 @dfn{containers}), where only their -explicit inputs are visible. - -@cindex store -The result of package build functions is @dfn{cached} in the file -system, in a special directory called @dfn{the store} (@pxref{The -Store}). Each package is installed in a directory of its own in the -store---by default under @file{/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 (@pxref{Features}). - -Guix has a command-line interface, which allows users to build, install, -upgrade, and remove packages, as well as a Scheme programming interface. +Guix can be installed stand-alone (@pxref{System Installation}) or on +top of an exiting GNU/Linux system (@pxref{Installation}). +When installed stand-alone, Guix provides a distribution of the GNU +System consisting entirely of free GNU and non-GNU software, the +@dfn{Guix System Distribution} or @dfn{GuixSD}, (@pxref{GNU +Distribution}). @cindex Guix System Distribution @cindex GuixSD -Last but not least, Guix is used to build a distribution of the GNU -system, with many GNU and non-GNU free software packages. The Guix -System Distribution, or GNU@tie{}GuixSD, takes advantage of the core -properties of Guix at the system level. With GuixSD, users -@emph{declare} all aspects of the operating system configuration, and -Guix takes care of instantiating that configuration in a reproducible, -stateless fashion. @xref{GNU Distribution}. + +Key Guix components and features are shown and discussed below: + +@image{images/introduction,6in,,Guix Feature Diagram.} + +@cindex substitutes +@cindex build daemon +Guix uses a @dfn{build daemon} to build and install software packages +(@pxref{Setting Up the Daemon}). Packages can be built using developer +source code or installed using pre-built package @dfn{substitutes} from +elsewhere, for example from the Guix Hydra build farm, +@code{hydra.gnu.org} (@pxref{Substitutes}). This frees users from +dependence on others while providing the benefits of using pre-built +packages if they are available. + +@cindex the store +Guix installs software packages in a special directory, @dfn{the store}, +by default @file{/gnu/store}. +@cindex per-user profile +When a user installs packages, Guix makes them available to that user by +creating a @dfn{per-user profile} of symbolic links into the store +(@pxref{Features}). When GuixSD is installed, the packages one would +expect for basic user and administrator tasks (plus additional +globally-installed packages, if any) are made available in the +@dfn{system profile} (@pxref{Using the Configuration System}). +@cindex system profile + +@cindex system services +@cindex system configuration +When Guix is installed on an existing GNU/Linux system, the existing +system's package manager provides the system profile and system +services. In GuixSD, Guix @dfn{system configuration} manages the system +profile and system services and supports declarative configuration, +transactional instantiation, and rollback. Installed either way, Guix +can produce GuixSD virtual machines, disk images, and disk installs +(@pxref{System Configuration}). + +@cindex package management +Guix @dfn{package management} differs from typical GNU/Linux package +management by focusing on users instead of system administrators. Guix +enables each user to independently configure, install, upgrade, or +rollback packages for their own use. This allows users to create +software environments that extend, update, or replace the packages in +the system profile (@pxref{Package Management}). This, in turn, frees +system administrators from the requirement to meet all user's needs with +the system profile. + +Guix includes command-line interfaces for package management +(@pxref{Invoking guix package}) and system configuration +(@pxref{Invoking guix system}). Guix provides an emacs user interface +for package management, system configuration, and package recipes +(@pxref{Emacs Interface}). Guix is implemented primarily in GNU Guile +and provides Scheme application programming interfaces (APIs) +(@pxref{Programming Interface}) and utilities (@pxref{Utilities}) that +simplify software packaging. + +@cindex functional package management +Key Guix features, such as @emph{declarative} system configuration, +transactional upgrade/rollback, and garbage collection, are implemented +using a functional package management approach. The term +@dfn{functional} refers to a specific package management discipline +pioneered by Nix (@pxref{Acknowledgments}) in which 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 @dfn{containers}), where +only their explicit inputs are visible. The result of package build +functions is @dfn{cached} in a directory of its own. The directory name +contains a hash of all the inputs used to build that package; thus, +changing an input yields a different directory name. @c ********************************************************************* @node Installation @@ -308,10 +353,9 @@ GNU Guix is available for download from its website at software requirements of Guix, as well as how to install it and get ready to use it. -Note that this section is concerned with the installation of the package -manager, which can be done on top of a running GNU/Linux system. If, -instead, you want to install the complete GNU operating system, -@pxref{System Installation}. +Note that this section describes how to install Guix on top of a running +GNU/Linux system. If, instead, you want a stand-alone install of the +complete GNU operating system, @pxref{System Installation}. @menu * Binary Installation:: Getting Guix running in no time! @@ -578,7 +622,7 @@ used as well as version numbers of the dependencies @node Setting Up the Daemon @section Setting Up the Daemon -@cindex daemon +@cindex build daemon Operations such as building a package or running the garbage collector are all performed by a specialized process, the @dfn{build daemon}, on behalf of clients. Only the daemon may access the store and its @@ -1178,8 +1222,9 @@ own directory---something that resembles (note that Guix comes with an Emacs extension to shorten those file names, @pxref{Emacs Prettify}.) +@cindex per-user profile Instead of referring to these directories, users have their own -@dfn{profile}, which points to the packages that they actually want to +@dfn{per-user profile}, which points to the packages that they actually want to use. These profiles are stored within each user's home directory, at @code{$HOME/.guix-profile}. @@ -2935,11 +2980,11 @@ with @code{build-expression->derivation} (@pxref{Derivations, @node The Store @section The Store -@cindex store +@cindex the store @cindex store items @cindex store paths -Conceptually, the @dfn{store} is the place where derivations that have +Conceptually, @dfn{the store} is the place where derivations that have been built successfully are stored---by default, @file{/gnu/store}. Sub-directories in the store are referred to as @dfn{store items} or sometimes @dfn{store paths}. The store has an associated database that @@ -5600,8 +5645,8 @@ users of that software}.}. The distribution can be installed on its own (@pxref{System Installation}), but it is also possible to install Guix as a package manager on top of an installed GNU/Linux system (@pxref{Installation}). To distinguish -between the two, we refer to the standalone distribution as the Guix -System Distribution, or GuixSD. +between the two, we refer to the standalone distribution as the @dfn{Guix +System Distribution}, or @dfn{GuixSD.} The distribution provides core GNU packages such as GNU libc, GCC, and Binutils, as well as many GNU and non-GNU applications. The complete @@ -5662,9 +5707,8 @@ to join! @xref{Contributing}, for information about how you can help. @node System Installation @section System Installation -@cindex Guix System Distribution -This section explains how to install the Guix System Distribution -on a machine. The Guix package manager can +This section explains how to make a stand-alone installation of Guix +on a machine. Guix can also be installed on top of a running GNU/Linux system, @pxref{Installation}. @@ -6118,7 +6162,9 @@ fields), and how to @dfn{instantiate} the operating system using @unnumberedsubsubsec Globally-Visible Packages @vindex %base-packages +@cindex system profile The @code{packages} field lists packages that will be globally visible +(included in the @dfn{system profile}) on the system, for all user accounts---i.e., in every user's @code{PATH} environment variable---in addition to the per-user profiles (@pxref{Invoking guix package}). The @var{%base-packages} variable @@ -6350,8 +6396,9 @@ For instance, a valid value may look like this: A string denoting the contents of the @file{/etc/issue} file, which is displayed when users log in on a text console. +@cindex system profile @item @code{packages} (default: @var{%base-packages}) -The set of packages installed in the global profile, which is accessible +The set of packages installed in the system profile, which is accessible at @file{/run/current-system/profile}. The default set includes core utilities and it is good practice to @@ -7222,7 +7269,7 @@ gateway. Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network management daemon that aims to simplify wired and wireless networking. -This service adds the @var{wicd} package to the global profile, providing +This service adds the @var{wicd} package to the system profile, providing several commands to interact with the daemon and configure networking: @command{wicd-client}, a graphical user interface, and the @command{wicd-cli} and @command{wicd-curses} user interfaces. @@ -10235,6 +10282,7 @@ executable file names, passed as gexps, and adds them to the set of setuid-root programs on the system (@pxref{Setuid Programs}). @end defvr +@cindex system profile @defvr {Scheme Variable} profile-service-type Type of the service that populates the @dfn{system profile}---i.e., the programs under @file{/run/current-system/profile}. Other services can diff --git a/doc/images/introduction.dot b/doc/images/introduction.dot new file mode 100644 index 0000000..4828725 --- /dev/null +++ b/doc/images/introduction.dot @@ -0,0 +1,107 @@ +// Guix intro figure showing GuixSD, Guix on GNU/Linux, Hydra, etc. +digraph G { + compound=true + size="6,6" + edge [fontname = helvetica fontsize=18] + graph [fontname = helvetica fontsize=18] + node [fontname = helvetica fontsize=18] + ranksep="0.8 equally" + // Developer + Hydra + { node + [shape=box style = filled + fillcolor="white" color = transparent] + pkgsource [label = "Source\nCode"] + substitutes [label = "Package\nSubstitutes"] + } + subgraph cluster_pkgsource { + label = "Developer" + labelloc = "t" + style = filled fillcolor=azure2 color = transparent + pkgsource + } + subgraph cluster_hydra { + label = "Guix Hydra" + style = filled fillcolor= gold color = transparent + substitutes + } + // GuixSD + { node + [shape=box style = filled fillcolor=white color = transparent] + spkgs [label = "System\nProfile"] + guix2 [label="Guix"] + u1pkgs [label = "Per-user\nProfile"] + user [label = "User" fillcolor=pink] + } + { node + [shape=box style ="filled" + fillcolor=gold color = transparent] + guixd [label = "Build Daemon"] + guixs [label = "System Services"] + } + subgraph cluster_guixSD { + label = "Guix System Distribution (GuixSD)" + labelloc = "t" + style = filled fillcolor= azure2 color = transparent + user -> guix2 + user -> u1pkgs + user -> spkgs + subgraph cluster_guixstore { + label = "The Store" + labeljust = "l" + labelloc = "b" + style = filled fillcolor= gold color = transparent + { rank=same guix2 -> u1pkgs -> spkgs [style=invis]} + } + guix2 -> guixd + u1pkgs -> guixd [dir = back ltail=cluster_guixstore ] + spkgs -> guixs [dir = none ltail=cluster_guixstore ] + } + // Guix on GNU/Linux + { node + [shape=box style = filled + fillcolor="white" color = transparent] + du1pkgs [label = "Per-user\nProfile"] + duser [label = "User" fillcolor=pink] + guix [label="Guix"] + dpkgs [label = "System\nProfile"] + } + { node + [shape=box style ="filled" + fillcolor=gold color = transparent] + guixd2 [label = "Build Daemon"] + } + { node [shape=box style = filled fillcolor=darkseagreen2 color = transparent] + debs [label = "System Services"] + } + subgraph cluster_guixdeb { + label = "Guix Installed on GNU/Linux" + labelloc = "t" + style = filled fillcolor= azure2 color = transparent + duser -> dpkgs + duser -> guix + duser -> du1pkgs + subgraph cluster_debstore { + label = "The Store" + labeljust = "l" + labelloc = "b" + style = filled fillcolor= gold color = transparent + du1pkgs + guix + } + { rank=same guixd2 -> debs [style=invis] } + du1pkgs -> guixd2 [dir = back ltail=cluster_debstore ] + guix -> guixd2 + subgraph cluster_deb { + label = "GNU/Linux" + labelloc = "b" + style = filled fillcolor=darkseagreen2 color = transparent + dpkgs -> debs [dir = none ltail=cluster_deb ] + } + } + // connections between Source, Hydra Guix & GuixSD + pkgsource -> substitutes [lhead=cluster_hydra ltail=cluster_pkgsource] + pkgsource -> guixd [ltail=cluster_pkgsource] + pkgsource -> guixd2 [ltail=cluster_pkgsource] + substitutes -> guixd [ltail=cluster_hydra] + substitutes -> guixd2 [ltail=cluster_hydra] +} diff --git a/doc/images/introduction.png b/doc/images/introduction.png new file mode 100644 index 0000000000000000000000000000000000000000..95db85fcd12f318fe20f7c1cd60d70ea9a37e2bb GIT binary patch literal 28524 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