Download the authoritative guide: Cloud Computing 2019: Using the Cloud for Competitive Advantage
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’ll provide a break down of each consideration a developer might use to make their Linux distro selection. As you read please note: one must first 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 here are 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.
Kdevelop is based on the popular KDE-centric development environment
Vim – Vim is considered to be 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.
PyCharm – Used in a multitude of development situations, Python continues to grow in popularity. For Linux users, PyCharm is a very popular IDE for creating python based applications and tools. Whether or not you're looking to test, debug or simply do some quick live editing, PyCharm should be part of your developer toolbox.
Android Studio – For budding and full time Android developers alike, Android Studio is where it's at for creating the next big Android application. Android Studio is the official development tool for anyone looking to contribute their ideas into software for the Android Play Store.
GitKraken – In the same spirit as "Release the Kraken" from the classic movie Clash of the Titans, GitKraken unleashes the monstrous powers behind Git for those who have the skills to tame its power. You can control the UI preferences, Git flow and even set up multiple profiles.
Postman – Not to be confused with your local postal mail carrier, Postman is a great GUI development tool for developing and fine tuning APIs. Postman is designed to mirror your existing API work flow, provide a complete tool chain for API development and allows you to run the software on just about anything.
Visual Studio Code – These days, even Microsoft has development tools for developers running Linux. Microsoft's Visual Studio Code provides you with the ability to code in C#, Python, C/C++, plus many more languages.
Visual Studio Code enables devs to code in a wide array of development languages.
Sublime Text – This coder friendly text editor may not be free, but Sublime Text is powerful. Notable abilities include: making multiple selected changes at the same time, split editing, and overall customization options within the editor itself.
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 Linux 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.
So which fixed release distro is right for you? I've talked with a number of developers and the bulk of them seem to be quite fond of using Fedora. Many of them are already working within a Red Hat type environment, and using Fedora provides a seamless experiences for developers in this area.
Others I've spoken to feel strongly that Debian or even Ubuntu are solid options. The real issue here is what packages and how bleeding edge you need these packages to be? Fedora is often used by developers working within other Open Source development projects. Often these developers are looking for the latest packages available and even with its fixed release nature, Fedora tends to be a natural fit here.
If by contrast your development work is primarily coding for websites or you don't need the absolute latest packages/software stacks, perhaps Ubuntu will fit your needs. It's worth noting however that with the rise of Snaps and Flatpaks, any concern with software age will begin to diminish regardless of which distro you prefer.
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.
Then we have Arch. Much to my surprise, I have been hearing a great deal from my developer contacts that Arch has become their de facto development platform. The main reason for this is that Arch allows you to install only what you need, not what distro maintainers think you need. Bundle this with the tremendous amount of software made available through the AUR and the incredible Arch Wiki, it's little wonder why developers are giving Arch a serious opportunity to win them over.
Can I personally suggest that a rolling distro makes sense for a development base? In a word – yes. Arch and other rolling distributions can absolutely be used for development. It's being done right now each and every day as a matter of fact. Like with any distro, it's the user data that must be backed up in case something goes awry. So long as backups are in place for critical user data, any distro that has the right tool set (rolling or fixed) more than meets the needs of today's developers.
My suggestion once you settle on a distro is to consider your development work flow. Once you've decided on a development distro, it's this decision that will save you the most man-hours.
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. I personally recommend having both a ready to go disk image of a working configuration as a backup solution in case your current installation becomes unstable. This approach is faster and more efficient in the short term that hours of troubleshooting.
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. That said, Arch is still an option so long as you make a disk image as suggested in the last part of #1 above.
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 lessen 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.
Before wrapping this up, let's try this exercise: Select at least three Linux distributions and spend a few days using each. Download, install and utilize the needed software you rely on for development duties. As you test out each distribution, take notes of what is working out well and what you would consider to be problematic about each distro in question. Are there missing packages, perhaps the software stack is too old or too new/unstable? Keep taking those notes.
After at least a week, look through your notes and examine the results of your testing. Did you find that one distro or release type did better for you than the others tested? If so, then you've confirmed the distro that's best for you. I also recommend trying the same in terms of text editors, IDEs and other related development tools. This will ensure that your development work flow remains top notch.
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.