unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Andrew Erlanger <andrew.erlanger@gmail.com>
To: guix-devel@gnu.org
Subject: Thoughts and questions from a newcomer
Date: Mon, 11 Sep 2017 19:25:54 -0400	[thread overview]
Message-ID: <877ex47r7h.fsf@localhost.i-did-not-set--mail-host-address--so-tickle-me> (raw)

Hello, Guix users,

After a bit of love, I've got most of my personal computing environment
running in GuixSD. As I get more comfortable with the system, I hope to
naturally become a developer.

At this point, I have a few thoughts and questions, which I'm looking
for some feedback on, especially where I'm misguided.

It seems that the main problem Guix is trying to address is about state
and side-effects. In modern computers, a program running over here
can affect the execution of a completely unrelated program running over
there because of side-effects. The result is a large amount of
unnecessary complexity. Effectively, the programs have many, many
inputs, and with feedback loops between components, the system can
exhibit chaotic behaivor.

If I'm not mistaken, Guix attempts to provide a way of building
programs so that all inputs to the build process are known exactly.
Assuming that the build is a deterministic process (which I
hope it is!), this ensures that the resuling executables are not
tainted by side-effects.

The main thing that has been confusing me about this process is in
dealing with configuration files. Clearly the state of a program such
as, for example, wpa_supplicant, depends on the configuration file used
to start the process. So, if we are trying to effectively declare the
state-machine of wpa_supplicant using Guile, shouldn't the config file
be part of the Guile definition of wpa_supplicant?

My main draw to Guix was my frustration with configuring Gentoo and
other distros. After I spend a day exactly configuring a system, I want
the state which I set up to be _exactly_ reproducible anytime I want.
But clearly I don't need all the information of the entire disk image
to reproduce that exact state; I just need a few configuration files
worth of information.

If I can't include the contents of configuration files as an input to a
package build, then I can't really capture the state-machine of the
package with a single declaration. I have to then use something like
stow and git to manage my config, which is not really solving the
problem.

On the other hand, it seems that Guix might be more about mitigating
side-effects rather than declaring state. So, which is it?

Thanks for reading,

Andrew

             reply	other threads:[~2017-09-11 23:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-11 23:25 Andrew Erlanger [this message]
2017-09-12  7:59 ` Thoughts and questions from a newcomer Julien Lepiller
2017-09-17 19:32 ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877ex47r7h.fsf@localhost.i-did-not-set--mail-host-address--so-tickle-me \
    --to=andrew.erlanger@gmail.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).