About the suckless philosophy

Trying to escape local optima on a random walk through life. Home / RSS / Contact


dwm Picture from suckless website.

You might already know some of the suckless programs.
dwm, dmenu and st are quite popular. They are also some of the best programs I’ve ever used.

Still, some people try them and almost instantly discard them, because they seem not useable to them.
This is especially true for surf, a minimal web browser.
While I understand where this opinion arises from, I believe it’s because those people do not understand the purpose and expected usage of these programs.

How to suck less

The suckless programs are not to be used as compiled executables:
You shouldn’t download the program with your package manager and just use it as it is. You should download the source instead, configure it (usually by editing config.h), patch it and customize it to your needs.

Using the programs as they are doesn’t make much sense in most cases, as there is a lot of functionality missing. But this is on purpose.
You have to are allowed to customize them to perfectly fit your needs and wishes. And the best part: Doing so is not difficult at all, as every program only consists of very few lines of code. The code is also very clear, thus easy to change and extend.

This fact allows you to start with a really tidy and minimal code base and customize it to end up with exactly the program you need. Nothing more, nothing less.

Programs should compose well

The strength of a system should stem from the way its parts work together, not from the strength of the parts themselves.

This is the essence of the UNIX philosophy.

Douglas McIlroy originally said:

Expect the output of every program to become the input to another, as yet unknown, program.

dmenu is the most useful and convincing example I know that fulfills exactly this.

It seems to me like there are a lot of programs which don’t conform with the UNIX philosophy at all. Most programs try to do many things at once and end up being less useful and just more complex and bloated as if they had just done one thing right.
I believe this is something we should change.

Actually making use of the free in free software

What’s the use of free software if every source code I want to change has thousands and thousands of lines? I won’t be able to even read through them all, won’t fully understand the program and thus won’t be able to apply all the changes I need to.
Especially not if I want to customize not only one, but most of the programs I use.

Having simple and small programs with clearly written code is essential for actually making use of a major advantage of free software. There’s really nothing better than being able to fully customize your whole system without any restrictions.

Why the suckless manifest sucks

I suggest you take a look at their own presentation of the topic here. It’s really short and well worth the read.

While I totally agree with the first paragraph, the one called Philosophy, I don’t really conform with the Manifest:
I guess it’s just expressed poorly, but I don’t think anybody writes more lines for the sake of writing more lines. Also, stripping off as many lines as possible doesn’t automatically improve the simplicity of code. While trying to maximize the amount of code is certainly stupid, trying to minimize it by all means is not really better. Sure, less code is easier to overview, understand and debug in general, but if you have to make code more complex in order to save a few lines, you should just keep them instead.

It’s a pity that the manifest doesn’t really get the point across.
The paragraph above it surely does so though.

By the way, the suckless guys’ opinion regarding the current condition of the web is also aimed in a similar direction and is something I strongly agree with too. You can read it here.

Want to leave a comment?

If you want to give me some feedback or share your opinion, please contact me via email.

© Niklas Bühler, 2021 RSS / Contact me