A new generation of universal tools: unix-like, composable, maintainable, git-aware, cross-platform

A new generation of universal tools

unix-like, composable, maintainable, git-aware, cross-platform

For ages the gold standard for tooling has been the GNU/Linux stack:

Chapter 3. The Unix Tools Philosophy
A tool is a simple program, usually designed for a specific purpose, it is sometimes referred to (at least throughout this document) as a command.
The “Unix tools philosophy” emerged during the creation of the UNIX operating system, after the breakthrough invention of the pipe '|' (refer to Chapter 6 for information on using the pipe).
The pipe allowed the output of one program to be sent to the input of another. The tools philosophy was to have small programs to accomplish a particular task instead of trying to develop large monolithic programs to do a large number of tasks. To accomplish more complex tasks, tools would simply be connected together, using pipes.
All the core UNIX system tools were designed so that they could operate together. The original text-based editors (and even TeX and LaTeX) use ASCII (the American text encoding standard; an open standard) and you can use tools such as; sed, awk, vi, grep, cat, more, tr and various other text-based tools in conjunction with these editors.
Using this philosophy programmers avoided writing a program (within their larger program) that had already been written by someone else (this could be considered a form of code recycling). For example, command-line spell checkers are used by a number of different applications instead of having each application create its own own spell checker.
This philosophy lives on today in GNU/Linux and various other UNIX system-based operating systems (FreeBSD, NetBSD, OpenBSD, etc.)

Source: Linux Documentation Project, Tools Summary, Chapter 3

The sheer success of the GNU coreutils, has created a compatibility problem -- any change will break too many dependant systems. This in-turn has created a 2nd-mover opportunity: a modern git-aware, cross platform (unix, windows, mac), implemented usiing modern, safer languages like rust.

These tools are better, cleaner, faster and reduce friction when moving between Windows, Linux, MacOS.

I have tried to organise these utils/tools into groups:

Tier-1: must-have

Tier-2: great utility, quality of life, not critical

Tier-3: a more consistent environment

Tier-4: Package manager

General Key Features

  • not a gnu tool, 'standard' tool -- which allows innovation without loosing the Gnu coreutils
  • not backwards compatible - which, strangely in this case, is a good thing
  • modern (rust, threaded, effecient)
  • git aware!! (skips .git/, respects .gitignore)
  • cross platform (linux, mac, windows, docker)
  • fast, really fast
  • text configuration XDG standard

Getting Started With Windows

choco install -y git wget curl
choco install -y ripgrep fzf fd bat starship
choco install -y alacritty kitty wezterm microsoft-windows-terminal