In this blog post you will learn what the term suckless program comes from, and what properties suckless software have. I will also discuss why I like to use suckless programs. Last but not least, I will discuss why I think suckless programs can improve your mental and physical health.
The term suckless software has come out of the suckless organization. The suckless organization is a network of people centered around suckless.org, its mailing list, and the founder of the suckless organization Anselm R. Garbe. Anselm has explained why he started the suckless organization in an episode of the FLOSS weekly podcast. I recommend this podcast to anyone who wants to get insight into the suckless organization from Anselm’s point of view. Anselm is also the author of a popular tiling window manager called dwm. The suckless organization publishes and maintains several software programs and has a philosophy document explaining its core beliefs related to software.
Properties of Suckless Software
First, it makes sense to call the software published and promoted by the suckless organization suckless software. It is a very subjective matter what a suckless computer program is. However, based on the texts and programs published by the suckless organization, one can distill a few properties that a program should have to be called suckless. I would summarize the necessary properties of a suckless program like this:
- The Program follows the UNIX philosophy for software design. The program should focus on doing one task and doing that task well.
- The number of features should be limited, and features that can easily be accomplished in some other way (e.g., by piping the output of a program to some UNIX utility) should be excluded.
- The program’s source code should be as easy to understand as possible. Few lines of code usually mean that it is easy to understand what the program is doing.
- The program should also keep things simple and easy to understand regarding the build and configuration process. Typically suckless programs are configured by editing a source code file (commonly named
config.hif it is a program written in C).
- It is okay to depend on other software and libraries if this makes things simpler, easier to understand, and maintain. However, it is positive if the program has few dependencies, making it less likely to break due to a change in some dependency.
- A suckless program’s user interface should primarily focus on technically skilled users such as programmers. The creator should take great care to make the user interface efficient for experienced users, but user-friendliness for users who don’t have a software engineering background is less important.
- Last but not least, the source code of a suckless program should be freely available, and modifications should be permitted.
Programs that don’t follow the properties outlined above might suck (be bad) because they are/have:
- Difficult to use, extend and maintain due to the complexity of the code and the build system.
- Hard to combine with other programs to extend functionality.
- Have many bugs due to unnecessary complexity.
- Easily break if external dependencies change or have bugs.
Example of a Suckless Program
An example of a suckless program is a slide show presentation program called Sent. Sent takes a plain text file as input and displays a window with slides derived from the text file. An empty line signal that a new slide begins. A slide consists entirely of unformatted text or an image. Slides are automatically scaled so the content fits the window. To write a text slide, one writes text, and to create an image slide, one writes a line with the format
@path_to_image_file.png. Sent’s source code is approximately 1000 lines of C code, including whitespaces and comments. One can contrast this with LibreOffice’s roughly 10 million lines of code. LibreOffice is an office suite containing a presentation tool, so it can do more than just presentations. The comparison is thus not fair, but since Sent’s code size is only about 0.01% of LibreOffice’s code size, it still shows a big difference in complexity. This difference means a lot since a programmer could easily fully understand the code of Sent in less than a day, while it would probably take a year or more to understand LibreOffice’s source code to a similar depth.
The program Sent can be so simple as it leverages the fact that many experienced computer users are confident and efficient at editing text in at least one text editor and one image editor. With such external tools, Sent can provide similar functionality as LibreOffice’s presentation tool. Additionally, Sent is more user-friendly and flexible than LibreOffice’s presentation in several ways. Users can edit the Sent presentation in Emacs, Vim, GEdit, or whatever text editor they like. One can create images for image slides in Gimp, Krita, Kolourpaint, Incskape, or whatever fits the particular picture or user. Last but not least, plain text files are straightforward to manipulate programmatically. For example, if a user wants to insert a series of slides for animation or something similar. Sent and LibreOffice are open source, but due to the complexity of LibreOffice’s source code and build process, a user is far more likely to be able to improve or fix a bug in Sent than in LibreOffice. Sent has the suckless properties listed above, and LibreOffice presentation doesn’t.
Why Do I Like Suckless Software
I like Suckless programs because they give me a sense of control. Furthermore, they also give me the power to combine tools to create new tools that I also have a sense of control over. Since I create these new tools, I can also make them fit precisely how I prefer to do things. Let me explain why suckless software gives me control and power. By being small and easy to change, I can fully understand suckless programs, fix bugs, or add extra functionality by myself. Therefore, I can be in control of suckless programs without depending on an external entity. As suckless programs are designed to be easily combined with other software, it is easy to combine them to create new efficient tools. For example, one can easily combine
xdotool, and a text editor to create a text template system that works across all applications.
Still, not all applications can easily have all of the suckless properties. Take advanced 3D modeling software like Blender, for example. This type of software requires sufficiently advanced algorithms and data structures so that they are not easy to understand or modify. However, after spending hundreds of hours with the program, a professional 3D designer can still feel in control of Blender and know its most important functionality. However, many other types of programs, like keeping bookmarks synchronized across computers, can be made much simpler and easier to understand than most bookmarking applications by combining several suckless programs as Luke Smith explains in one of his videos. So even though suckless programs might not be the best for every computing task, one can embrace the suckless way to increase the sense of control and power.
Suckless Software Might Improve Your Physical and Mental Health
Several academic studies suggest that the sense of control is correlated with several positive mental and physical health measurements. I have argued in this article that suckless programs give you a better sense of control. Given that this is true, it is reasonable to believe that using suckless programs might improve your mental and physical health. Given that one takes the research on the sense of control seriously, it is worth contemplating if computer programs that are buggy and overly complex are harmful to your health. Based on my own experience and the people I have seen around me, I think the answer to this is yes.