Subject: [bug#54000] [PATCH 0/2] Not showing upgraded/added packages in 'guix pull'

From: zimoun <[email-masked]>
Date: Thu, 17 Feb 2022 15:41:17 +0100

Hi Liliana,

On Thu, 17 Feb 2022 at 13:52, Liliana Marie Prikler <[email-masked]> wrote:

>> Stats, ~24 updates and ~13 additions per day on average (over the
>> past year).  If you pull twice a day, then yes you can read this
>> information.
>> But, I bet people pull once a week, at best, so it looks like more
>> “noise“ and I guess most people miss the news.
>
> For the record, that's < 150 updates and < 100 additions per week.  Of
> course, these numbers tend to get higher as Guix grows, but for now I
> personally find this both manageable and helpful.  Which doesn't mean I
> want it done by default, just that I want a way of doing it.

On my poor laptop, I barely pull.  Last time, more than 2 weeks ago.

--8<---------------cut here---------------start------------->8---
$ guix describe
Generation 76	Feb 04 2022 11:15:54	(current)
  guix ff093f5
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: ff093f5739a61e77b296feccc48d260b9bb574c0
--8<---------------cut here---------------end--------------->8---

and a typical ‘guix pull --news’ looks like:

--8<---------------cut here---------------start------------->8---
$ time guix pull --news
New in this revision:
  416 new packages: alfis,

[...]

  877 packages upgraded: [email-masked],

[...]

News for channel 'guix'
  New `--execute' option to `guix deploy'
    commit 5c13484646069064c834bbd3cd02c3bc80d94cb6

    The `guix deploy' command has a new `--execute' or
    `-x' option, which allows you to execute a command on
    all the machines that your configuration file
    specifies, as in this example:
    
         guix deploy deploy.scm -x -- herd restart guix-daemon
    
    This is no substitute for full-featured tools such as
    pdsh but it is a useful helper.
  `guix style' can format package definitions
    commit c4fe13c294cc1e31dd8a49ce3981f603fb169e0a

    The recently-introduced `guix style' command can now
    be used to automatically format package definitions
    according to the Guix project's formatting guidelines.
    If you contribute packages to Guix or to a third-party
    channel, you may find it useful.
    
    The new `--styling' option can currently be passed one
    of the following "styling rules": `format', to format
    package definitions, or `inputs', to remove labels
    from package inputs.  Omitting `--styling' is
    equivalent to passing `--styling=format'; previously
    it was equivalent to `--styling=inputs'.
    
    Run `info "(guix) Invoking guix style"', for more
    info.

real	0m7.796s
user	0m8.131s
sys	0m0.500s
--8<---------------cut here---------------end--------------->8---

> Furthermore, news are displayed at the bottom, so if you're not
> interested in the noise, just don't scroll up :P
> Granted, if you're piping the output to a pager, that doesn't help you.

First, because it is too much information, I never do it.
Second, because it is really slow, I never do it.
Therefore, I never read the news.

Well, I read them from Git, browsing after fetching. :-)  Not sure it is
adequate.

I barely upgrade my base system – I made it work once and just use it –
and instead I heavily rely on time-machine and shell.

I agree with your request and I understand the need.  Even, I think
diffing generations can be useful.  But we should keep the default as
simple and fast as possible.

>> Somehow, the feature you want should be separated.  For instance,
>> 
>>     guix pull --updated
>>     guix pull --added
>>     guix pull --new-versions
>
> That would perhaps help if your aim is to optimize for computation
> time, but I'd still prefer all changes.  It also helps that we already
> have that code, so we only have to tell people to e.g. use --changes
> instead of --news if that is the thing they wanted.  
> W.r.t. only listing some of the changes, one could later implement
> options like --changes=added,removed,updated,rewritten,...

We agree.

My point was just to say that ‘--news --details’ is not the correct UI
for the feature you would like because, for instance, currently
’--details’ alone is equivalent to ’--details -l’.  Therefore, what
happens if the user only provides ’--details’?

The option ’--changes=’ makes also sense and it is probably a good
direction; instead of ’--news --details’.

Well, my point is just to say that the feature you want should be
separated from ‘--news’. :-)

>> That feature is interesting but it appears to me orthogonal with the
>> current proposal.
>
> Orthogonal in which way?  In that we could implement such a feature
> without changing the way `guix pull' normally works and vice versa? 
> Sure.  In that we'd not be losing any information if we changed `guix
> pull' without providing such an option?  Eh...

Well, from my point of view, ‘guix pull -l 1d --details’ fits the job
and I miss why it would be an issue; since such display would be barely
used.

To be precise, the option ’-l’ should accept ’last’.  From my point of
view, it is better to have:

    guix pull --news            # just the last news
    guix pull -l last --details

(better meaming encourage people to read news :-)

And we could also imagine some options as ’--details=added’.  Note we
could also imagine to make ‘guix git log’ show some information.  Lot of
imagination. ;-)

Cheers,
simon