One of the common questions I get asked is "which Linux distro is best for developers?" The short answer is that it depends. The long answer takes the form of this article. This piece will dive into the different Linux distros favored by developers. It'll also provide some insight as to why there is no automatic (simple) answer for why one developer chooses one distro over another.
To provide a more accurate look at this entire situation, I'm going to provide a break down of each consideration when making a developer friendly Linux distro selection. As you read, one must start off with the right development applications. Without these, selecting a distro is meaningless.
If your goal is to create software built to run on Linux, then some of the applications you might want on your developer's distro:
Geany – If you're looking for an IDE that allows you to develop for a GTK environment, this is worth your consideration. At first pass, it may feel like any other text editor. However if you dig deeper, you'll find that Geany is a very capable development tool. Some of its features include syntax highlighting, code folding and a decent build system to compile and run your newly created code.
Kdevelop – If you prefer a KDE centric development environment, then perhaps Kdevelop is a closer fit for what you need. Its features are very familiar with most KDE themed applications. Plus it's arguably one of the more robust IDEs available.
Vim – The last mention on my list is an editor, rather than an IDE. The reason I mention this is that the first two examples are in fact tools that require you to use a mouse along with your keyboard. Editors like Vim, provide you with a fully functional editor that works from any command line interface. This includes SSH which is useful for accessing a remote box in need of a tweak or two.
Now there are a ton of other developer tools ranging from Emacs and Code::Blocks to Eclipse and Sublime Text. What all of these tools have in common is that they don't care what distro of Linux you happen to prefer. Just something to keep in mind as we continue forward.
What matters most is deciding what type of Linux desktop environment you wish to work from. Not so much desktop environment, rather, how much desktop maintenance you wish to deal with on a daily basis.
Fixed release Linux distributions
I happen to fall into the camp of people who would rather not deal with random distribution updates everyday. For me, a fixed release Linux distribution makes a lot of sense. This is an environment that also works best for those of us in the non-development field that simply need a stable, working desktop that we can depend on.
So how does a fixed release lend itself to developers? While I'm sure there are likely exceptions, I believe that a fixed release is the ideal environment for front end web developers and mobile developers. Now again, let me repeat – I know web designers running Arch Linux. But most people I've worked with that do this type of work prefer something that is going to stay the same tomorrow as it did today.
Solid distributions in this space include Ubuntu. Honorable mentions go to Debian, openSUSE Leap and Fedora Workstation. But when you put aside emotion and accept the fact that Ubuntu is the most popular distro for the desktop, using what works makes a lot of sense. It's stupid easy to use, doesn't require a lot of "inside knowledge" or other learning curves. Plus, the community is both large and diverse.
If your development needs require you to use the latest Linux packages or you need access to bleeding edge software, fixed releases are not for you.
Rolling release Linux distributions
Sometimes developers need to have a distribution that is as bleeding edge as possible. Obvious examples include Linux kernel and application developers. This gives developers first hand experience with any bugs or gotchas that they might run into before their code is released to the public.
Popular rolling distributions include Arch Linux, openSUSE Tumbleweed and Fedora Rawhide. The two most commonly used in this space are Arch and openSUSE Tumbleweed. Both distros have strong developer-centric communities. Fedora itself also has a strong developer community...however I've not seen so much of this with Rawhide.
One could argue this is because Fedora is pretty cutting edge in its own right, despite being a fixed release distro. And that folks, I think presents the single most important consideration next to selecting the right software – work flow.
Development work flow matters
Let me paint you a picture. If you're an iOS developer, odds are you're going to be selecting the operating system that does best at providing you the tools you need while also staying out of your way. And while there are methods that allow you to develop iOS apps on Linux, you're likely going to find it's a huge hassle.
On the other hand, if you're developing for Android – running Linux makes a ton of sense. Best of all, the official Android IDE is made available to Linux users! There are no weird work-a-rounds, it's completely supported.
The same examples would apply to OS X, Windows and Linux development. Logically, one would use the platform that makes the process as painless as possible. One of the considerations when choosing a developer friendly Linux distro is to remember that your development work flow needs to jive with your selected platform. So in some instances, choosing Linux at all is a completely moot point.
As a general rule, choosing Linux for development makes sense when you do the following:
- Protect the IDE or editor you rely on. Remember the rolling distributions? Nothing is more frustrating than experiencing a new software bug when you have deadlines looming. And yes, it absolutely happens and is totally avoidable with a little planning. Any distribution, fixed or rolling...should be setup with a backup plan if your current software version decides to tank. Running a virtual machine or a container solution might be one approach to avoiding major hassles.
- The software you run is well up to date on the distribution you want to use. Arch vs Debian provides an interesting example of this. While many applications are likely available in both, Arch's software selection is going to be far more up to date than with Debian stable.
- If Linux disappeared tomorrow, would you be able to do the same development on a Windows or an OS X machine? The great news is yes. However you might need to rethink some of your work flow. One way to lesson this hassle would be to use cross platform IDEs and editors. Why is this even a question? Because you never know when you might find yourself logging intro a cloud account to work on a project...from a foreign operating system. Odd as it sounds, it's increasingly common on holidays while traveling or after a computer crash.
Choosing the right Linux distro
This article covered a lot of ground. Perhaps the biggest takeaway I think readers should remember about choosing the right distro is this – work flows matter. Platforms, distributions, even software are all things that are merely components of a greater work flow.
What say you? Obviously I didn't mention all of the distributions or IDE applications available in this article. Instead, I thought it would be interesting to see what you all are using? Fixed or rolling, IDE or text editor – which of these do you prefer? Hit the comments and share your favorite tools and Linux distribution used for software development.