ibraheemdev/modern-unix

Wording: replace "modern" with "human-friendly"?

JPenuchot opened this issue · 4 comments

I really enjoy using most programs in that list, but using the words "modern" or "replacements" to describe them is inaccurate. Most of the programs in that list are indeed more pleasant to interact with, but they simply don't have the same purpose as the programs they're compared against.

For example, bat is a program designed for human interaction, but its output isn't meant to be piped into anything as opposed to cat. Similarly, exa and lsd are fine for human interaction but their outputs aren't meant to be parsed, and same goes on for most of the programs present in that list.

Hence the proposition to replace "modern" with "human-friendly", and presenting them as alternatives rather than replacements.

Let's look into dictionary
Modern
Pertaining to a current or recent time and style; not ancient.

Modern doesn't mean "everything before us was awful".

Tools listed in this repo are in modern style:

  • colorized
  • has interactive mode
  • has sane defaults:
    trying to make sense from any input, and not garbage in, garbage out as it was modern in "good ol' days"
  • trying to do the same, but faster, prettier, readable, interoperable
  • has progress bars

All of this (except speed) is not in Unix philosophy
So yeah, it's modern Unix.

p.s. Indeed, you can pipe bat

$ bat autocomplete.py | grep a
from _global import *
def reload():
    global completions
        completions, tags_bm25 = load_object("autocomplete")

The link you cited mentions minimalism and modularity as part of the Unix philosophy. None of these are either minimalist nor modular as they just add UI characters that are painful to parse.

BTW I'm not saying the Unix philosophy should be a sacred text for software design, just saying that even though these tools do provide better user experiences for human interaction, they're not replacements simply because they don't provide the same functionality. You might have your own personal definition of "modern Unix", but even today nobody would want to use these tools in scripts simply because they would be unnecessary additional dependencies (except for jq).

Unix usage isn't limited to human interaction, and these tools are simply not a good fit for scripting.

Unix usage isn't limited to human interaction, and these tools are simply not a good fit for scripting.

My release/development scripts use fzf, bat and xh just from this list and fx, eat, await that has PR's open. And somehow they are good in it.