- Fedora is a recommended distribution for developers, known for its stability and well-stocked repositories. For those preferring a rolling distribution, almost-naked-Arch derivatives like EndeavourOS or ArcoLinux are ideal.
- Stability is crucial for professional software developers, both in terms of the Linux distribution itself and the organization behind it. Large communities and active contributors help identify and address issues more effectively.
- A large selection of developer tools, frameworks, and IDEs stored in your distro’s repositories is also critical for programming on Linux.
Developers have a special set of needs from their operating system, such as performance and access to a wide range of development tools. Knowing that, can we pick a ‘best’ Linux distribution for programmers?
Is Linux Good for Software Development?
At one time, it was common to hear Linux described as an operating system for developers. It wasn’t recommended for the casual or non-technical user. You had to be at least partially code-savvy to even use Linux. That may have been true for Linux in its very early days, but that hasn’t been the case for a long time. Distributions Like Ubuntu, Pop!_OS, and Linux Mint have smoothed the path for newcomers to the Linux world.
Of course, the developers are still here on Linux too, because Linux is such a great platform to develop on. With Linux, you get privacy, stability, and performance. You have access to all the development tools you need, and for free. You have a choice of flexible scripting languages in the terminal window, allowing you to automate build processes, testing, and more.
If the distribution you’re using doesn’t have a particular tool installed by default, it’s usually just a case of firing up your package manager and installing it. All the parts of your tool chain are no more than a single command away.
Linux supports containerization too, through solutions like Docker and Vagrant, and container management systems such as Kubernetes. These make it simple and fast to spin up and manage isolated environments that use far fewer resources than classic virtual machines.
It’s possible to tailor just about any Linux distribution to be what you want it to be, and there are plenty of Linux distributions to choose from. But some distributions are closer to what you need as a development platform, right out of the box, saving you some work. All you need to do is use the package manager to complete your tool chain, and to suit your workflow.
Given that Linux is so customizable and malleable, does it even make sense to nominate some distributions as being better than others for development? I believe it is, but we’ll need to approach it from a different angle. Instead of listing a collection of distributions and comparing their development pros and cons, let’s examine what you need from your development system, and then see if that puts any distribution in the frame as obvious choices.
You Need Privacy, Stability, and Performance
There are two types of stability to consider. One is the reliability of the instance of Linux running on your computer, whether that’s on hardware, in a virtual machine, or in a container. System freezes and kernel core dumps cost you time, introduce stress, and chip away at your productivity.
In the worst case, they can even lose your work, causing you to re-do what you were working on at the time of the crash. Working on a flaky Linux distribution clearly isn’t feasible. You need to select a distribution that is as rock-solid as you can get.
This brings us to the second type of stability. You need to consider the stability of the organization behind the distribution. This doesn’t need to be a corporate entity like Canonical or Red Hat, but it does need to have sufficient community members that you can be confident it isn’t going to peter out and die, and that patches and updates are issued in a timely fashion to address issues, bugs, and vulnerabilities.
Distributions with large, active communities and many contributors tend to identify issues earlier, because they have more eyes on the distribution. They also manage to address them sooner because they have more resources on hand.
Rolling distributions already have the mechanisms and processes in place to get patches and updates out to their user bases ahead of traditional, point release, distributions. The flip side is, rolling distributions can introduce their own instabilities. Counterintuitively, this isn’t always a bad thing.
Because a rolling release is continually updated, you’ll get as early notification as possible of any coming changes that impact your workflow, development project, or the end product. You can then counter the issue by modifying your build process, working around it in your code, updating or seeking new tools, or whatever you need to do.
As for scripting, you’re spoiled for choice on Linux. You can have as many different terminal shells installed as you like, and hop between Bash, csh, Zsh, Fish, and all the others as your needs require.
If you want to compile complex projects in reasonable time, you’re going to need a decent PC. Think fast processor, SSDs, and a lot of RAM. That’ll make a massive impact on the speed of your compilations, much more than your choice of Linux distribution will. That’s not to say you want to have a bloated, over-loaded distribution on your development box – you don’t – but the big and easy wins are in the hardware.
And if you’re going to be using containers or virtual machines, the big speed gains are going to sit in your CPU, hard drives, and RAM too.
There’s no shortage of development tools, frameworks, and IDEs for Linux. You can even install Visual Studio Code, the free code editor from Microsoft.
On Linux, there’s support for every language and paradigm you can think of. In fact, many of them started out life on Linux. That’s not to say that the ones you want will be preinstalled on your Linux computer, but you can easily add them.
If the package is in your distribution’s repositories, you can install it with your package manager. Sometimes they’re released as a FlatPak, AppImage, or a Snap. If the source code is available, you can clone their Git repository (or download a TAR file) and build the tool on your own machine.
If those solutions don’t exist, you can usually download an installation package from the tool’s website. They typically provide downloads for DEB files for Debian-based distributions, RPM files for Red Hat-derived distributions, and sometimes TAR files containing source code.
Suspects Who Fit the Profile for Programming on Linux
So we’re looking for a distribution that is stable, and not bloated. We don’t want crashes and we don’t want wasted CPU cycles on needless background processes. Our distribution should have a large, engaged, and enthusiastic community. The backing of a corporation wouldn’t hurt either.
It needs to have well-stocked repositories. If it uses either of the RPM or DEB package managers, so much the better. When a website lets you directly download installation files, these two package formats are always supported.
The distribution that most closely fits this description is Fedora. It has an enviable and justified reputation for stability, has the backing of Red Hat, and if a piece of software is available on Linux, it’s available for Fedora. It’s also fast and free from bloat and telemetry concerns, something that dogs Ubuntu. To get started, go to the Fedora Workstation download page.
Fedora is a point release distribution. If you favor a rolling distribution, it’s probably better to go with one of the almost-naked-Arch derivatives, such as EndeavourOS or ArcoLinux, than Arch itself. Disasters always seem to happen just before deadlines. If you need to re-install your operating system, you need to be up and running in the shortest possible time.
If you’re running virtual machines or using containers, you might think the host operating system is less important than the clients. To the software you’re creating and running, that might be the case. But remember, your hypervisor or container platform are running on your host distribution.
That foundation needs to be unshakable.