Stop duplicating existing tools!
On the Unix Friends and User Campus Kamp 2023 I held a talk called “101 Kommandozeilen-Werkzeuge” (“101 Commandline Tools”), where I showed the audience a number (actually more than 101) of commandline tools for Linux that are either cool, helpful or in any other way nice to know of. For the Linux-Day in Tübingen, I added some more tools to that presentation just this morning.
The range of tools is rather huge, from CLI utilities for processing structured data to full-fledged TUI applications for finance tracking, everything is included.
Did I say everything?
Well, not completely everything!
There's already five dozen!
There's probably five dozen different TUI applications for system monitoring. The most prominent is probably htop
, which is a huge improvement over top
(YMMV, just my opinion here). Then, there's also bottom
, tiptop
, glances
, bashtop
, bpytop
, btop
, gtop
and probably another dozen more of these.
All of these bring something new to the table. Configurable layout, better graphics,... whatever.
The next obvious thing is terminal file managers. When I started learning about Linux and especially the commandline, there was “Midnight Commander”. Later, there was also ranger
, which is (again IMHO) a great improvement over “Midnight Commander”. Today, there is fff
, nnn
, vifm
, fm
, lf
, felix
, joshuto
and probably another dozen of the same. Guess what? They all look the same, do the same, and have approximately the same feature set – although of course I would think that ranger
still has the most features.
Another thing is text editor. I know this is a notoriously dangerous topic among Linux folks and commandline enthusiasts. I am myself guilty of evangelizing neovim at every opportunity and I do it mostly for the lolz, but not only. I honestly think it is the perfect text editor and I cannot for the life of me understand how anyone would ever want to work with these abominations called “IDE”s – or even a browser just for text editing.
But that's another topic.
In the beginning there was vi
(yes, Linux greybeards, nowadays we can ignore that there was in fact a time before vi
). Then there was vim
, which was an improvement (pun intended). For a rather long time now there is neovim
(“long” in terms of computer-science time calculation).
Then there's also emacs
. There's nano
and there's probably five more that I do not know of that are similarly old and in use on some machines – I heard that Torvalds himself uses a patched version of microemacs
or something like that.
I don't mind all of the above with regards to text editors. But today, there's also amp
, helix
, kakoune
, micro
, slap
, turbo
, zee
, pepper
, lapce
, zed
, glyph
, hired
, kibi
, xi
, ox
– and I do not even include atom
, vscode
and all the other “big” “gui” editors here, let alone the fifteen different neovim
GUI frontends. There's even a wikipedia list about text editors that is remarkably long – but doesn't even list the ones I listed above.
Seriously, almost none of these bring anything new to the table with regards to text editing. And what I do explicitly not want to say here is “just reach for (neo)vim”! No, I don't want to say this. I see that some of these improve the status quo of what older editors bring to the table – for example (IIRC) xi
was the one that brought rope datastructures and improved performance of text editing under the hood. But that's not what I mean – What I mean is the five dozen text editors that are just a clone of one another without any improvement to what should be their job: text editing.
Instead, make something new!
Now I have been bitching about people investing their (probably free) time in something that they love doing. Yep, I am the asshole now here.
I don't really mind that, me expressing my thoughts about people wasting their time here. What I want to express, though, is that I am really sad about so much engineering energy and creativity lost into something that does not bring us forward as developers and Linux commandline enthusiasts in terms of tooling.
There are so many great tools out there that are absolutely amazing and bring new concepts for doing things – one of my favorite examples is fselect
, which one can use to query the filesystem with SQL queries.
You may think that this is a shit way of interacting with your files – but that's not the point I want to make! This tool is something that combines two things in a creative way that maybe someone has thought of before, but nobody implemented it. So it brings something entirely new to the table. And that's what I want to see out there. Not the seventieth iteration of a TUI file manager!