unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Ricardo Wurmus <rekado@elephly.net>
To: Pjotr Prins <pjotr.public12@thebird.nl>
Cc: guix-devel@gnu.org
Subject: Re: A registry for distributed sources and binaries
Date: Sun, 24 Jul 2016 22:35:43 +0200	[thread overview]
Message-ID: <87wpka7p0g.fsf@elephly.net> (raw)
In-Reply-To: <20160724033027.GA20236@thebird.nl>


Hi Pjotr,

> Registries solve the mentioned problems of GUIX_PACKAGE_PATH:
>
> 1. People are not aware about the work of others
> 2. Slightly complicated (you need a Guix source tree etc.)
> 3. No binary distribution

When I first read your email I thought you proposed a mechanism that
extends GUIX_PACKAGE_PATH.  What you actually proposed seems a little
too big and complicated from my point of view, but I am interested in
discussing the idea of extending GUIX_PACKAGE_PATH.

Currently, GUIX_PACKAGE_PATH depends on some manual work to be done
first.  Finding a third-party repository, downloading it, updating it
separately from Guix itself (it won’t get updated via “guix pull”),
setting the variable.

When binary substitutes are involved some more steps are required: find
and download the public key of the distributor (who might be running
hydra or something like “guix publish”) and authorise it.

Taken together it may seem a little too cumbersome compared to what
other package managers do.  To enable a third-party repository for
Ubuntu, for example, I only need to run one command.  When downloading
packages I may also need to verify and accept a GPG key.

Could it be enough if Guix offered a simpler way to fetch package
definitions and (optionally) binary substitutes from a third party who
maintains both the package definitions and (optionally) distributes
pre-built binary substitutes?

Here are some concrete proposals:

* Add a “guix config” command, which allows users to modify the
  behaviour of their instance of Guix.

* Support adding repositories via “guix config”.  A “repository” is a
  remote set of Guile modules and (optionally) an public endpoint of
  “guix publish” through which substitutes of only those packages that
  are defined in the repository’s modules can be downloaded.

* The first time a repository is accessed, the specified modules are
  cloned and stored in a per-user state directory
  (“~/.cache/guix/<domain>” maybe?).  Guix is automatically configured
  to use the modules from “~/.cache/guix/<domain>” in addition to what
  is on GUIX_PACKAGE_PATH.  Additionally, the distribution public key
  for binary substitutes is fetched from a well-known location (if
  applicable) and users are asked to confirm.

* When a user runs “guix pull” all enabled repositories are also
  updated.  Otherwise the cached copy from last access is used.

* Update “guix --version” to also return the version of each configured
  repository.

* Add a command line switch “--vanilla” (or similar) to disable any
  custom configuration and any configured repositories.

With the mechanism described above it would be less intimidating for
users to add sources of Guix packages (or Guix features) and download
binary substitutes.

Third parties can distribute package descriptions (or experimental
features) along with binary substitutes by simply hosting the modules
and running “guix publish”.  The Guix project doesn’t need to care.
Exactly how third-party collections are managed is completely up to the
respective maintainers.

While I feel strongly that we should focus our efforts on Guix upstream
I also think that it may be useful and convenient to expand the
GUIX_PACKAGE_PATH feature.

What do you think about that?  Does this align with your vision?

What do others think?  Is this something that would benefit the Guix
project and its audience?

~~ Ricardo

  parent reply	other threads:[~2016-07-24 20:35 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-21  1:39 (unknown) Unknown, Pjotr Prins
2016-07-21  1:42 ` [PATCH] gnu: Add elixir Pjotr Prins
2016-07-21 11:43   ` Ben Woodcroft
2016-07-21 12:00     ` Pjotr Prins
2016-07-22  5:26     ` Leo Famulari
2016-07-22 12:55       ` Ludovic Courtès
2016-07-22 14:12         ` Leo Famulari
2016-07-21 12:51 ` none Ludovic Courtès
2016-07-22  0:41   ` none Pjotr Prins
2016-07-22  2:06     ` none Pjotr Prins
2016-07-22  3:25       ` none Jookia
2016-07-22  3:48       ` none Leo Famulari
2016-07-22  4:48       ` none Tobias Geerinckx-Rice
2016-07-22 11:07         ` none Pjotr Prins
2016-07-22 12:23           ` none Ricardo Wurmus
2016-07-22 12:50             ` none Jookia
2016-07-22 21:19               ` none Leo Famulari
2016-07-24  4:17                 ` none Jookia
2016-07-24  6:35                   ` none Leo Famulari
2016-07-24  7:47                     ` none Jookia
2016-07-24 16:52               ` none Christopher Allan Webber
2016-07-24 17:03                 ` none Andreas Enge
2016-07-22  8:15     ` none Roel Janssen
2016-07-22 14:07       ` none Leo Famulari
2016-07-22 14:15         ` none Vincent Legoll
2016-07-22 16:13       ` none Ludovic Courtès
2016-07-22 16:38         ` none myglc2
2016-07-23  7:03           ` none Tomáš Čech
2016-07-22 16:02     ` Review process Ludovic Courtès
2016-07-23  2:24       ` Pjotr Prins
2016-07-23  9:05         ` Alex Kost
2016-07-23  9:51           ` Mathieu Lirzin
2016-07-24  8:02             ` Alex Kost
2016-07-24 10:38               ` Mathieu Lirzin
2016-07-24 14:09               ` Ludovic Courtès
2016-07-24  3:30       ` A registry for distributed sources and binaries Pjotr Prins
2016-07-24  5:10         ` Tobias Geerinckx-Rice
2016-07-24  5:16           ` Pjotr Prins
2016-07-24  5:24         ` Pjotr Prins
2016-07-24  5:29         ` Mark H Weaver
2016-07-24  5:48           ` Jookia
2016-07-24  6:37             ` Tobias Geerinckx-Rice
2016-07-24  7:49               ` Jookia
2016-07-24 20:02             ` Ricardo Wurmus
2016-07-24  6:28           ` Tobias Geerinckx-Rice
2016-07-24  7:02             ` Pjotr Prins
2016-07-24  7:29           ` Leo Famulari
2016-07-24  7:41             ` Pjotr Prins
2016-07-24  9:50           ` Mathieu Lirzin
2016-07-24 22:46           ` Ludovic Courtès
2016-07-24 13:58         ` Andreas Enge
2016-07-24 15:21           ` Jookia
2016-07-24 15:58             ` Andreas Enge
2016-07-24 17:18             ` replying to a message of a mailing list you were not subscribed to Danny Milosavljevic
2016-07-24 17:25               ` Danny Milosavljevic
2016-07-25  5:38                 ` Ricardo Wurmus
2016-07-25  7:34                   ` icecat "mailto" handler does not work - and cannot be reconfigured by user Danny Milosavljevic
2020-10-13 13:23                     ` bug#24066: " Maxim Cournoyer
2016-07-24 18:50             ` A registry for distributed sources and binaries John Darrington
2016-07-25  9:14             ` Replying to bug reports Ludovic Courtès
2016-07-25  8:25           ` A registry for distributed sources and binaries Andy Wingo
2016-07-25 22:00             ` Reviewer assignment Ludovic Courtès
2016-07-24 20:35         ` Ricardo Wurmus [this message]
2016-07-25  2:10           ` A registry for distributed sources and binaries Pjotr Prins
2016-07-25  3:42             ` Tobias Geerinckx-Rice
2016-07-25  4:57               ` Pjotr Prins
2016-07-25  7:18           ` Tomáš Čech
2016-07-25  9:21           ` Ludovic Courtès
2016-07-26  3:40             ` Pjotr Prins
2016-07-26  3:45               ` Pjotr Prins
2016-07-25  6:13 ` [PATCH] Add Elixir (was: ) Ricardo Wurmus
2016-07-25  6:31   ` Pjotr Prins
2016-07-28  7:27     ` Ricardo Wurmus
2016-07-28  8:30       ` Vincent Legoll
2016-07-28 10:35       ` Pjotr Prins
2016-07-28 20:35         ` Ricardo Wurmus
2016-07-29  2:38           ` Pjotr Prins
2016-07-29  6:32             ` Vincent Legoll
2016-08-02  8:56             ` Ricardo Wurmus
2016-08-02 14:30               ` Pjotr Prins
2016-08-02  8:44     ` [PATCH] Add Elixir Ricardo Wurmus
2016-08-02 14:29       ` Pjotr Prins
2016-08-02 17:26       ` Ludovic Courtès
2016-08-02 21:25         ` Ricardo Wurmus
2016-08-03  4:41           ` Pjotr Prins
2016-08-09 11:18           ` Pjotr Prins
2016-08-09 11:58             ` Alex Sassmannshausen

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=87wpka7p0g.fsf@elephly.net \
    --to=rekado@elephly.net \
    --cc=guix-devel@gnu.org \
    --cc=pjotr.public12@thebird.nl \
    /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).