unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: "Thompson, David" <dthompson2@worcester.edu>
Cc: 57467@debbugs.gnu.org
Subject: bug#57467: 'guix shell' does not honor default behavior when given a specific command to run
Date: Mon, 05 Sep 2022 15:06:52 +0200	[thread overview]
Message-ID: <871qsq3r83.fsf_-_@gnu.org> (raw)
In-Reply-To: <CAJ=RwfbKD2kQ2d_=RAHq3RMmKpuMoAC5hj9GrxhwNLBp4wSGkQ@mail.gmail.com> (David Thompson's message of "Tue, 30 Aug 2022 15:26:34 -0400")

Hi David,

Thanks for your feedback on this.

"Thompson, David" <dthompson2@worcester.edu> skribis:

> So there are some competing expectations here. The status quo is that
> non-interactive invocations of 'guix shell' will not load a guix.scm or
> manifest.scm file unless explicitly told to via --file/--manifest following
> the "explicit is better than implicit" philosophy.  People like myself who
> almost exclusively invoke 'guix shell' without any arguments would expect
> that 'guix shell -- make' would load their guix.scm file like they're used
> to.  It is the latter expectation that is typically the status quo in other
> language environments.  For example, in Ruby land, 'bundle exec foo' runs
> the command 'foo' non-interactively in the context of a project and you
> don't have to tell it where to find the conventional Gemfile because it's
> the default.  Treating interactive and non-interactive invocation
> differently in 'guix shell' was a surprise for me.  Of course, 'guix shell
> -D -f guix.scm -- make' works, but it doesn't "just work."

Right.  As you note, there were different expectations and constraints
when we discussed this.  We ended up with a tradeoff that has its pros
and cons.  The whole discussion took place here:

  https://issues.guix.gnu.org/50960

As a side note, I think as a project we may want to set up an RFC kind
of process to have a documented way to make decisions like these.  This
would ensure every person who wants to chime in has an opportunity to do
so, even people who would not follow implementation discussions or
follow the patch stream on guix-patches.  Food for thought!

> Both viewpoints have their merits and I'm wondering if there's a way
> to satisfy both expectations.  Perhaps 'guix shell -- make' would load
> guix.scm, but 'guix shell --pure -- make', or any invocation with any
> flags, would not?  Or, less ideal, a new short flag that can be passed
> that would be the equivalent of `-D -f guix.scm` (or the manifest.scm
> variant) to at least make for less typing.  Personally, I think that
> defaulting to loading from a conventional file when no packages are
> specified is much more user friendly than generating an empty profile,
> regardless of interactive vs.  non-interactive.

The main reason to me for distinguishing non-interactive behavior is
ensuring that scripts behave in a deterministic fashion, as opposed to
having their behavior dependent on the presence of a file in $PWD.

FWIW, I’m rather satisfied with the current behavior, though I’m open to
other opinions (and indeed, feedback from users of other tools in this
area is much welcome).

The main difficulty here is that, should we eventually decide to change
behaviors, we’ll have to devise a migration timeline etc.  (As an
example, we chose to keep ‘guix environment’ until at least May 2023;
all this must take time if we want to avoid breaking user workflows.)

Thoughts?

Thanks,
Ludo’.




  reply	other threads:[~2022-09-05 13:13 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-28 21:58 bug#57467: 'guix shell' does not honor default behavior when given a specific command to run Thompson, David
2022-08-29  1:28 ` Thompson, David
2022-08-29 10:29   ` Maxime Devos
2022-08-29 12:48     ` bug#57467: [EXT] " Thompson, David
2022-08-30 13:24       ` Maxime Devos
2022-08-30 13:39         ` bug#57467: [EXT] " Thompson, David
2022-08-30 14:33           ` Tobias Geerinckx-Rice via Bug reports for GNU Guix
2022-08-30 16:22             ` bug#57467: [EXT] " Thompson, David
2022-08-30 19:26 ` bug#57467: [EXT] " Thompson, David
2022-09-05 13:06   ` Ludovic Courtès [this message]
2022-09-05 17:23     ` Thompson, David
2022-09-05 19:53     ` Maxime Devos
2022-09-06  7:18       ` Ludovic Courtès
2022-09-06 11:03         ` Maxime Devos
2022-09-06 11:33 ` Thompson, David

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871qsq3r83.fsf_-_@gnu.org \
    --to=ludo@gnu.org \
    --cc=57467@debbugs.gnu.org \
    --cc=dthompson2@worcester.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).