New blog post: Rant: Why suckless sucks
This commit is contained in:
parent
06ff42b7c9
commit
2d85eac7dd
106
articles/Rant Why suckless sucks.md
Normal file
106
articles/Rant Why suckless sucks.md
Normal file
|
@ -0,0 +1,106 @@
|
|||
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!
|
1
articles/Rant Why suckless sucks.md.date
Normal file
1
articles/Rant Why suckless sucks.md.date
Normal file
|
@ -0,0 +1 @@
|
|||
2023-10-16
|
1
articles/Rant Why suckless sucks.md.title
Normal file
1
articles/Rant Why suckless sucks.md.title
Normal file
|
@ -0,0 +1 @@
|
|||
Rant: Why suckless sucks
|
Reference in a new issue