Re: delete-generations or --delete-generations?

2021-09-09 Thread Leo Famulari
On Thu, Sep 09, 2021 at 05:14:53PM +0300, André A. Gomes wrote:
> Let me share the position of a layperson.  I noticed the lack of
> symmetry between `guix system list-generations` and `guix package
> --list-generations` and it felt like an inconsistency to me.

And sometimes it confuses me too, even though I've been using Guix since
2015 :)



Re: delete-generations or --delete-generations?

2021-09-09 Thread André A . Gomes
Leo Famulari  writes:

> I think that adding `guix system --delete-generations` et al would not
> be confusing for anyone.

Let me share the position of a layperson.  I noticed the lack of
symmetry between `guix system list-generations` and `guix package
--list-generations` and it felt like an inconsistency to me.


-- 
André A. Gomes
"Free Thought, Free World"



Re: delete-generations or --delete-generations?

2021-09-09 Thread Leo Famulari
On Wed, Sep 08, 2021 at 10:59:33PM +0200, Ludovic Courtès wrote:
> zimoun  skribis:
> > I speculate too. :-) I guess because the idea behind “guix system” is
> > one action at a time however “guix package” can compose actions in one
> > transaction (guix package --install=foo --remove=bar).  Using the
> > default CLI parser (SRFI-37), it seems easier for composing to use the
> > options (--) than to extract actions.  For instance, if it was
> > “guix package ” as it is with “guix system”, then it is harder
> > to parse the composition, i.e.,

Makes sense.

> Yeah, long ago Alex Kost and others proposed turning some of the current
> ‘guix package’ options into sub-sub-commands of a new ‘guix profile’
> sub-command: ‘guix profile install foo’, ‘guix profile
> delete-generations’, etc.

That's an interesting idea and might help to educate new users on
'profiles', which is a crucial concept for Guix but sometimes learned
later than would be ideal.

One of the good things about Guix compared to Nix (and most distros) is
that the command-line interface is more discoverable and consistent (and
composable!). So, we should try to keep improving it in that direction.
Although in my opinion we should also be careful not to change it too
radically.

I think that adding `guix system --delete-generations` et al would not
be confusing for anyone.

> It may be consistent but maybe a bit far-fetched and annoying to type…

`guix profile` is more correct and consistent, although it would
represent a major change in the command-line interface, which I figure
would hurt usability. Just think of all the "how to use Guix" guides
that people have written; they'd all become stale.



Re: delete-generations or --delete-generations?

2021-09-08 Thread Ludovic Courtès
Hi,

zimoun  skribis:

> I speculate too. :-) I guess because the idea behind “guix system” is
> one action at a time however “guix package” can compose actions in one
> transaction (guix package --install=foo --remove=bar).  Using the
> default CLI parser (SRFI-37), it seems easier for composing to use the
> options (--) than to extract actions.  For instance, if it was
> “guix package ” as it is with “guix system”, then it is harder
> to parse the composition, i.e.,

Yeah, long ago Alex Kost and others proposed turning some of the current
‘guix package’ options into sub-sub-commands of a new ‘guix profile’
sub-command: ‘guix profile install foo’, ‘guix profile
delete-generations’, etc.

It may be consistent but maybe a bit far-fetched and annoying to type…

Ludo’.



Re: delete-generations or --delete-generations?

2021-08-27 Thread zimoun
Hi Raghav,

On Thu, 26 Aug 2021 at 21:04, Raghav Gururajan  
wrote:

> Why there is no '--' prefix to 'delete-generations' for `guix system`, 
> when there is for `guix pull` and `guix package`?

I speculate too. :-) I guess because the idea behind “guix system” is
one action at a time however “guix package” can compose actions in one
transaction (guix package --install=foo --remove=bar).  Using the
default CLI parser (SRFI-37), it seems easier for composing to use the
options (--) than to extract actions.  For instance, if it was
“guix package ” as it is with “guix system”, then it is harder
to parse the composition, i.e.,

  guix package install foo remove bar

Aside the CLI parser is more work than just using ’args-fold’ from
SRFI-37, ambiguities happen: consider the case where ’remove’ is also a
package, for instance.

Then the other actions (--list-generations, --show, --search, etc.)
would inherit from this initial “guix package” design about composition
for a install/remove transactions.

Well, I agree that “guix system” is inconsistent with the rest of
commands.  First, “guix system” does not enjoy the typo hinter:

  $ guix system delte-generations
  guix system: error: delte-generations: unknown action

compared to:

  $ guix package --delte-generations
  guix package: error: delte-generations: unrecognized option
  hint: Did you mean `delete-generations'?

Well, although it is obviously fixable. ;-) Second, it leads to corner
cases as describe by the manual, for instance,

  $ guix system delete-generation -1
  guix system: error: 1: unrecognized option

here ’-1’ is considered by the parser as a short option, so one needs:

  $ guix system delete-generation -- -1

Issue which does not happen using “--delete-generation”. :-)

On the other hand, the composition is not totally true, for instance:

  $ guix package --show=cuirass --search="GNU hello"
  name: hello
  …

  $ guix package  --search="GNU hello" --show=cuirass
  name: cuirass
  …

although it is debatable to compose them. :-)


Ah consistent CLI, so complicated topic! ;-)


Cheers,
simon

PS: It reminds me issues with short-name accepting optional argument:

   guix package -I -p /tmp/profile # fails
   guix package -p /tmp/profile -I # works

 where a next action is described
here . :-)




Re: delete-generations or --delete-generations?

2021-08-26 Thread Jack Hill

On Thu, 26 Aug 2021, Raghav Gururajan wrote:


Hello Guix!

Why there is no '--' prefix to 'delete-generations' for `guix system`, when 
there is for `guix pull` and `guix package`?


Raghav,

I don't know (but I'll speculate in a bit), but it's not just 
delete-generations. All of the guix system subcommands (e.g. init, 
reconfigure, list-generations) are like that. I suspect this is due to the 
organization of all these system-related subcommands under one top level 
command. These subcommands are different than options like --no-substittue 
and --keep-failed.


I do see what you mean by it being organized a little bit differently than 
the other guix commands though. I guess it would be closer if there were a 
guix system generations subcommand with --delete --list etc. options. I 
have no opinion if this would make sense the implement though.


Hope that helps,
Jack



delete-generations or --delete-generations?

2021-08-26 Thread Raghav Gururajan

Hello Guix!

Why there is no '--' prefix to 'delete-generations' for `guix system`, 
when there is for `guix pull` and `guix package`?


Regards,
RG.


OpenPGP_0x5F5816647F8BE551.asc
Description: OpenPGP public key


OpenPGP_signature
Description: OpenPGP digital signature