Cat -v Considered Harmful

Written By: Jake Bauer | Posted: 2020-05-08 | Last Updated: 2020-05-08

I spent a long while today going through many of the articles on Particularly, I spent a lot of time going through each entry under All software sucks. On that page is a table listing software considered harmful alongside non-harmful alternatives.

After having a cursory look through the table, I went on to read each page discussing why each bit of harmful software is considered harmful and, for the most part, there are valid criticisms and explanations given. In most of the mentioned software categories, in fact, it’s easy to see why these programs would be considered harmful. For example, as much as GCC is a really popular compiler, there is a ton of complexity behind its code. It is not at all a simple piece of software. Though, frankly, I’m not experienced enough to know how much complexity in a compiler is too much nor would I know what could be changed in GCC to make it more simple.

Despite most of the examples given making intuitive sense or being backed up with some quotes by experienced programmers (Rob Pike, Theo de Raadt, and the like), many of the “things considered harmful” seem to be entirely opinion-based. Take the license section as an example: “GPL, LGPL, Apache Software License, MPL, CC”, is considered harmful where “ISC, MIT/X, BSD, CC0, public domain” is not. This is clearly just the authors’ opinion and preference for permissive licenses which tend to be smaller and easier to read and understand simply because they hardly impose any conditions. Yes, those larger licenses are relatively harder for a layperson to understand, but hardly impossible assuming one takes the time to read them. Not to mention the benefits that copyleft licenses provide for preserving end-user freedom.

Furthermore, for some of the pages specific to a piece of software, the only discussion provided is a humorous chat log such as for the GRUB page or a simple “Q&A” such as for GNU Auto*hell. For someone such as myself, unfamiliar with the particular complexities underlying some of this software, these pages aren’t exactly helpful and don’t do much to show how the software is harmful. They do explicitly say:

Note: At the moment a detailed rationale is not provided for most of this, so figuring out why some things are considered more or less harmful than others is left as an exercise for the reader. Here is a hint: complexity is the bane of all software, simplicity is the most important quality,

though, so I wasn’t expecting everything to be plainly spelled out for me with highly cogent arguments.

On the whole, I agree with a lot of what is laid out in the explanations. In general: complexity bad; simple good. It’s the viewpoint that I had going in and the examples definitely strengthened that opinion (I still don’t particularly like Go though).

This is my fourteenth post for the #100DaysToOffload challenge. You can learn more about this challenge over at