unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Andy Wingo <wingo@igalia.com>
To: Christopher Allan Webber <cwebber@dustycloud.org>
Cc: guix-devel@gnu.org, guile-user@gnu.org
Subject: Re: guix is the guildhall that we always wanted!
Date: Fri, 17 Mar 2017 15:26:55 +0100	[thread overview]
Message-ID: <874lysm11s.fsf@igalia.com> (raw)
In-Reply-To: <87lgs480vv.fsf@dustycloud.org> (Christopher Allan Webber's message of "Fri, 17 Mar 2017 08:54:12 -0500")

On Fri 17 Mar 2017 14:54, Christopher Allan Webber <cwebber@dustycloud.org> writes:

> Andy Wingo writes:
>
>> On Thu 16 Mar 2017 23:01, Mark H Weaver <mhw@netris.org> writes:
>>
>>> If [Guix] starts encouraging a decentralized approach, that would
>>> result in strong pressure on us to freeze our API, which includes even
>>> such details as which module each package is exported from.  This
>>> would drastically reduce the freedom Guix has to evolve the way its
>>> packages are specified.
>>
>> I get what you are saying.  I think that if a future guildhall is
>> decentralized but uses Guix it needs to minimize its burden on Guix.
>> That could mean that the packages are actually specified in a different
>> DSL with different stability characteristics -- for example that DSL
>> could call specification->package under the hood for example, like
>> Ludovic mentions.  (I should mention that this idea of using Guix and
>> especially all its errors are my own -- haven't talked to others about
>> it yet!)
>>
>> Which module a package definition is in is a good example of something
>> not to depend on.
>
> This makes sense to me... if it really is true that our scheme'y
> Guildhall-style packages are so simple they're more data than code,
> maybe we could even restrict them to... just data.  Just a list of what
> files are being provided, etc.  That could easily be stored in some
> minimal database.

Concretly I would propose something like this in a package.scm in the
git repo:

  (use-modules (guildhall)) ; or whatever we call it
  (import-guix-packages ((a "a")
                         (b "b@5.2")))

  (define foo
    (guildhall-package
      (name "foo")
      (inputs
       `(("a" ,a)
         ("b" ,b)))
      (git-url "https://github.com/foo/foo")
      (home-page "https://github.com/foo/foo")
      (synopsis "Foo is a thing")
      (build-system simple-guile-build-system)
      (description
       "It's a thing")
      (license license:expat)))

I guess you would not want to load this file from the web service as it
has arbitrary Scheme code inside it.  I could see solutions where only
the end-user tool loads this file and exports data to the server, and
the server creates an appropriate "normal" package definition using just
the Guix API.  It can write those definitions out to disk.  It would
export a progressing git repository of Guix package definitions.  As
Guix API changes, that server could re-render those package
descriptions.  Of course that only works in some limited cases.
Otherwise you as a user could do this rendering process for packages you
are developing.  Maybe it is a good thing to encourage nontrivial
packages to go upstream to Guix.

There's not a whole lot that is Guile-specific there of course.  Maybe
this is just an exurb of Guix; I don't know.  Probably "foo" might need
a local build story as well and this doesn't naturally solve that.  More
thinking to do here!

Andy

  reply	other threads:[~2017-03-17 14:27 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
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 [this message]
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=874lysm11s.fsf@igalia.com \
    --to=wingo@igalia.com \
    --cc=cwebber@dustycloud.org \
    --cc=guile-user@gnu.org \
    --cc=guix-devel@gnu.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).