Why GNU sucks

Initially announced in '83, the GNU operating system1 has gained a lot of momentum, due to it being the default go-to operating system for the Linux kernel.

Even though initially meant as a joke2, the recursive acronym is becoming more of a reality every day.

Lets take a look coreutils package.

sort

sort is obviously a program meant to sort files, yet, GNU has managed to cram in a couple … extra … features.

Example usage of sort would be;

ls -1 logs/ | sort -n

The above command lists the directory logs/, where we can imagine there being multiple files named, or at least prefixed by the date of which they were created (or last modified). Then pipes these files to sort, which is given the -n3 flag.

sort holds the lines that were piped to it, then spits out the sorted output to stdout.

Seems like a simple processs, with a simple goal, right?

To most people, this is the sane way of going about it.

GNU does not agree.

Over the years, they've added so much code to sort, that it's closing up on 5000 lines.

They've done everything from trying to steal uniq's job, to making shell redirection obsolete.

They even went so far as to add a random feature.

Hold on, what? Isn't "random" a polar opposite or "sorted"1?

You might think that GNU's sort is a single instance, but no, this horrifying code quality is pretty uniform among all GNU applications.

Here's another example.

All this program is supposed to do is to return an exit value of 0.

This list could go on and on, but hopefully you get the gist.

  1. Yes, it is.
  2. GNU is a recursive acronym, GNU is Not UNIX™
  3. -n is shorthand for numerical sort