The lack of suckless-like simple, hackable software these days is appalling.
@movq@www.uninformativ.de Curious what you would define as βsuck lessβ software? (language agnostic of course!)
@prologic@twtxt.net Ah, Iβm referring to software thatβs similar to that of suckless.org: Small, minimal codebases, small tools, but still useful. dmenu is probably the best example and also farbfeld.
Hereβs the author of Anubis talking about some of their experiences:
https://xeiaso.net/blog/why-i-use-suckless-tools-2020-06-05/
(You can skip the long config and keybinds part.)
@movq@www.uninformativ.de So you wouldn;t consider things written in Go to be βsucklessβ-esque? π€
@prologic@twtxt.net Hm, I wouldnβt say that. Go code could fall into that category as well.
Maybe this topic could use a blog post / article, that explains what itβs about. Iβm finding it hard to really define what βsuckless-like softwareβ is. π€ (Their own philosophy focuses too much on elitism, if you ask me.)
@movq@www.uninformativ.de Yeah thatβs why Iβm striking this conversation with you π Not only do I respect your opinion quite highly π€£ But like you say (and Iβve read their philipshpy) it can be a bit βelitismβ for sure. Iβm genuinely interested in what we think of as software that βdoesnβt suckβ. Tb be honest I havenβt really put thought to paper myself, but I reckon if I did, Iβd have some opinions/ideasβ¦
For example, I reckon software should treat stdout
and stderr
with care and never output logs or other such garbage to stdout
that cannot possibly be useful in a UNIX pipeline π
@prologic@twtxt.net Yeah, this really could use a proper definition or a βmanifestβ. π Many of these ideas are not very wide spread. And I havenβt come across similar projects in all these years.
Letβs take the farbfeld image format as an example again. I think this captures the βspiritβ quite well, because this isnβt even about code.
This is the entire farbfeld spec:
farbfeld is a lossless image format which is easy to parse, pipe and compress. It has the following format:
ββββββββββ€ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Bytes β Description β
β βββββββββͺββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β 8 β "farbfeld" magic value β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (width) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (height) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β [2222] β 4x16-Bit BE unsigned integers [RGBA] / pixel, row-major β
ββββββββββ§ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The RGB-data should be sRGB for best interoperability and not alpha-premultiplied.
(Now, I donβt know if your screen reader can work with this. Let me know if it doesnβt.)
I think these are some of the properties worth mentioning:
- The spec is extremely short. You can read this in under a minute and fully understand it. That alone is gold.
- There are no βknobsβ: Itβs just a single version, itβs not like thereβs also an 8-bit color depth version and one for 16-bit and one for extra large images and one that supports layers and so on. This makes it much easier to implement a fully compliant program.
- Despite being so simple, itβs useful. Iβve used it in various programs, like my window manager, my status bars, some toy programs like βtuxeyesβ (an Xeyes variant), or Advent of Code.
- The format does not include compression because it doesnβt need to. Just use something like bzip2 to get file sizes similar to PNG.
- It doesnβt cover every use case under the sun, but it does cover the most important ones (imho). They have discussed using something other than RGBA and decided itβs not worth the trouble.
- They refrained from adding extra baggage like metadata. It would have needlessly complicated things.
@movq@www.uninformativ.de This is a really good example of βsimplicityβ but achieves the intent and goals π
(Now, I donβt know if your screen reader can work with this. Let me know if it doesnβt.)
I donβt use a screen reader fortunately (actually theyβre pretty garbage). So all good π (I juse use full-screen zoom).
@movq@www.uninformativ.de Yeah, luckily, there is the suckless project. I couldnβt live without dmenu!