From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Subject: Re: Profiles/manifests-related command line interface enhancements Date: Wed, 06 Nov 2019 17:35:45 +0100 Message-ID: <87v9rxx8ri.fsf@gnu.org> References: <87mudrxvs8.fsf@ambrevar.xyz> <87mudd59ho.fsf@gnu.org> <877e4glyc3.fsf@ambrevar.xyz> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:36743) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iSOHc-0004cn-FN for guix-devel@gnu.org; Wed, 06 Nov 2019 11:35:49 -0500 In-Reply-To: (Konrad Hinsen's message of "Tue, 05 Nov 2019 07:26:38 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Konrad Hinsen Cc: guix-devel@gnu.org Hey! Konrad Hinsen skribis: > Pierre Neidhardt writes: > >> I'm actually surprised you find it surprising! :) >> I can think of Simon, maybe Konrad(?) and myself who mentioned it >> before. > > Yes, me too. I could add to Pierre's list of use cases, but I prefer to > shift the discussion to a higher level. Just to be clear: I think supporting multiple =E2=80=98--manifest=E2=80=99 = flags in all the commands would be welcome. It=E2=80=99s probably a rather simple chang= e, and if it=E2=80=99s useful, go for it! > What we have been discussing here recently is the organization of > software one level above packages. The vague idea is "groups of packages > that go together". Outside of the Guix universe, this is the realm of > (Docker) containers. A quick look at what happens in that universe > shows that composing such groups of packages corresponds to a frequent > need (see docker compose, Kubernetes, ...). Yes, I see. > In Guix we have ephemeral (environment) vs. persistent (profile), ad-hoc > (package -i, environment from package lists, ...) and declarative > (manifests). It's a bit of a mess. Hacks such as "environment -r" show > that we ought to think about a better overall design. In addition to the > two dimensions I mentioned, this should include shareable/re-usable > vs. personal. People publish and share Docker images, so why wouldn't > they publish and share Guix super-packages? This third dimension also > raises the question of where the information (profiles, manifests, ...) > are stored and managed (version control?), and how they are referred to > (name, filename, ...). And of course how they are composed - in Guile, > at the shell level, or yet something else? I think having ephemeral + persistent and declarative + imperative is cool=E2=80=94I=E2=80=99d call that =E2=80=9Cflexible=E2=80=9D rather than = =E2=80=9Cmessy=E2=80=9D. :-) It=E2=80=99s great to have =E2=80=9Cguix install=E2=80=9D as an entry point= ; I=E2=80=99m sure it allows us to reach out to more people, and that matters too. (I actually use it, BTW, so it=E2=80=99s not an expert vs. newbie thing!) I agree that sharing and publishing is important, and I think manifests support that. I think we need to support =E2=80=9Cunions=E2=80=9D of manif= ests, and that means (as always) supporting it at the API level and at the command-line level (allowing for multiple =E2=80=98--manifest=E2=80=99 flag= s). What we=E2=80=99re now saying is =E2=80=9Clook, you can write a manifest, a= nd then you can have it under version-control and publish it and it=E2=80=99s all up to= you how you do that=E2=80=9D; but you seem to suggest that we should offer a higher-level, more integrated solution, is that correct? Like, we would enforce certain conventions by default, perhaps have direct Git integration so that one can refer to a =E2=80=9Cmanifest=E2=80= =9D just like they refer to a channel, things like that. Do I get it right? I haven=E2=80=99t thought much about this but that sounds like an exciting direction! Thanks, Ludo=E2=80=99.