IntroductionChoosing a Linux distribution can be one of the most difficult things for a Linux user. There are so many excellent options, and they all have their own unique strong suits.
There are also constant updates, news, and general community chatter that muddy the waters even more, making the process much less of a direct route. However, there are a couple of questions that you can ask yourself in choosing a distribution that help clear things up. It's also important to remember that there usually isn't a wrong answer. Every distribution is good. Sure, running Arch on your enterprise scale production deployment probably isn't the best idea, but it's still technically possible. It's all about picking a distribution that fits around that sweet spot of what you want and need.
Desktop vs. ServerWith that, it's time to take a look at the most basic question that you need to ask yourself. Are you running this distribution on a desktop or server? The needs of these situations are very different. Server distributions need to be rock solid stable, while it's probably better to have updated software on a desktop.
If you're planning on running a server, you're looking for long release cycles, compatible versions of the software you plan on deploying, support, and general reliability.
For desktops, you don't necessarily want long release cycles. You probably want newer versions of your applications. You might even want a rolling release that always keeps you on the bleeding edge. Sure, you also want some stability, but it's not as critical. You're also going to be using a graphical desktop environment. You want a distribution that provides something that you find visually pleasing that's also functional, and you certainly don't want something bloated and clunky.
Desktop: Beginner vs. AdvancedIf you're running Linux on your desktop, you need to ask yourself another fundamental question; do I want something simple or something more advanced? Many Linux distributions, like Ubuntu, aim to be as user-friendly as possible. They don't present you with a lot of choice, but they just work when you install them.
In contrast, there are distributions like Gentoo and Arch Linux that are all about choice. They let you do whatever you want with your system, including breaking it in new and creative ways. These distributions put all the control in your hands, and you can create some spectacular custom-tailored results, but they also leave a lot of room for failure, and they take time to maintain.
Don't let the "Beginner" designation fool you, either. Plenty of Linux experts opt for distributions like Ubuntu because they "just work." If you've got a job to do, most of the time, it's best to pick something that lets you get that job done with as little hassle as possible. Most of the time, that's not an "Advanced" distribution.
Beginner: Ubuntu, Linux Mint, Fedora, SolusOS, ElementaryOS, OpenSUSE
Advanced: Debian, OpenSUSE Tumbleweed, Arch Linux, Gentoo, Slackware
Once you've decided on either a beginner or advanced distribution, there are a couple of major factors to take into account that set them apart.
Software RepositoriesThe first thing that you need to consider in picking a distribution is how much and which software is available in its repositories. If a distribution doesn't have an application that you need, it might be a constant source of frustration for you as you try to use that distro on a daily basis.
Take, for example, Ubuntu and Fedora. Ubuntu has much larger software repositories and more third party support. If you plan on using your desktop for daily tasks and multimedia, this would definitely give Ubuntu the edge.
Some distributions, like Debian, don't ship with non-free software and package it in a separate repository. Again, this is something else to consider.
Desktop EnvironmentsUbuntu and Linux Mint. Ubuntu ships with GNOME by default, while Mint tries to be a bit friendlier and gives you its own Cinnamon desktop.
Desktop environments are also important because they usually dictate with tools come with your installation. OpenSUSE, for example, is based around KDE Plasma. Plasma has an exhaustive set of tools available, and OpenSUSE is tested and engineered for those tools to perform flawlessly.
Update CyclesIt wouldn't be great to have a desktop computer that can't update to new applications with great features because of... reasons. That's why you also need to look at how frequently your distribution releases a new version and which software it updates in its repositories.
It gets tricky here because there's usually a nice middle ground that you want to reach. Running all the latest software all the time can cause things to break, badly. Distributions like Arch Linux have gotten a bad reputation for this sort of thing, since they always ship the latest and not always greatest.
Some distributions, like OpenSUSE Tumbleweed, SolusOS, Arch Linux, and Gentoo don't have designated versions. They update their software as its released. That doesn't necessarily mean that it's bleeding edge new all the time. It just means that there will never be a hard barrier to getting new software.
Some distributions that usually sit in the middle ground between outdated and bleeding edge are Ubuntu, Linux Mint, SolusOS, OpenSUSE, Debian(Testing), and ElementaryOS.
CommunityYou can't overlook a distribution's community. That community consists of the people you're going to turn to when something goes wrong, and don't fool yourself; something will go wrong somewhere along the line. The Ubuntu community is massive, and it's used to helping Linux newbies get their bearings in new world. Compare that with the Arch Linux community that expects a certain level of skill and expertise from Arch users.
The community is also responsible for packaging software outside the default distribution repositories. Again, Ubuntu's immense popularity is a huge asset here. Whenever someone supports Linux, they package for Ubuntu. Other communities are also known for packaging new software diligently as well. Arch Linux's AUR repository is filled with software that the community packages and maintains for Arch.
Servers: Enterprise vs. FlexibilityWhen you're selecting a distribution for your servers the concerns are very different from with a desktop. You need a system that will literally never fail. When it does inevitably fail, you need a way to get it back running as fast as possible.
Servers need to... serve, so you also need to consider which software is available for your server. Running an ultra long term support distribution might seem like a great idea until the web application you developed won't run because all the software in the repositories is terribly outdated.
It might seem like you need to strike a balance here, and that may be the solution in some cases, but this is more an issue of what the server's role will actually be. A web server should lean towards flexibility. Web technologies are rapidly evolving, and you don't want to find yourself custom compiling everything just to get your web app running.
On the other hand, it might not be the worst thing if your email server is a bit outdated but literally never changes. Email servers are notoriously difficult to configure, and it's usually better if they remain as secure and stable as possible.
Database servers can fall in that middle ground, and it usually depends what they're a database for. Again, the database for a web application might need some new features to keep up with the software it's interacting with on a daily basis. On the other hand, if you're running an internal DB for records or the database for an email server, you might want something simple and stable.
Distributions geared for the enterprise are usually the ones with impossibly long support windows that never really change. Distributions that are more general purpose usually move at a quicker pace and allow for some flexibility in your software choice.
Enterprise: CentOS, RHEL, Debian, Slackware
Flexible: Ubuntu, ...also Debian, Gentoo
Software RepositoriesWhen it comes to servers, repositories matter. Unlike desktops, this isn't about whether or not your distribution will have the latest multimedia tools. It's more a question of whether your server will support the services that you want to deploy. For instance, if you wrote an application that takes advantage of a feature in the latest Python 3 release, but your server is geared entirely towards Python 2, you're in for a lot of headaches.
There are two major factors at play here. You need to know if your server distro ships the software version you need, and you need to know if that software is going to be updated and when. Do you plan on running a lot of PHP applications? Maybe you want that server to receive the latest PHP versions to take advantage of the recent improvements. First, you want to know that PHP 7.X is supported. Then, you want to take a look if future versions will be backported.
In other cases, though, you might want the exact opposite. You might not want your database software changing features on you. Java updates can be a major pain too. It all depends on what you''re hosting.
Upgrade CyclesThe software in your distribution's repositories is tied closely to the upgrade cycle of your distribution. Take a look at the differences between Ubuntu and CentOS.
Ubuntu's LTS releases come about every two-and-a-half years. Ubuntu includes all the latest software in their new LTS releases, so you know you're getting a completely refreshed install when you upgrade.
CentOS, on the other hand, is released every three to four years, and the software that's included in the release has been tested, re-tested, and gone over with a fine toothed comb so many times that it's already stale when CentOS launches.
This comparison between Ubuntu and CentOS is the quintessential debate between flexibility and enterprise readiness in the server world.
Then, of course, there are more outside-the-box options, like Gentoo. Gentoo is a rolling release distribution that can actually be very stable if properly configured. That said, it takes extensive systems and an intimate knowledge of the system to keep a Gentoo deployment running smoothly.
SupportThere's another factor to consider when choosing a server distribution, support. Do you want to purchase professional support from a corporate backer? Ubuntu and RHEL both have large corporation behind them offering support contracts. Other great server distributions like Debian and CentOS don't have available support, even though CentOS is a Redhat product.
Debian and Ubuntu are very similar distributions, but Debian is developed by a non-profit entity with the help of volunteers. Ubuntu is owned and developed by Canonical, who officially supports its LTS releases. That differentiating factor might be enough to sway you one way or the other.
It's also important to consider hardware compatibility in this equation too. Canonical and Redhat both work with hardware vendors to ensure that they fully support your hardware. Whether you like it or not, no one's testing Gentoo for hardware compatibility.