Subject: Re: [bug#26645] Potluck still relivant

From: Ricardo Wurmus <[email-masked]>
Date: Wed, 29 Apr 2020 08:02:56 +0200

Hi Brice,

> Reading through the initial email[0] by Andy the potlock feature seems
> to be way more extensive than channels: it allows one to create simple
> packages in an interactive manner and centralize the discoverability of
> such packages. Channels provide us a way to create package outise of
> Guix proper but finding channels containing the package you are looking
> for is still an unsolved problem.

One of the objectives was to provide a simpler and more robust way to
define packages that would not break when package variables in Guix
proper are moved around:

> +Guix's @dfn{potluck} facility fills this gap.  A @dfn{potluck package}
> +is like a normal Guix package, except it expresses its inputs in the
> +form of package specifications instead of direct references.
> +@xref{potluck-package Reference}.  Potluck packages also have a simpler
> +package structure with fewer fields; compared to normal Guix packages,
> +they are less expressive but more isolated from details of upstream
> +Guix.

We have the same facilities in JSON package definitions such as this one:

--8<---------------cut here---------------start------------->8---
[
  {
    "name": "myhello",
    "version": "2.10",
    "source": "mirror://gnu/hello/hello-2.10.tar.gz",
    "build-system": "gnu",
    "arguments": {
      "tests?": false
    }
    "home-page": "https://www.gnu.org/software/hello/",
    "synopsis": "Hello, GNU world: An example GNU package",
    "description": "GNU Hello prints a greeting.",
    "license": "GPL-3.0+",
    "native-inputs": ["gettext"]
  },
  {
    "name": "greeter",
    "version": "1.0",
    "source": "https://example.com/greeter-1.0.tar.gz",
    "build-system": "gnu",
    "arguments": {
      "test-target": "foo",
      "parallel-build?": false,
    },
    "home-page": "https://example.com/",
    "synopsis": "Greeter using GNU Hello",
    "description": "This is a wrapper around GNU Hello.",
    "license": "GPL-3.0+",
    "inputs": ["myhello", "hello"]
  }
]
--8<---------------cut here---------------end--------------->8---

Since this can be fed to “guix build -f” directly, there doesn’t seem to
be a need for “guix potluck init” any more.

While I think it would be very convenient to be able to publish package
definitions with “guix potluck update <url> <branch>”, it would require
maintenance of the host-channel service that accepts possibly hostile
user input.  To prevent denial of service it should probably require
authentication and enforce quotas.

Since users can also push packages for non-free software we cannot host
this on Guix project infrastructure.  (I guess this was why the proposed
domain was guix-potluck.org.)

--
Ricardo