unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Leo Prikler <leo.prikler@student.tugraz.at>
To: guix-devel@gnu.org, raghavgururajan@disroot.org
Subject: Thoughts on making Guix even better
Date: Sun, 23 Feb 2020 18:14:58 +0100	[thread overview]
Message-ID: <131d7d47e8e77a426a28013be0e063ff9de735a9.camel@student.tugraz.at> (raw)
In-Reply-To: 24c65c56c37b309c108f75fb9e3e4681866e7fac.camel@student.tugraz.at

Hello Raghav!
> Lets assume we have 5 packages in profile. Package 1, 3 and 5 has
> non-critical 
> updates. Package 4 has non-critical update but it breaks. Package 2
> has 
> critical update (CVE). We can either upgrade all packages except
> package 4 (or) 
> we can upgrade only package 2.
> 
> Lets assume we have 5 services/packages in system. Package/Service 1,
> 3 and 5 
> has non-critical updates. Package/Service 4 has non-critical update
> but it 
> breaks. Package/Service 2 has critical update (CVE). Now, when we
> reconfigure 
> the system, all packages/services will upgrade, package/service 4
> will break 
> the system. We can of course do '--roll-back' and take the system to
> previous 
> working state. But that will leave the system with critical
> vulnerability. 
> Therefore, we cannot reconfigure package/service 2 or any other parts
> of the 
> system, until the package/service 4 is fixed. This window/gap puts
> guix system 
> at great risk and instability.
This is not as much a guix package vs. guix system issue as it is an
issue of explicit manifests against implicit ones.  If you use guix
package with manifests and without inferiors, you will have the same
problem.  Likewise, you can use inferiors in your config.scm to
mitigate some of those issues.  At least it works for the kernel, but
it should in theory also work for packages.

The problem with inferiors as a solution to this problem is, that it
doesn't address the issues of services.  You'd have to use the current
service structure with an inferior-package, which is not always what
you want, specifically when the introduction of a new field to that
service causes an issue.  In addition to that, finding all package
references and patching them to not include some breaking package (say
e.g. the newest mesa version, which depending on your graphics card may
or may not cause issues) can be very tedious depending on what is
referenced where.  Perhaps a lookup-inferior-services procedure might
help here.  

Overall, there are also some "not so fun" things when dealing with
inferior packages.  For one (car (lookup-inferior-packages ...)) is
quite a mouthful, especially when you know you'll always want the first
result or there is only one to begin with.  I'd welcome a procedure to
turn an inferior into a procedure that always returns the first match. 
IIRC inferior packages are also not always accepted as packages, but
I'd welcome being proven wrong about that.

You can also modularize guix system by wrapping each and every service
in a module which you either re-export from guix proper or -- in case
of some failure -- implement on your own.  That's a lot of work
however.

TL;DR: You can "modularize" transactions with 'guix system' in the same
way you modularize 'guix package -m' (the "-m" means "not modular" ;P).
 
Regards,
Leo

PS: What you're envisioning is probably a front-end, that obscures the
very existence of a config.scm by managing one that is just as verbose
as guix-generated manifests are.  However, this is not really a
solution as it fails to address the need for a (human-readable) initial
configuration.  The interface would also be a pain to deal with as each
service comes with its own configuration record allowing arbitrary lisp
expressions that one would have to write on the command line.

       reply	other threads:[~2020-02-23 17:15 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <24c65c56c37b309c108f75fb9e3e4681866e7fac.camel@student.tugraz.at>
2020-02-23 17:14 ` Leo Prikler [this message]
2020-03-01 10:26 ` Thoughts on making Guix even better Raghav Gururajan
2020-02-23  2:49 Raghav Gururajan
2020-02-23 20:28 ` Jonathan Frederickson
2020-03-08 20:54 ` Ludovic Courtès
2020-03-09  6:18   ` Gábor Boskovits
2020-03-09  7:28     ` Konrad Hinsen

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=131d7d47e8e77a426a28013be0e063ff9de735a9.camel@student.tugraz.at \
    --to=leo.prikler@student.tugraz.at \
    --cc=guix-devel@gnu.org \
    --cc=raghavgururajan@disroot.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).