Customizable open source software

· jollygood's blog

#dwm #keepitsimple

Last summer I decided to try out dwm1, the dynamic window manager. I wanted something that arranged my application windows automatically and otherwise stayed out of the way.

This was my first experience with compiling suckless software from source. Having to compile it felt a bit old school at first, after being used to installing software via package managers for many years. I'm familiar with C compilers and makefiles, and dwm compilation and installation was simple, so no biggie. But having the configuration in a C header file felt ...weird.

Open source software provides an opportunity for users to make modifications the software that they use. As an individual user I can customize the source code of open source software that I use. For a long time, I thought that this is was a nice theoretical concept, but not very practical. I've used open source software for decades, I've built extensions and plugins, and contributed code to open source projects. I've compiled kernels. However, many software projects are very complex, and even compiling them in the first place can sometimes be a challenge of its own. I didn't feel that it was really practical to customize software for my personal use by changing and recompiling the source code. Dwm and suckless software changed that for me.

Dwm, and other suckless software, are examples of non-trivial software that is built with a focus on simplicity and minimalism. This focus makes it practical for a user like me to modify the source for my personal use with relative ease.2 First, compiling the project is easy and fast. Second, there is a reasonably low number of lines of code, and the code is pretty straightforward, which makes it more approachable. It might not be for everyone, and I'm sure there are other software with similar qualities, but dwm happened to be the turning point for me.

I think that having the configuration in a header file had something to do with it. Once I had opened config.h in the editor, the step to look at dwm.c was not that big. The next step was to start looking at dwm patches that users have contributed3, and make my own modifications. I installed some patches, and wrote my own modifications on top of those patches. Eventually, I switched to using dwm as my window manager.

In conclusion, I feel very empowered by being able to customize software that I use daily. I switched to dwm mainly because it fits my window management needs very well, but as a side effect I discovered open source software that I felt was practical to customize.


  1. https://dwm.suckless.org ↩︎

  2. To be fair, not everything has been easy. For example, it took me a while to figure out how to configure xinit, set up a status bar, etc. ↩︎

  3. https://dwm.suckless.org/patches/ ↩︎