From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id iHUrBA2tpWWmWAEA62LTzQ:P1 (envelope-from ) for ; Mon, 15 Jan 2024 23:09:17 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1.migadu.com with LMTPS id iHUrBA2tpWWmWAEA62LTzQ (envelope-from ) for ; Mon, 15 Jan 2024 23:09:17 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=zancanaro.id.au header.s=k1 header.b=FTvt09mJ; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=zancanaro.id.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1705356556; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=SDwG8bvDaT7ZulDgqimjxiwn/CYQhByZJOtpknyaQVs=; b=u9eqMsTFss8al/oUOeUR0iBZ9G7+LVmAhIcvk+Qk2gHcIv5taJYYGa3nWjYYrWnf0VHfoX +Wa8cVtPbbwVGHfg6697/0YALSK5NPda1jubE9qUHCJUazpV+XpfK0N9krGNpoQsnyhgPX B9WyM1fGW6LkhPjt4opAHCwLbB9rAfgvkZRfO/ZlimLgV2/28vz0GKD6l7FP4ma68Y3tX5 GgtGI8kqgDOu98/MdGArV6J33vp7lwHJ2eps91dsxeHKkEIdnJiciIzgWr3SyCNgd4llu5 cU09B11Uq3PE9S+tvdTpIbDENRnxpZtLEJF4sUmpUsuuHLYTRYPBuNtYKLSByg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=zancanaro.id.au header.s=k1 header.b=FTvt09mJ; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=zancanaro.id.au ARC-Seal: i=1; s=key1; d=yhetil.org; t=1705356556; a=rsa-sha256; cv=none; b=YVT5etWaiyDVM6qU7LvkwlbPpFREbvrx+XLY4aN6IdEidAKpmm7gdKM+Gzm+vsh/eRg9lI x/flk7tC01Kx4iScUzMY9krE6l3EuxqEUx01gJVjsbYFypcZJBTqIu21ziVFxyFPi9BiNP khBqgbrYNJzkQkP90ib0J1EngobsKefXgvPoOM/9M0BOmTIIF6s4i2g8a6iEFDRmfnDez0 wt/DrvJn1OpQ8JYHhIURnpmA/Jba0cmlUAfRNlrMB7ebvnBwcwg22vsf5LoLhDBXVW3Zmk 9b6Wc9S1ITOuwsPUSgO7mqm3/VQ45Ahpw04YZhQeYHJMEt+YyW+qnq8924dIhg== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D542D3D820 for ; Mon, 15 Jan 2024 23:09:16 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rPV8b-0003nw-7r; Mon, 15 Jan 2024 17:08:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rPV8T-0003mz-Jd for guix-devel@gnu.org; Mon, 15 Jan 2024 17:08:50 -0500 Received: from voltorb.zancanaro.id.au ([45.77.50.64]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rPV8R-0002Gc-CL for guix-devel@gnu.org; Mon, 15 Jan 2024 17:08:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=k1; bh=SDwG8bvDaT7ZulD gqimjxiwn/CYQhByZJOtpknyaQVs=; h=date:references:in-reply-to:subject: cc:to:from; d=zancanaro.id.au; b=FTvt09mJ6bvStTCy3kUBJ8MSaCKaHM6pkg9zY Tu8bIfzYCMWlNXl/+xMTn+t7aP5KTKYym+Xv0LO33Ne6da8ZCHryfcFXhG6dQhr6uEJjJ/ uhFdqe3RJGiGBFe1HVPDRY206XSLBaSt9SRgUfxHG9q9hHKuU+apGwcDQPLTdDGQ= Received: by voltorb.zancanaro.id.au (OpenSMTPD) with ESMTPSA id 82ff5b2f (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Mon, 15 Jan 2024 22:08:39 +0000 (UTC) From: Carlo Zancanaro To: Ian Eure Cc: guix-devel Subject: Re: Guix CLI, thoughts and suggestions In-Reply-To: <87il3upczg.fsf@retrospec.tv> (Ian Eure's message of "Mon, 15 Jan 2024 11:24:29 -0800") References: <87il3upczg.fsf@retrospec.tv> Date: Tue, 16 Jan 2024 09:08:41 +1100 Message-ID: <87o7dmgsgm.fsf@zancanaro.id.au> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=45.77.50.64; envelope-from=carlo@zancanaro.id.au; helo=voltorb.zancanaro.id.au X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list 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+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -7.88 X-Migadu-Scanner: mx13.migadu.com X-Spam-Score: -7.88 X-Migadu-Queue-Id: D542D3D820 X-TUID: iBRpYa2DuwwS Hi Ian, Much of what you've written is fair, and I'm sure that Guix's commands could be better organised. I'm not really involved in Guix development, but I think there are two "inconsistencies" that you've mentioned which can be explained. On Mon, Jan 15 2024, Ian Eure wrote: > Some examples of where I think Guix could do better. This is an > illustrative list, not an exhaustive one. > > Inconsistent organization > ========================= > > Most package-related commands are under `guix package', but many are > sibling commands. Examples are `guix size', `guix lint', `guix hash', > etc. I think the real inconsistency here is that `guix package' is poorly named. This command really operates on profiles, and performs operations (install, remove, list, etc.) on those profiles. Packages are given as arguments to this command. The other commands operate on, and show the properties of, packages. Similarly with `guix build'. > Inconsistency between verbs and options > ======================================= > ... For example, installing a package is `guix package -i foo' rather > than `guix package install foo', removing is `guix package -r foo' > rather than `guix package remove foo', and listing installed packages > is `guix package -I' rather than `guix package installed' (or > similar). The specific example of `guix package' might be explained by considering it as a single transaction to update the profile. The command `guix package' really says "perform a transaction on the profile", and the options are the commands in the transaction. Since there can be multiple commands, and the command names look like package names, they are provided as options. This doesn't fully explain the behaviour. In particular the example you give: > This means that users can express commands which *seem* like they > should work, but do not. For example `guix package -i emacs -r > emacs-pgtk -I' represents a command to 1) install emacs 2) remove > emacs-pgtk 3) list installed packages (which would verify the previous > two operations occurred). ... seems reasonable to have working within the view of `guix package' as a transactional operation. It's also worth noting that there are convenience shortcuts in `guix install' and `guix remove'. > It seems like a lot of work to change, and backwards compatibility > also is an issue. I see backwards compatibility as the main issue here. There was a lot of discussion preceding the inclusion of `guix shell', because of the prospect of breaking existing tutorials/documentation floating around on the internet. This is an even bigger concern for a more drastic reorganisation of the CLI. Carlo