From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Lepiller Subject: Re: Thoughts and questions from a newcomer Date: Tue, 12 Sep 2017 09:59:33 +0200 Message-ID: <9283C7CD-7C71-4624-B125-7DD135CEDDDF@lepiller.eu> References: <877ex47r7h.fsf@localhost.i-did-not-set--mail-host-address--so-tickle-me> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----A2P0Y8F7Y6OGLNX5K6X0ZB8MOK4CN2" Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drg6i-0003Vw-G0 for guix-devel@gnu.org; Tue, 12 Sep 2017 03:59:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drg6e-0000OM-4A for guix-devel@gnu.org; Tue, 12 Sep 2017 03:59:44 -0400 Received: from lepiller.eu ([89.234.186.109]:43354 helo=localhost) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drg6d-0000La-Q8 for guix-devel@gnu.org; Tue, 12 Sep 2017 03:59:40 -0400 Received: from [131.254.252.29] (131.254.252.29 [131.254.252.29]) by localhost (OpenSMTPD) with ESMTPSA id c382dce7 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO) for ; Tue, 12 Sep 2017 07:59:36 +0000 (UTC) In-Reply-To: <877ex47r7h.fsf@localhost.i-did-not-set--mail-host-address--so-tickle-me> 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 ------A2P0Y8F7Y6OGLNX5K6X0ZB8MOK4CN2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Le 12 septembre 2017 01:25:54 GMT+02:00, Andrew Erlanger a =C3=A9crit : >Hello, Guix users, > >After a bit of love, I've got most of my personal computing environment >running in GuixSD=2E As I get more comfortable with the system, I hope to >naturally become a developer=2E > >At this point, I have a few thoughts and questions, which I'm looking >for some feedback on, especially where I'm misguided=2E > >It seems that the main problem Guix is trying to address is about state >and side-effects=2E In modern computers, a program running over here >can affect the execution of a completely unrelated program running over >there because of side-effects=2E The result is a large amount of >unnecessary complexity=2E Effectively, the programs have many, many >inputs, and with feedback loops between components, the system can >exhibit chaotic behaivor=2E > >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=2E >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=2E > >The main thing that has been confusing me about this process is in >dealing with configuration files=2E Clearly the state of a program such >as, for example, wpa_supplicant, depends on the configuration file used >to start the process=2E 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=2E After I spend a day exactly configuring a system, I want >the state which I set up to be _exactly_ reproducible anytime I want=2E >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=2E > >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=2E I have to then use something like >stow and git to manage my config, which is not really solving the >problem=2E > >On the other hand, it seems that Guix might be more about mitigating >side-effects rather than declaring state=2E So, which is it? > >Thanks for reading, > >Andrew Hi Andrew ! We want to be able to distribute packages to people, so we can't make a pa= ckage depend on some configuration file=2E As you noted, it would be unrepr= oducible=2E On the other hand, when using guixSD, you can use system services to decla= re your configuration=2E Our wpa-supplicant-service cannot be run alone, bu= t if we had a better service, you could declare something like this in guil= e: (service wpa-supplicant-service-type (wpa-supplicant-configuration (ssid "my-wifi") =2E=2E=2E)) This would create a configuration file in the store and create a new herd = service for wpa_supplicant that would use this file=2E You may be intereste= d in the system configuration section of the manual if you want to learn mo= re=2E So, you have a reproducible package and a reproducible config, therefore a= reproducible behaviour=2E With guixSD you have only one file to edit in order to configure your syst= em entirely=2E At least that's part of what we would like to achieve=2E One= of your first contribution could be this wpa-supplicant-service-configurat= ion :)=2E ------A2P0Y8F7Y6OGLNX5K6X0ZB8MOK4CN2 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Le 12 septembre 2017 01= :25:54 GMT+02:00, Andrew Erlanger <andrew=2Eerlanger@gmail=2Ecom> a = =C3=A9crit :
Hello, Guix users,

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

At this point, I have a few thoughts and questio= ns, which I'm looking
for some feedback on, especially where I'm misgu= ided=2E

It seems that the main problem Guix is trying to address= is about state
and side-effects=2E In modern computers, a program run= ning over here
can affect the execution of a completely unrelated prog= ram running over
there because of side-effects=2E The result is a larg= e amount of
unnecessary complexity=2E Effectively, the programs have m= any, many
inputs, and with feedback loops between components, the syst= em can
exhibit chaotic behaivor=2E

If I'm not mistaken, Gui= x attempts to provide a way of building
programs so that all inputs to= the build process are known exactly=2E
Assuming that the build is a d= eterministic process (which I
hope it is!), this ensures that the resu= ling executables are not
tainted by side-effects=2E

The mai= n thing that has been confusing me about this process is in
dealing wi= th configuration files=2E Clearly the state of a program such
as, for = example, wpa_supplicant, depends on the configuration file used
to sta= rt the process=2E So, if we are trying to effectively declare the
stat= e-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=2E A= fter I spend a day exactly configuring a system, I want
the state whic= h I set up to be _exactly_ reproducible anytime I want=2E
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 info= rmation=2E

If I can't include the contents of configuration file= s as an input to a
package build, then I can't really capture the stat= e-machine of the
package with a single declaration=2E I have to then u= se something like
stow and git to manage my config, which is not reall= y solving the
problem=2E

On the other hand, it seems that G= uix might be more about mitigating
side-effects rather than declaring = state=2E So, which is it?

Thanks for reading,

Andrew<= br />

Hi Andrew !

We want to be able to distribute packages to people, so we can't make = a package depend on some configuration file=2E As you noted, it would be un= reproducible=2E

On the other hand, when using guixSD, you can use system services to decla= re your configuration=2E Our wpa-supplicant-service cannot be run alone, bu= t if we had a better service, you could declare something like this in guil= e:

(service wpa-supplicant-service-type
(wpa-supplicant-configuration
(ssid "my-wifi")
=2E=2E=2E))

This would create a configuration file in the store and create a new herd = service for wpa_supplicant that would use this file=2E You may be intereste= d in the system configuration section of the manual if you want to learn mo= re=2E

So, you have a reproducible package and a reproducible config, therefore a= reproducible behaviour=2E

With guixSD you have only one file to edit in order to configure your syst= em entirely=2E At least that's part of what we would like to achieve=2E= One of your first contribution could be this wpa-supplicant-service-config= uration :)=2E ------A2P0Y8F7Y6OGLNX5K6X0ZB8MOK4CN2--