From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Erlanger Subject: Thoughts and questions from a newcomer Date: Mon, 11 Sep 2017 19:25:54 -0400 Message-ID: <877ex47r7h.fsf@localhost.i-did-not-set--mail-host-address--so-tickle-me> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48487) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drY5Z-0006MW-Kk for guix-devel@gnu.org; Mon, 11 Sep 2017 19:26:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drY5W-0007xO-GJ for guix-devel@gnu.org; Mon, 11 Sep 2017 19:26:01 -0400 Received: from mail-qt0-x22d.google.com ([2607:f8b0:400d:c0d::22d]:34083) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1drY5W-0007vz-Bw for guix-devel@gnu.org; Mon, 11 Sep 2017 19:25:58 -0400 Received: by mail-qt0-x22d.google.com with SMTP id m35so22440762qte.1 for ; Mon, 11 Sep 2017 16:25:57 -0700 (PDT) Received: from localhost (ool-457a9840.dyn.optonline.net. [69.122.152.64]) by smtp.gmail.com with ESMTPSA id d22sm6991082qkj.88.2017.09.11.16.25.55 for (version=TLS1_2 cipher=AES128-GCM-SHA256 bits=128/128); Mon, 11 Sep 2017 16:25:55 -0700 (PDT) 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" To: guix-devel@gnu.org 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