speedie.site

Rant: Why suckless sucks.

2023-10-16

As you guys may know, I am a huge fan of suckless software such as dwm, st and dmenu, not to mention the suckless philosophy. But with that said, I have never agreed with suckless on everything, and some parts of their philosophy is very frustrating.

systemd

suckless has a page dedicated to software that sucks but more importantly a section dedicated to systemd. Problem is, most of the information on this page is either out of date, not relevant, not an actual problem or simply a bug that was patched YEARS ago.

It is completely fine to dislike systemd, but have a valid reason for it, such as simply preferring another init system or the resource usage or something. I personally use Gentoo with systemd because while systemd isn't an init system (it's a lot more than that), I find that it does everything I need an init system to do, with a great logger on top of that. The full package provides an awesome experience for me personally.

sucks

Generally their sucks page does list out some programs that I don't really like, such as texinfo, subversion and cmake. But I think saying programs suck simply because it's written in C++ is ridiculous, and this is where I disagree with suckless.

suckless doesn't like C++ very much, and they definitely show it. I really like C++ though, and I don't think I'm actually going to write much C when I can use C++ instead. I may get into why I prefer C++ in the future, but disliking a program because it's not written in C is stupid, provided the language is fast enough to do the job well.

Their codebase

A lot of new users talk about the awful suckless codebase, and I think this is totally fair. The reason dwm is considered "hard" is not because C is hard, it's because you don't document your codebase at all and use variable names that only the people who wrote the code can actually comprehend without spending a very long time learning the codebase. We're fortunate enough to be blessed with dwm-commented but what about the other suckless software? How will you ever learn the codebase inside out?

Can you guys tell me what showhide() means? What about recttomon? r? lrpad? da? dl? Unless you are familiar with the dwm codebase and Xlib functions and types, of course not. This is exactly why new users find dwm and st intimidating. The C language isn't hard, but your codebase is not documented (and you have refused to do) which isn't terrible, but the variable names mean absolutely nothing and there is no cheatsheet or anything, which is very bad when you're a community focused on users writing their own patches and contributing them to the wiki.

I am quite familiar with the dwm codebase I'd say, but I stepped away from it for a few months to work on personal projects. As soon as I went back I ended up forgetting what most functions and variables do as well as where they're actually set and called from.

suckless is focused on clean, readable, well written code but while their code is relatively clean, it's anything but readable, and in my opinion such code cannot be called well written either. In general, suckless software also tends to prioritize less code over efficiency and speed. I have to disagree on this as well, and I would much rather have 10k lines of fast code than 2k lines of slower code.

This is just personal opinion though, but why do they feel it's necessary to place a line break after the type name (such as int or void) and then ANOTHER line break before the opening bracket. This just leads to less compact code, which seems like it would contradict their goal of well written code.

Documentation

Many people seem to complain about the lack of documentation for suckless software. I don't think this is completely justified, because most if not all suckless software comes with a man page, but when you actually want to hack on the dwm codebase, you are totally screwed.

If you are completely new to C like I was when I got started with suckless software, you're going to hate your life and constantly complain about how awful C is when really suckless just can't document their code. So people complaining about the documentation most likely just want better documented code, but naturally suckless being suckless they consider documentation "bloat" which is a shame.

Conclusion

Will I stop using suckless software? No. Do I agree with the suckless philosophy? Yes, to a certain degree. Software bloat is a real problem, and it does need to be solved. But if you want to actually avoid software bloat, at least write well documented software yourself.

While the suckless community has in general been quite nice, suckless themselves most likely secretly wants an elitist community. This is a fair belief to have, but I think they take it a bit too far.

With all of this said, I will write software in C++, I will use systemd and Gentoo. Have a good day!

Source

Comment

To post a comment, you must be logged in.