Picture from suckless website.
You might already know some of the suckless programs.
dwm, dmenu and st are quite popular. They also are 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.
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 use git to 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.
have to are allowed to customize them to perfectly fit your needs and wishes.
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.
The strength of a system should stem from the way its parts work together, not from the strength of the parts themselves. This is also what the UNIX philosophy tries to achieve.
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.
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.
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, called “Philosophy”, I don’t really conform with the “Manifest” though:
I guess it’s just poorly expressed, but I don’t think anybody writes more lines for the sake of writing more lines.
I also don’t think stripping off as many lines as possible always improves the simplicity of the code. While trying to maximize the amount of code is certainly stupid, trying to minimize it by all means is not always better.
Sure, less code is better to read, understand and debug in general, but if you have to make the 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, their opinion regarding the current condition of the web is also aimed in a similar direction and is something I strongly agree with too. It can be read here.
If you want to give me some feedback or share your opinion, please contact me via email.
© Niklas Bühler, 2021 RSS / Contact me