Use the right tool for the job

Published on 2021-09-05. Modified on 2021-09-07.

I am sure you have heard it many times, "use the right tool for the job", yet at the same time we're often inclined toward a specific operating system or a specific piece of software. And while it's quite normal to have a favorite operating system or a favorite piece of software, it can be very counter productive to only use a single solution for every problem.

One of my favorite operating systems is OpenBSD, but despite the fact that I love OpenBSD I don't use it e.g. as a storage server. One of the reasons for that is that I prefer ZFS on FreeBSD whenever I setup storage servers.

Without a proper balance in your way of thinking, without remembering the "use the right tool for the job" saying, you might be inclined to use one operating system for everything. There are situations where a Linux distribution is a better choice than a BSD variant and vice versa.

The same can be said for something like systemd. While we can argue against e.g. the hardcoding privacy compromising DNS servers in systemd-resolved by Poettering and Co., it doesn't mean that you should never use a Linux distribution with systemd. Always consider the long term implications of your choice, both technical and business wise.

Another issue that is important to consider is support. When a piece of software is only developed by a handful of people and only used by a small minority, it not only gets much less "battle testing", but the amount of people that are able to help you is much less, and it can be close to impossible to find relevant, updated and reliable information online pertaining to a specific problem.

Some open source projects even has a group of tight-knitted developers that can be downright hostile, arrogant and stuborn. Go to the mailing list archives of a project and look through old IRC logs to see how people are treating each other. Notice if there is a pattern. If you find a lot of hostility, then that's properly not the place where you're going to get much help.

When you're going to solve a specific problem consider deeply what system or set of tools that might solve the problem best. Consider political situations as well, not just technical merit, as problems with e.g. vendor lock-in or cancellation of development is a serious issue. Consider how battle tested the solution is. Never make a choice based solemnly on some kind of philosophy or idealistic idea, nor on hype and trends, in the long run you will only hurt yourself and possibly your clients too.

Hence, use the right tool for the job ;)