Hi,

Ekaitz Zarraga <[email protected]> writes:

> Hi Yarl
>
> On 2026-02-21 11:06, Yarl wrote:
>> I think that since a GCD is necessary, we should take this
>> opportunity
>> to carry out a complete restructuring. This would allow us to
>> standardize the user interface once and for all. What do you think?
>> This is the current state:
>> ━━━━━━━━━━━━━━━━━━━━━━━━━━
>>   archive
>>   build
>>   challenge
>>   container
>>   copy
>>   deploy
>>   describe
>>   download
>>   edit
>>   environment (deprecated)
>>   gc
>>   git
>>   graph
>>   hash
>>   home
>>   import
>>   install
>>   lint
>>   locate
>>   pack
>>   package
>>   processes
>>   publish
>>   pull
>>   refresh
>>   remove
>>   repl
>>   search
>>   shell
>>   show
>>   size
>>   style
>>   system
>>   time-machine
>>   upgrade
>>   weather
>> ━━━━━━━━━━━━━━━━━━━━━━━━━━
>> Table 1: User commands
>> ━━━━━━━━━━━━━━━━━━
>>   authenticate
>>   discover
>>   offload
>>   perform-download
>>   substitute
>> ━━━━━━━━━━━━━━━━━━
>> Table 2: Internal commands
>> What follows is a *rough* proposal, intended to raise the right
>> questions and get things started.
>> Group related commands/actions under a common domain or
>> subdomain. e.g. *guix domain action*.
>> With that in mind, we avoid overly long command lines.
>> e.g. *guix domain subdomain subsubdomain … action*.
>> Flags should not represent actions but options.
>> Goal:
>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
>>   build
>>   deploy
>>   describe
>>   home          build
>>                 container
>>                 delete-generations
>>                 describe
>>                 edit
>>                 extension-graph
>>                 import
>>                 list-generations
>>                 reconfigure
>>                 roll-back
>>                 search
>>                 shepherd-graph
>>                 switch-generation
>>   package       edit
>>                 import
>>                 lint
>>                 list-available
>>                 locate
>>                 refresh
>>                 search
>>                 search-paths
>>                 show
>>                 style
>>   processes
>>   profile       delete-generations
>>                 export-channels
>>                 export-manifest
>>                 install
>>                 list-generations
>>                 list-installed
>>                 list-profiles
>>                 manifest
>>                 remove
>>                 roll-back
>>                 switch-generation
>>                 upgrade
>>   pull
>>   repl
>>   shell
>>   store         archive             export
>>                                     extract
>>                                     generate-key
>>                                     import
>>                                     list
>>                                     missing
>>                 authorize
>>                 copy
>>                 derivers
>>                 diff
>>                 download
>>                 gc
>>                 list-busy
>>                 list-dead
>>                 list-failures
>>                 list-live
>>                 list-roots
>>                 optimize
>>                 pack
>>                 publish
>>                 references
>>                 referrers
>>                 requisites
>>                 vacuum-database
>>                 verify
>>   system        build
>>                 container
>>                 delete-generations
>>                 describe
>>                 docker-image
>>                 edit
>>                 extension-graph
>>                 image
>>                 import
>>                 init
>>                 installer
>>                 list-generations
>>                 reconfigure
>>                 roll-back
>>                 search
>>                 shepherd-graph
>>                 switch-generation
>>                 vm
>>   time-machine
>>   tool          challenge
>>                 container-exec
>>                 download
>>                 git-authenticate
>>                 graph
>>                 hash
>>                 size
>>                 weather
>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
>> Table 3: Futur
>> yarl
>> 
>
>
> About this, I always hated that `guix package` and `guix sytem|home`
> use different pattern for things like `delete-generations` (in package
> it's `--delete-generations=[PATTERN]`, which is an option, not a
> sub-command).

I've seen at least one user, excluding myself, trip on this one.

> Also I see that `guix system delete-generations -h` shows the help of
> the `system` subcommand, not of the `delete-generations` subcommand.

Agreed that this could use a good overhaul to make the --help output
less confusing. I'm not sure if this is caused by limitations of the
arguments parsing library used (currently (srfi srfi-37)) or some other
reason.

Yarl, note that some of the commands you suggest to reorganize are alias
that were added at the top level relatively recently, such as 'guix
search' -> 'guix package --search' or 'guix install' -> 'guix package
--install'; I think these are good to have.

-- 
Thanks,
Maxim

Reply via email to