unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Katherine Cox-Buday <cox.katherine.e@gmail.com>
To: Jack Hill <jackhill@jackhill.us>
Cc: guix-devel@gnu.org
Subject: Re: Sniping "guix deploy"
Date: Fri, 10 Sep 2021 10:36:23 -0500	[thread overview]
Message-ID: <87mtok4f48.fsf@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.21.2109100042050.2109@marsh.hcoop.net> (Jack Hill's message of "Fri, 10 Sep 2021 01:07:47 -0400 (EDT)")

Jack Hill <jackhill@jackhill.us> writes:

> I know that CoreOS at one point took cluster-wide knowledge into
> account when performing upgrades (so as not to take down all replicas
> at once for instance). It and similar projects are probably too far
> afield to take implementation ideas from, but some of the high level
> concepts might be worth taking inspiration from.

Yeah, good point. There are probably a lot of other primitives here
worth implementing. I incorrectly scoped my statement to the
threat-model given.

> Another higher level mechanism that we might need for deploy is some
> way to do IO when building operating system definitions. Something
> along the lines of how "facts" are handled in the various
> configuration management tools. I see this as being useful for doing
> things like reconfiguring a system, but leaving the disk partitioning
> how it is now without having to to declare what the partitions are
> ahead of time.* In Scheme, there is nothing stopping us from doing IO
> at arbitrary points in an operating system definition, but as this
> takes away from the declarative nature of the configuration, having
> shared mechanisms for doing this in a clear, maintainable, and
> principled way could be very useful.

Maybe a blanket #t could mean "leave this alone" when specified for an
operating-system field?

> Late night brainstorming is fun.

That it is! And though this discussion is fun, I think it's very
premature. There are a handful of bugs[1] open for deploy. One is
critical[2], and I just filed one[3] because deploy can share
state/provinance between all machines deployed together. And I'm not
sure if it has someone actively working to make it better?

As always I find myself wishing I had more time to contribute.

> * I suppose file systems are the most obvious place where ugly state
>   like this can sneak its way in since they are essential giant
>  buckets to hold state, which is probably why this example has been
> running around in my head. While it might be nice to think about
> eliminating all state that doesn't seem workable, but maybe we come up
> with some way to represent the state declaratively à la Haskell's IO
> and State monads.

I am very fond of "trapdoors" in systems which are constrained/rigid by
design. It gives you all of the benefit of the constraints, but leaves a
way for users to work around bugs, or play with things until they get it
right and can bring it back into the fold.

[1] - https://issues.guix.gnu.org/search?query=%22guix+deploy%22+is%3Aopen
[2] - https://issues.guix.gnu.org/46756
[3] - https://issues.guix.gnu.org/50468

-- 
Katherine


      reply	other threads:[~2021-09-10 15:36 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-09 23:45 Sniping "guix deploy" Julien Lepiller
2021-09-10  4:06 ` Katherine Cox-Buday
2021-09-10  5:07   ` Jack Hill
2021-09-10 15:36     ` Katherine Cox-Buday [this message]

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=87mtok4f48.fsf@gmail.com \
    --to=cox.katherine.e@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=jackhill@jackhill.us \
    /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).