unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Andy Wingo <wingo@igalia.com>
To: Florian Paul Schmidt <mista.tapas@gmx.net>
Cc: guix-devel@gnu.org
Subject: Re: guix is the guildhall that we always wanted!
Date: Fri, 17 Mar 2017 10:45:17 +0100	[thread overview]
Message-ID: <87a88knsnm.fsf@igalia.com> (raw)
In-Reply-To: <162ed651-45b6-0521-7c7e-46967ef11bac@gmx.net> (Florian Paul Schmidt's message of "Fri, 17 Mar 2017 10:01:40 +0100")

On Fri 17 Mar 2017 10:01, Florian Paul Schmidt <mista.tapas@gmx.net> writes:

> On 03/16/2017 11:24 PM, Ludovic Courtès wrote:
>> I think having repos maintained elsewhere is OKish, but it’s true that
>> it requires people who maintain those repos to follow closely what’s
>> going on in Guix proper because we’re not guaranteeing API stability.
>
> Wouldn't taking the functional/reproducibility aspect one step further
> migitate this issue? I.e. maintainers of decentralized repos just need
> to have as input the precise guix version they are using?

This is certainly possible.  Currently the Guix revision is an implicit
input to everything; a guix package "bar" may depend on "foo@2.1", but
the precise built derivation of "foo" on which you depend will evolve
over time as the dependencies change (glibc for example).

Relying on a fixed Guix version fixes this, but at a cost of adding a
new dimension of maintenance complexity that is not reducible in an
automatic way at run-time.  I explain.

For complexity, in the Guix project itself we have one git repo with N
packages; right now packages for a given revision of git, packages only
depend on each other in that revision.  But if you start to build
systems that have packages depending on packages *at M specific
revisions in Git*, you no longer have N nodes in your graph, you have
N*M.  That's a serious increase in maintenance cost for the system as a
whole (if indeed you do decide to maintain it).

However when you actually instantiate a given application (process) it
is only going to depend on one libc, and one "libfoo".  (I know Rust's
cargo has some facility to import multiple versions of libraries.  It
does so by making the types that those versions work on distinct.  But
in Guile there's no easy facility here.)  So in practice you do have to
resolve the M revisions of Guix into a single revision.  How do you do
that in a system that depends on multiple libc versions?  In many ways
it is better to avoid the issue and have one system that evolves over
time.

When you are building an operating system as a collection of somewhat
independent packages that communicate over shared standard protocols and
not shared ABI, version skew is more manageable.  But when building
composite processes that need to agree on API and ABI internally, the
problem is hard.  A guildhall module needs to be able to compose with
other modules and for that reason I think specifying the Guix revision
is not the right thing.

Just my humble opinion of course :)

Andy

  reply	other threads:[~2017-03-17  9:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-16 18:25 guix is the guildhall that we always wanted! Andy Wingo
2017-03-16 19:26 ` Amirouche Boubekki
2017-03-17  8:23   ` Andy Wingo
2017-03-18  0:10     ` Arne Babenhauserheide
2017-03-16 22:01 ` Mark H Weaver
2017-03-16 22:24   ` Ludovic Courtès
2017-03-17  9:01     ` Florian Paul Schmidt
2017-03-17  9:45       ` Andy Wingo [this message]
2017-03-17 11:24       ` Ludovic Courtès
2017-03-17  6:51   ` Marko Rauhamaa
2017-03-17  8:30   ` Andy Wingo
2017-03-17 13:54     ` Christopher Allan Webber
2017-03-17 14:26       ` Andy Wingo
2017-03-18 14:00         ` Ludovic Courtès
2017-03-17 11:30 ` Ludovic Courtès
2017-03-17 12:32   ` Andy Wingo
2017-03-17 17:39     ` Pjotr Prins
2017-03-17 18:16       ` Mike Gran
2017-03-17 13:22   ` Eli Zaretskii
2017-03-18 14:04     ` Ludovic Courtès
2017-03-18 14:10       ` Eli Zaretskii
2017-03-19 15:57         ` Ludovic Courtès
2017-03-19 16:22           ` Eli Zaretskii

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=87a88knsnm.fsf@igalia.com \
    --to=wingo@igalia.com \
    --cc=guix-devel@gnu.org \
    --cc=mista.tapas@gmx.net \
    /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).