A few days ago I saw a post in the Arch and Manjaro Facebook Group (that has since been deleted) asking what would be the best Linux distribution for a computer science student to try as a first distribution. The replies varied quite significantly from Gentoo Linux (which is a real turn off even for the most experienced Linux users, due to how much work it is to setup and then maintain a Gentoo system, some die-hard fans of the system exist, but for me at least Gentoo is just too much of a headache) to Linux Mint and Ubuntu. While I have done a comparison of free operating systems, I felt this query deserved its own post.

When I first started using Linux in mid 2012, the only distribution that I could possibly handle without becoming totally discouraged by the apparent difficulty for me to transition from Windows NT systems to Linux systems, was Ubuntu. But that was me, someone with limited knowledge and little aptitude for computers and technology in general and even less patience for a system that did not work out-of-the-box, while a computer science student on the other hand probably would not mind getting pushed a little further into the deep end of Linux than myself. This post is designed to offer suggestions as to the best Linux distribution for people with specific skill sets, interests, levels of patience, etc.

In general, if you are uncertain as to which distribution I mention here, to try (all of which are available free of charge — I do not endorse proprietary software or operating systems), I suggest you try all those you think, based on what I am saying, would be best for you, in a VirtualBox Virtual Machine. Oracle VM VirtualBox (or VB for short) is a free and open-source cross-platform software application in which you can run almost any and every Linux distribution you could run on a physical machine, without ever logging out or fiddling with your partitions. If you go the download page for VirtualBox you will find binary packages you can use to install VB on a variety of platforms including Linux, OS X, Solaris and Windows NT (Vista or later). Every Linux distribution mentioned in this post can be run in a VirtualBox VM (I know because I have tried them all).

Glossary

BSD Ports System

On BSD derivatives, especially FreeBSD, a common form of package management is the so called “Ports” system. These ports are a series of subdirectories in the /usr/ports folder, each containing the source code of available packages that can be installed via this ports system. To install a package the user merely changes into the port of the package they want (this must be done as root, by-the-way, otherwise permission issues will be encountered later on in this process), configures the source code so that the package will be built with the features they want, and runs make install. The /usr/ports folder has a characteristic directory hierarchy inside it. See each individual package’s build directory (which contains the source code) is found at /usr/ports/CAT/PACKAGE, where CAT refers to the category the package belongs to (e.g., www for the Firefox web browser) and PACKAGE refers to the package’s name (in the example of Firefox this would be simply firefox).

Creating a Live Medium

In order to install any of the distributions mentioned in this post on a physical machine (as opposed to a virtual machine like through VirtualBox) you need to first create a live medium (which is either a CD, DVD or USB) from the ISO image (with the file extension .iso) provided by the distribution. Several more user-friendly distributions have their own set of tools for creating a live medium from such an ISO, the most popular tools that work with a variety of different distributions are the graphical UNetBootin program which is designed specifically for creating live USBs for Linux (I would only recommend using it, if you are uncomfortable with the command-line, as in my experience it is not unusual for it to create unusable live USBs) and the textual dd Unix command. To create one using the dd command, run the following (from the command-line of any *nix system or Cygwin on Windows):

root #  dd bs=4M if=/path/to/media.iso of=/dev/sdx status=progress && sync

where what is italicized, needs to be substituted with the corresponding values for the situation at hand. For example, I keep my live ISOs in my /home/fusion809/VirtualBox VMs/ISOs folder, so if I wanted to create a live USB for an ISO file /home/fusion809/VirtualBox VMs/ISOs/archlinux.iso, with my live USB being at /dev/sdb on my file system, then I would run (note the use of quotation marks around the ISO file’s location, due to the appearance of spaces in the file’s location, which makes quotation marks necessary. While their use around /dev/sdb is strictly not necessary, it is good practise):

root #  dd bs=4M if="/home/fusion809/VirtualBox VMs/ISOs/archlinux.iso" of="/dev/sdb" status=progress && sync

For a guide on creating live USBs I would recommend the ArchWiki article on this topic, although keep in mind this guide is primarily written with creating a live USB for Arch Linux in mind and hence some methods described in it may not be applicable to all Linux distributions.

Long-Term Support (LTS)

Long-term support (LTS), refers to software releases that have a longer than normal support lifetime (that is, the time period over which the program is still supported by its developer). Examples include Ubuntu (LTS) releases and Linux kernel (LTS) releases, which are supported for longer periods of time than standard releases.

Patient Techies

Gentoo Linux

If you know a lot about technology, are great at figuring out what to do based on online documentation, are very patient, do not need your Linux system to run out-of-the-box, love freedom in deciding the characteristics of your operating system and are willing to spend hours of your time just trying to install and configure your system to your liking, then Gentoo Linux maybe the Linux distribution for you. Although I would definitely suggest you try it in a VirtualBox VM before you try to install it on your physical machine because it is possible that it will frustrate you so much that you will give up on it early on.

I find Gentoo a nightmare to be honest, as upgrading your system is nowhere near as simple as running a single command from the command-line like it is on most Linux distributions, updating your kernel may make you become violent in frustration and system breakage is definitely not unheard of. Despite this, it is very customizable, in fact it is so customizable that Gentoo has been called a meta-family of distributions, to refer to the fact that two systems built on the same date, from the same live ISO for Gentoo Linux, can end up becoming so different from one another that they can even be considered distinct Linux distributions. This customizability is due to Gentoo’s unique package management system, Portage, which is also a source of most of the frustration I have experienced with Gentoo.

Package Management

Portage, unlike all the other package managers mentioned in this post which all install software from binary packages by default, installs software the longer, more error-prone and CPU/RAM-intensive way: from source code. Installing software from source code is what is key to Gentoo’s customizability, as this means that every package installed can be installed just the way the user wants. See when you install software from source code generally speaking you will go through five major stages, which Portage handles wire to wire:

  1. Getting the dependencies.
  2. Preparing the source code, applying any necessary patches in order for the following steps to go smoothly.
  3. Configuring the source code.
  4. Compiling the source code.
  5. Installing the compiled program. step 3 is where Portage really distinguishes itself from other package managers, see step 3 is where one usually decides which features of the software will be built and which will not be built, by providing the program’s configure or autogen.sh script with what I will call “configuration parameters”. Portage gives users full control over this step by use of “USE Flags” which are keywords that tell Portage which features of a software package it should and should not build. They essentially correspond to the “configuration parameters” I mentioned earlier. Package managers working with binary packages, on the other hand, usually only ship with software packages built with a single set of maintainer-selected configuration parameters, which essentially means end-users are stuck with the configuration parameters the maintainer(s) of the package wanted, with no freedom to set these parameters themselves.

Portage building software from source code is also key to Gentoo’s name. See Gentoo Linux is named after Gentoo penguins — the fastest species of penguin, to refer to the fact that by installing all its software from source code, instead of relying on binary packages, it is hoped that Gentoo systems will be the faster than their binary counterparts. I have set up VirtualBox VMs with Gentoo installed on them and never have I noticed any striking improvement in speed or performance of software running under Gentoo, as opposed to it running under binary distributions like Arch Linux. Then again, any speed improvement between Gentoo and binary distribution is likely to be modest — less than I can even notice. The only speed-related issue I have noticed on these VMs is the increased time it takes to install software with Portage, as opposed to the time it takes with binary package managers like pacman.

Portage builds software using instructions set forth in a specialized type of Bash script called an ebuild, which are a feat in themselves to learn, even with some prior Bash knowledge. Each individual ebuild has instructions telling Portage how to build a specific software package, and by a specific package I mean a specific program with a specific version number, for example, one ebuild may tell Portage how to build the 1.4.0 release of the Atom text editor, while another may tell it how to build the 1.4.1 release of Atom. Portage uses its own type of repository, called an overlay, to contain its ebuilds. The default Portage overlay is called the Portage Tree and is found in /usr/portage. In here are ebuilds developed and maintained by the Gentoo Foundation. Gentoo also has a tool for adding extra Portage overlays called layman, which adds new overlays to /var/lib/layman, some of these extra Portage overlays are maintained by members of the Gentoo Foundation, but the vast majority are not and are instead maintained by Gentoo users with no affiliation with the Gentoo Foundation. For example, I have my own Portage overlay called sabayon-tools.

Both the Portage Tree and the overlays managed by layman have a hierarchial directory structure of the form .../CAT/PACKAGE where ... denotes the parent directory in question (either /usr/portage or /var/lib/layman/OVERLAY, where OVERLAY is the overlay’s name) and as for the BSD Ports System CAT and PACKAGE refer to the package’s category and name, respectively. The CATs used by Portage are distinct (more detailed in my opinion) from the the CATs used by the BSD Ports System. What also distinguishes Portage from the BSD Ports System is that the BSD Ports System does not do dependency resolution for you, rather you have to install all dependencies manually yourself, while Portage will install all the required dependencies itself, before installing the target package (that is, the package you tell Portage you want to install) itself.

The Portage Tree, along with the other available overlays maintained by layman, also contain several different release versions of the same software package, which is something that distinguishes them from the vast majority of binary distributions, which usually only have a single version of each software in their repositories. For example, see here for the different versions of the package sys-kernel/gentoo-sources available from the Portage Tree, this package if you are wondering as to its significance, is the kernel for Gentoo Linux. These different available software versions also adds to the freedom of Gentoo.

The fact that Portage builds software from source code also allows Gentoo to run on a large number of different computer architectures. The number of different CPU architectures supported by Gentoo is, to my knowledge, second only to Debian in the Linux world. The list of supported processor architectures, according to DistroWatch, are:

  • i486
  • i586
  • i686
  • x86_64
  • alpha
  • arm
  • hppa
  • mips
  • powerpc
  • ppc64
  • sparc64

Portage has even been ported to a few different non-Linux Unix/Unix-like operating systems including the *BSDs (especially FreeBSD). Portage is also written in Python, which allows advanced users to script with Portage more freely.

Something else that distinguishes Gentoo from most, but not all, binary distributions is its release model. See Gentoo follows the rolling release model, which means there is never any need to upgrade one’s Gentoo system by deleting the old version of the operating system and installing the new version over it. Rather updates are performed via running one’s package manager.

I personally would give Portage two or three stars out of five, as a package manager, as while it is designed to automate processes like installing software and upgrading software, for me it just gives me headaches as a lot of this stuff I am forced to do myself.

Busy Techies

Arch Linux

If you have less free time to install and then configure your Linux system, but still want a great degree of freedom over it and would like the very latest software, the same day it is released, then I think Arch Linux will be the distribution for you. While it is still challenging for newcomers to set up Arch Linux (as there is no automated installer and it comes with no pre-installed GUI, so everything must be done from the command-line) and it can take a while (for me installing it and setting it up for everyday use probably took at least a couple of hours, but this was partly because I was using a laptop which used a Wi-Fi chipset not supported out-of-the-box by the Linux kernel, so I had to install some extra firmware), it is nowhere near as challenging or tedious as Gentoo is to install and maintain. Like Gentoo, Arch follows a rolling release model, but unlike Gentoo upgrading an Arch system is as simple as issuing a single command: root #  pacman -Syu –noconfirm . Arch is also more limited in the CPU architectures it supports, with support for only arm, i686 and x86_64 architectures.

Package Management

Arch Linux uses its own binary package manager called pacman, which also comes with a command-line tool (called makepkg) to build binary packages from source code using the instructions found in a specialized type of Bash script called a PKGBUILD. The pacman package also provides other commands, to list them all run: user $  pacman -Qlq pacman | grep /usr/bin . Arch Linux has its own online repository (that since August 2015 has been managed by git) of PKGBUILDs provided by the community, for use installing software not in the pacman binary package repository, it is called the Arch User Repository (AUR). Writing PKGBUILDs, I can tell you from personal experience writing both ebuilds (if you passed by the Gentoo section these are the Gentoo equivalent to PKGBUILDs) and PKGBUILDs, is far simpler than writing ebuilds. If I see a package I want to install on my Arch system that is not in the pacman repos or the AUR, odds are within an hour I would have written a working PKGBUILD, and using makepkg created and installed a binary package from it. The same can most certainly not be said for ebuilds on my Gentoo VMs, odds are I will not be able to write a functioning ebuild for the package at all and if I do manage it, it is likely it would take me several hours. Even bumping existing ebuilds to a later version of the package they provide, is something I sometimes fail to do properly.

I usually find the software in Arch’s official repositories tends to be a little more up-to-date than the latest version in the Portage Tree. Although if you want to always have the latest Linux kernel, then I would suggest you use Gentoo Linux instead of Arch Linux, because I tend to find there is quite a delay between the release of the latest kernel and its addition to Arch’s core repository. Although usually the latest kernel will be added to the Portage Tree within a few hours of it being released. This being said, it is worthwhile noting that the Portage Tree took over two months to get the 3.18 release of GNOME, so I still stand by my previous statement that Arch’s repository tends to be a little more up-to-date than that in the Portage Tree. If you want/need the latest kernels, but do not want to use Gentoo due to how long installing software and maintaining the system takes, I would suggest you use Sabayon Linux instead as it is a Gentoo derivative that also has its own binary package manager which has repositories that contain the vast majority of packages you probably want/need on your system, including the latest kernels. It still has Portage, however, although if you use Portage on Sabayon you cannot expect any support from the Sabayon community, according to the developers of Sabayon.

pacman is, in my opinion, by far the fastest package manager in terms of how quickly it installs software. It is written predominantly in C and its binary packages are xz-compressed, with the file extension .pkg.tar.xz. I personally would give pacman five stars out of five, in terms of how much I like it as a package manager. There are also several community-provided (not officially supported by the Arch Linux development team) programs available to automate the process of installing packages from the AUR and to search the AUR. See here for an article on these AUR tools (or “AUR helpers” as they are referred to in this article) at The ArchWiki. I personally prefer the AUR helpers:

  • pacaur — a command-line tool with a similar syntax to pacman itself, it is written in Bash and C. It can be used to do everything with AUR packages that pacman can be used to do with packages in the pacman repositories.
  • trizen — a command-line tool written in Perl that also shares a similar syntax to pacman. It is fairly similar to pacaur.
  • yaourt — a Bash wrapper for pacman that shares most of its syntax with pacman. It was the only AUR helper I used until pacman 5.0.0 came out. See yaourt depends on the package-query package, which is imcompatible with pacman 5.0.0. pacaur and trizen are compatible with pacman 5.0.0, however.

Useful Resources

  • Arch User Repository — where you can search the AUR for packages.
  • The ArchWiki, which is the best (most detailed, largest, best-maintained, etc.) Wiki pertaining to any particular Linux distribution that I have seen.
  • Forums
  • Home Page — where you can also search for packages in the pacman repositories. Alternatively you can run the command user $  pacman -Ss <TERM> to search for packages with <TERM> appearing either in their description or name.
  • #archlinux — I have only tried to use it once and that one time, suffice it to say they were less than polite, although it is possible that I could have gotten the wrong end of the stick.

Fedora

Fedora comes with an automated installer (which can be run from both the command-line and graphically), which makes it easier to install. This installer requires like five minutes worth of user attention before the rest of the process, while tedious, is automatic and requires no user intervention. So suffice it to say that Fedora is a good choice for the very busy. Fedora uses the DNF package manager for package management, with PackageKit (and its derivatives GNOME Software and Apper) being a popular front-end. DNF is essentially a faster version of yum, it shares most of yum’s source code the only significant difference is that DNF uses some of openSUSE’s ZYpp package manager’s components to speed up its notoriously slow dependency resolution. System maintenance on Fedora is as simple as running a couple of commands every week or so (if you do so less frequently nothing bad is likely to happen besides any software updates will likely be greater in download size and the time they take to be downloaded and installed).

Despite this it is often said to be a developer’s distribution, because it uses the very latest software for the most part. In fact Linus Torvalds, the developer of the Linux kernel, is said to use Fedora on all his PCs. Although I should warn you that it does not follow a rolling release model, so new releases need to be installed over older releases, which can become a pain seeing how a new release comes out roughly every six months. When new releases of Fedora come out they usually have the very latest kernel and desktop environments (its default desktop is GNOME), although as time passes after the latest release is made, the kernel of this latest release will usually become out-of-date. For example, I have a VM for Fedora 23 which is running the 4.3.3 kernel as of 30 January 2015, even though the 4.4.0 kernel was released 10 January 2015.

I would probably give DNF three to four stars out of five, as it is fairly slow, despite it being an improvement over yum. One feature I like about it are package groups, which can be used to install a whole set of required packages. Like to install the KDE desktop one would run:

root #  dnf install -y @kde-desktop

Fedora presently only supports armhfp, i686 and x86_64 architectures. It does have several different official editions which vary mostly in their pre-installed desktop environment. So if your PC does not have much CPU power/RAM to work with, you may wish to use the LXDE edition. A netinstall edition also exists, which you can install and customize to your liking.

Useful Resources

  • Ask Fedora — an AskBot-powered Q&A website for Fedora that is similar, but not quite as swift and high-quality in its responses, in my opinion at least, as Ask Ubuntu is for Ubuntu-related queries.
  • Fedora Project Wiki — a MediaWiki-powered Wiki that I consider a dinosaur in that its information nearly exclusively pertains to older releases of Fedora. Most pages still refer to the yum command for package management.
  • Forums — never had the pleasure or displeasure of using it myself, so cannot comment on it.
  • #fedora — also never had the pleasure/displeasure of using this channel.

Sabayon Linux

Sabayon Linux as previously mentioned is a Linux distribution with both a binary package manager and source code package manager, Entropy and Portage, respectively. Sabayon also comes with its own automated installer, which was previously the Anaconda installer (used by Fedora) but is now Calamares (which unlike Anaconda can only be run graphically, installation from the command-line impossible). Like Anaconda, however, Calamares requires like five minutes of user attention (in which they mostly just punch in their hostname, username, password, etc.) before the rest of the roughly 30 minutes - 1 hour automated installation process occurs during which the user is free to do whatever they want to pass the time. Installing and maintaining Sabayon using Calamares and Entropy, respectively, is simple enough for me to believe that non-techies could manage it without a problem. There are seven major editions of Sabayon, each with a different set of pre-installed packages: GNOME, KDE, MATE, Minimal (Fluxbox), Server, SpinBase and Xfce. The Server and SpinBase editions are largely free of a pre-installed GUI, although the Server edition does have the graphical Calamares installer available.

Package Management

Both Entropy and Portage are written in Python and to a lesser extent, Bash script. Entropy’s repositories contain binary packages created using Portage and then converted from Portage binary packages to Entropy packages using Entropy itself. The ebuilds these packages are built from come either from the Portage Tree or the sabayon/sabayon-distro overlays maintained by the Sabayon development team. I find Entropy fairly slow at dependency resolution, package decompression and installation, which I suspect may be related to the fact it is written in an interpreted language like Python instead of a compiled language such as C and C++ like the faster package managers, APT, pacman and ZYpp, are. Users that want packages not in the Entropy repositories can use Portage to install them from either the Portage Tree or the unofficial Portage overlays. Sometimes, however, you may find packages you want that are not in the Portage Tree or unofficial overlays, in these cases you would do what you would do on Gentoo, that is, write an ebuild for the package you want.

Entropy would receive four stars out of five from me. It is fairly easy to use, but it is also fairly slow. The Entropy repositories are usually fairly up-to-date, but you will find the odd piece of out-of-date software in them. See only two people maintain these repositories, in their spare time (to my knowledge they both have full-time jobs too, so needless to say their spare time is not a vast resource) and there are over 13,000 packages in there so it is inevitable that a few will slip through the cracks. This is as opposed to over a dozen different developers that main Arch and Fedora’s package repositories. Although rest assured, the desktop and system software (like the kernel, coreutils package, KDE desktop components, GNOME desktop components, etc.) in the Entropy repositories is usually updated within a day or two of the update being released upstream. Where upstream is either the Portage Tree or one of the Sabayon overlays (sabayon/sabayon-distro).

Sabayon unlike Gentoo only supports armhf and x86_64 architectures, although i686 support did exist until 2014.

Useful Resources

  • Download Page
  • Forums
  • Sabayon Wiki — its Wiki’s quality is far less than that of Arch or Gentoo Linux.
  • #sabayon — support channel. Beware though, if you make any suggestions to the Sabayon team, or criticisms, or request a package there, you risk having your head bitten off! I know this from personal experience. Granted I was only bitten at by one guy and it was for offering suggestions and requesting a package update more than once, but still it is not a pleasant experience.

Other Distributions

This section really just mentioned some distributions that are a little more challening for non-techies to grasp but easier and faster to setup and maintain than Gentoo. It is possible that some techies may like to use Debian, Manjaro Linux or openSUSE as their first distribution, which are discussed in the sections they were hyperlinked to. All three come with automated installers, are easy to maintain and give users some room to grow and learn.

Non-Techies

If you are not so technologically-talented I would suggest you use a beginner distribution like Manjaro Linux, openSUSE or Ubuntu (or one of its derivatives like Linux Mint). If you are ambitious you may try a slightly more challenging distribution like Sabayon, which is fairly beginner-friendly but its documentation and online support is poorer than all four distributions previously mentioned in this section. Manjaro Linux is best suited for individual use, not for server or business use. openSUSE and Ubuntu can be used for server or business use too, but if you want to use Linux for server or business use I suggest you go to the next section.

Manjaro Linux

Manjaro Linux is an Arch Linux derivative that features two graphical installers (Calamares and its own installer, Thus) and mhwd (Manjaro Hardware Detection), a tool for managing kernels and hardware drivers and out-of-the-box support for Broadcom Wi-Fi chipsets. It uses its own repositories (although the same package manager as Arch — pacman) that are updated once per week, roughly, and for the most part contain the same software in the Arch Linux pacman repositories, except a few Manjaro-specific tools and packages. It also has access to the AUR. The Yaourt wrapper for pacman with access to the AUR comes pre-installed on Manjaro Linux.

Due to these similarities with Arch Linux, it is possible for people to learn some of the ropes of Arch Linux, by using Manjaro. Like you can learn how to write functioning PKGBUILDs under Manjaro, which is a skill you may use when you later make the transition to Arch Linux.

Like Arch Linux, Manjaro also follows a rolling release model. It only supports i686 and x86_64 architectures.

Useful Resources

openSUSE

openSUSE is an originally German Linux distribution that uses RPM binary packages (with the .rpm file extension) and the ZYpp package manager (along with a graphical front end for ZYpp — YaST2). It features an automated installer (also YaST2), during installation one is given choice of several different desktop environments, with the two major choices being GNOME and KDE Plasma, although the lightweight desktop (which uses less CPU and RAM), LXDE. Since 2015 openSUSE has two editions — the standard edition following a standard release model and a tumbleweed edition which follows a rolling release model. I personally prefer the tumbleweed edition, but if you prefer system stability (which means you will have to deal with fewer bugs) over having the very latest software I would recommend you use the standard release model edition.

Its out-of-the-box support for proprietary multimedia codecs (required for playing some media files, especially video files) and device drivers (including for Broadcom chips) is virtually non-existent, so this may stump some non-techies. It may be possible to install some proprietary programs from the PackMan repositories, or from repositories in the Open Build Service.

Package Management

As far as package managers go I would give ZYpp four stars out of five, it is a little slower than pacman and one feature (or lack of a feature rather) I dislike about it is that you cannot pass a flag (e.g., for pacman this flag is --noconfirm, while for APT, DNF and yum this flag is -y) to ZYpp to get it to skip asking you for confirmation before performing the action it is about to do. Apparently this feature used to exist, but it was removed. I like this feature in a package manager because it makes writing Bash scripts for package management easier.

RPM packages are created using spec files (that is, files with the file extension .spec), which I must say I find even more confusing and difficult-to-write than ebuilds. So if you plan on later doing some developer stuff on the distribution you pick in this section, I would probably pick Manjaro instead of openSUSE.

It only supports armhf, i586 and x86_64 architectures.

Useful Resources

Ubuntu

Ubuntu has a reputation for being the beginner’s distribution, and for me this was most certainly the case. It was the first distribution I even tried and it was the only distribution I used for three straight years. If you cannot make the transition from OS X/Windows to Ubuntu without running back to mummy (that is, your first OS) due to difficulties adjusting, then you probably will not be able to make the transition to any Linux distribution. Ubuntu has two types of releases, Long-Term Support (LTS) releases which come in April of even-numbered years (e.g., April 2014, April 2016, April 2018, etc.) and standard releases which come out every six months. LTS releases are supported for up to five years, so if you stick to them you will need to perform a system upgrade (where you install the new version of Ubuntu over the old version, which is a time-consuming, error-prone and generally unpleasant process) far less frequently, although the price you will pay for this is you will be using outdated software.

Derivative Distributions

Linux Mint and Zorin OS (although Zorin comes with both a free and paid edition) are two distributions based on Ubuntu (otherwise I find them basically the same, Linux Mint is based on the LTS releases, however) that may feel more like home to Windows users, as they look similar to Windows 7 and 10. elementary OS is a distribution that is derived from Ubuntu (LTS) and it has a vaguely OS X-like look, namely it has a dock at the bottom of the screen. If you like an OS X-like dock, though, I would personally recommend the deepin distribution that was previously a Ubuntu (LTS) derivative, but is now a Debian (Unstable branch) derivative.

If you are using a PC with limited system resources, specifically CPU and RAM then I would suggest you consider using Lubuntu, an official flavour of Ubuntu (for which you can still receive support via the links provided at the end of this section on Ubuntu) that uses the LXDE desktop environment and hence should chew up less CPU and RAM.

Package Management

As far as package management goes, well Ubuntu is a Debian derivative, so it uses the same package manager, APT and the same package format, Deb (file extension: .deb). Although graphical front-ends for APT (in other words they run APT in the background, but you install the packages without ever touching the command-line) are available for Ubuntu users, such as Synaptic and the Ubuntu Software Center. I would give APT three to four stars out of five, it is not as fast as pacman, but still performance is not too big an issue. Creating Debian packages, however, is something I tried in my Ubuntu days and it gave me headaches. See Debian packages unlike pacman and RPM packages are not created using a text file, rather you create a directory with several files in it which you must edit into the correct format for your package.

Paid support is available for Ubuntu from the company behind its development, Canonical Ltd. This paid support is best for businesses using Ubuntu. If you are using Ubuntu merely for individual use odds are the free support detailed below will more than suffice.

It supports only armhf, i686, powerpc, ppc64el and x86_64 architectures.

Useful Resources

Business/Server Use

The best distributions for these purposes usually use fairly out-of-date software and follow standard release cycles. This is because older software is usually better-tested, hence it is better established that such software is stable without any apparent bugs. Standard release cycles are used for a reason that escapes me, my guess is it is because rolling release cycles are traditionally used for distributions using the very latest software, so maybe they do not wish to break with tradition.

CentOS

CentOS, a Fedora derivative, that essentially looks like and has the same software as Fedora did two years ago, which includes the older package manager, yum. CentOS has a few notable derivatives too like Oracle Linux (which comes with optional paid support), Red Hat Enterprise Linux (RHEL, I do not promote this distro as you need to buy it to use it) and Scientific Linux that are suitable for server use. I have created a VirtualBox VM for CentOS and have booted it at least once a week for several months, I personally find it very similar to older Fedora releases. It also uses Fedora’s anaconda installer.

Useful Resources

Debian

Debian, which is the eldest Linux distribution mentioned in this post, was first founded in 1993 by the now deceased Ian Murdock (who, if you are unaware died 28 December 2015, by undisclosed yet suspicious means). It has four major software branches, each varying in their level of stability and the currency of their software (in the following list they are ordered in ascending level of stability): experimental, unstable, testing and stable. Most users use the default stable branch which contains software between 1 and 3 years old. The stable branch is very stable and is a popular server distribution, in fact it is roughly tied with Ubuntu for the position of most popular server distro. It has a command-line and graphical installer too. You can also create a very customized distro from the netinstall ISO image of Debian, as it is very minimalistic, although setting up a system like this is more difficult than using the other ISO images for Debian.

Debian has some of the largest software repositories of any Linux distribution, in fact, it is roughly tied with its child distribution, Ubuntu (that is distribution derived from it) for the number of packages it has in its repositories which is in the neighbourhood of 50,000. Although it is worthwhile noting that it is unfair to compare this figure to the number of packages in the Arch Linux pacman repositories, which presently stands at roughly 13,900, as Debian has a tradition of splitting its packages up, especially larger packages, into debug, dev, doc, lib, etc. sub-packages. For example, an interpreter for the Lua programming language is not provided by a single Debian package, rather it has been split up into five separate packages. While Arch Linux usually does not split its packages up. I know from personal experience that setting up a web server on Debian can be easily done within a matter of minutes, using packages in the Debian repositories.

The architecture support of Debian includes for arm64, armel, armhf, i386, mips, mipsel, powerpc, ppc64el, s390x and x86_64 processor types.

Useful Resources

Mageia

Mageia is a free fork of the now defunct proprietary Mandriva Linux distribution. Mageia is developed by several ex-employees of the company that developed Mandriva, that were laid off when the company collapsed in 2011. It uses RPM packages like Fedora and openSUSE, but it uses Mandriva’s package manager, urpmi. It also features a graphical installer, Draklive-Install. It uses the latest LTS kernel and its software is usually fairly out-of-date. You will also find its software repositories are significantly less comprehensive than the other distributions mentioned in this post. For example, Mageia has no Apache, awesome, Fluxbox, MariaDB or MySQL package. So I personally would not recommend it for use as a server distribution, but it is still sometimes used.

Others

I have heard of Arch Linux, Fedora and Gentoo Linux being used by servers, although I would not recommend this in the case of Arch and Fedora due to the potential stability issues. Gentoo Linux I could see as a reasonable server option for incredibly experienced Linux users, with a lot of free time, as it is possible to install only the most stable versions of all one’s software, hence potentially giving Gentoo the required stability of a Linux server.

Useful Resources

Conclusion

As mentioned at the start of this post, if you are unsure as to which Linux distribution you should start off with, I would suggest you install each distribution you think might be best for you, on a VirtualBox VM and test them out. If you are looking for a distribution to replace Windows, and you want as little hassle (like dealing with bugs and lengthy and difficult installation processes for the system and for new packages on said system) as possible I would suggest you use CentOS, Debian, openSUSE (standard, not Tumbleweed edition) or Ubuntu. openSUSE and Ubuntu are probably best if you need some hand-holding through the transition from Linux to Windows. If you are intending to install Linux on a laptop which uses Wi-Fi for its Internet connection, then I would strongly recommend you use Ubuntu or one of its derivatives like Linux Mint, as openSUSE may (although it does depend on the specifics of your laptop) have difficulty connecting to your Wi-Fi.