On Wed, Feb 22, 2017 at 07:57:06AM +0000, Pjotr Prins wrote: > To keep things simple I propose a channel simply reflects a fixed > version of a git tree of a Guix package list. I.e., the exact *state* > of the combined list of packages is what we support in a channel. The > git checkout can be stored in something like You shared *a lot* of ideas following this paragraph, but I think that from here we can start thinking about how to incrementally evolve from the current `guix pull` to something better. Currently, you can `guix pull` any commit of GNU Guix with `guix pull --url` [0]. This feature depends on the Git server implementation's HTTP interface, but I bet it's a common feature, and it can already be used with other Git repositories besides our Savannah repo. This achieves the goal of channels, "easy specialization of deployments". Well, "easy" is a matter of degrees ;) I was thinking we could start by keeping `guix pull` the same from the user's point of view, but change it to support Git in addition to downloading a tarball. We already have code for this in (guix git-download) which uses the Git command-line tool. [1] The next step would be to keep some metadata about which channel the last pull came from, so that subsequent pulls would point to it. What do people think? I haven't wrapped my head around all the proposed changes. I think it will be best to keep the goal of "easy specialization of deployments" in mind and work towards it incrementally. [0] https://git.savannah.gnu.org/cgit/guix.git/commit/?id=8a9cffb202414b20081910115ba76402924bdcdd [1] In the long run, we should ditch the Git CLI and use something like guile-git: https://gitlab.com/amirouche/guile-git