This repository has been archived on 2024-01-22. You can view files and clone it, but cannot push or open issues or pull requests.
speedie-page/articles/Rant Why suckless sucks.md

107 lines
4.9 KiB
Markdown
Raw Normal View History

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](https://suckless.org/sucks) but more importantly a section dedicated
to [systemd](https://suckless.org/sucks/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](https://github.com/bakkeby/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!