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 rarely use it for anything other than routers and firewalls. One of the reasons for that is that OpenBSD simply cannot compare to FreeBSD or Linux when it comes to performance, whether it is performance in general or from a disk I/O perspective (mainly due to FFS2). Another reason is that it is lacking some of the features I use on a regular basis, both on the desktop and on servers.

A great advantages of OpenBSD is that the project strives to be as politics-free as possible, and solutions are decided on the basis of technical merit. However, this also means that sometimes the project can just drop support, from one release to the next, for something you might depend upon.

Furthermore, even though OpenBSD is a very well designed system it just doesn't get the same "battle testing" as some of the popular Linux distributions. One huge advantage of Linux is that the most popular distributions are used by millions of people and companies world wide and many big companies contribute code not only to the kernel, but also to many applications.

I generally don't like the way some of the big companies are conducting their business, e.g. when they track users without consent, or when they conduct themselves in a less than proper manner. However, several major companies have contributed massive amounts of code and amazing improvements to both the Linux kernel and specific software applications. FreeBSD has also gained a lot of performance improvements from e.g. Netflix over the last couple of years.

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 much better choice than a BSD flavor. Not only that, but there are situations where it would be down right stupid to use something like OpenBSD instead of something like Debian Linux or Devuan Linux - depending on whether you want systemd or not.

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 technical implications of your choice, escpecially if you're maintaining servers online.

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 how battle tested the solution is. Never make a choice based solemnly on some kind of philosophy or idealistic idea, in the long run you will only hurt yourself and possibly your clients.

Hence, use the right tool for the job ;)