[Nix-dev] less: When assumptions ruin the world

Ertugrul Söylemez ertesx at gmx.de
Fri Jan 2 02:36:31 CET 2015

Hi everybody,

since Nix 1.8 much of the output of nix commands is piped through
`less`, which is certainly meant to be a convenience, but that
convenience depends on a few assumptions:

  * the user uses a crappy terminal emulator,
  * the user is interested in all of the output,
  * the user reads using their eyes.

The first assumption is wrong for me and probably for a lot of other
people as well.  The second assumption is wrong for me most of the time;
in most cases only the last few lines are interesting.  The third one is
wrong for blind people.  If they can't afford an external braille
terminal (not those single-line pads, which are expensive enough, but a
real terminal), they will rely on text-to-speech.

If not all three assumptions hold, then this "feature" makes Nix
consistently `less` convenient to use.  Not only do I have to press `q`
now, but `less` is an ncurses program, which means that the output
disappears after quitting.  This does not happen when I just use my
terminal emulator to scroll, and yes, most of them if not all allow
scrolling with the keyboard (commonly Shift+PageUp and Shift+PageDown).

Furthermore we hold in our hands an operating system that follows the
Unix philosophy, which is about composability.  There is simply no need
to precompose everything with `less`.  As humans we are smart beings,
and we have a powerful shell, so that every user can decide for
themselves when to use a pager.

Also remember that we may have disabled users.  A blind person will
dislike this new anti-feature even more than I do, because `less` is not
exactly a text-to-speech-friendly program.

Feature request 1:  Please do your part in saving the software world and
remove this anti-feature.  Don't even consider making it optional.  It's
useless.  Remove it.  In the future, whenever you think that some
UX-related automation will make things easier, think again.  You are
most likely wrong.  Just look at the huge damage that Microsoft has done
by assuming that users are complete idiots.

Feature request 2:  Also I strongly believe that `--help` should
absolutely never open a man-page.  When we need a manual, we will use
the `man` command, but in most cases we just need a quick reminder of
what that one option was called that we're failing to recall, so I would
much prefer the original purpose of the `--help` option:  Print a short
summary to the terminal.

If this appears superficial to you, please remember that many little bad
things can do a lot of damage in the long run.  The purpose of this post
is to wake everybody up before it's too late.

I hope that some people agree with me, and if yes, I will turn these
into actual feature requests on Github.  I'm also happy to help with
implementing the latter one, because writing a good `--help` system for
commands with subcommands is not necessarily easy.


More information about the nix-dev mailing list