Subject: bug#38529: Make --ad-hoc the default for guix environment proposed deprecation mechanism

From: zimoun <[email-masked]>
Date: Thu, 12 Dec 2019 17:47:23 +0100

Hi Gábor,

Thank you for summarizing the discussion on IRC that I missed.

Maybe I miss a point. Is the aim to conserve the "--ad-hoc" option
with a different effect? Or why do we want to conserve this option
name?
It appears to me simpler to give another name, for example
"--inputs-of". And it is more meaningful.

To be concrete, the different cases; (-) means current behavior and
(+) the new one:

1.
- guix environment foo
+ guix environment --inputs-of foo

2.
- guix environment --ad-hoc bar
+ guix environment bar

First, when "--ad-hoc" is used then it reports a warning: deprecated
option and falls in the current behavior.
When "--inputs-of" is used then it falls in the new behavior.
Therefore, no needs of the ugly "--ignore-deprecated-ad-hoc".

In other words, with the same future guix version,

 # Alice
 $ guix environment foo --ad-hoc bar
 Warning: deprecated... explanations...
               instead use:
                guix environment bar --inputs-of foo

 # Bob
 $ guix environment bar --inputs-of foo

Second, the previous "guix environment foo" (dependencies of foo) is
inconsistent with the new "guix environment bar" (only the package
bar). Therefore, let introduce the GUIX_ENVIRONMENT_DEPRECATED
variable to distinguish both, as you said.

 # Alice
 $ guix environment foo
 Warning: previous behavior requires GUIX_ENVIRONMENT_DEPRECATED=1
               turn off the warning: GUIX_ENVIRONMENT_NOWARNING=1

And Alice has now a new shell with the package foo. If she wants the
dependencies, she has two options:

$ GUIX_ENVIRONMENT=1 guix environment foo
or
$ guix environment --inputs-of foo

 # Bob
 $ guix environment bar
 Warning: previous behavior requires GUIX_ENVIRONMENT

And if Bob is annoyed by the warnings each time, he globally turns off
with the variable GUIX_ENVIRONMENT_NOWARNING=1.

Couple of months later -- after the period adoption -- we remove the
variables GUIX_ENVIRONMENT_NOWARNING and GUIX_ENVIRONMENT_DEPRECATED;
still keeping the warning with the "--ad-hoc" option. And then, after
we can remove the "--ad-hoc" option if required.

Maybe a miss a point. But the addition of the flag appears
"--too-long-to-type" to me ugly.

What do you think?

All the best,
simon