Recomendations in choosing a Linux distro

twitter logo github logo ・1 min read

So, last semester I took a class about Bioinformatics (Python Programming) and the professor made us to use Fedora, we really didn't learn like a lot of Linux, just the basics.

Since I'm studying computer science I think that learning Linux (In a more complete way) will be very usefull for my career. So, with your experience, which distro do you recommend me to get started? (I will be very gratefull if you recommend a book or a online course to learn about it).

Thank you for your time guys, and sorry for my english, greetings from Mexico!

twitter logo DISCUSS (40)
markdown guide
 

I use Linux Mint (Cinnamon edition) as my primary desktop operating system both at the office and at home. The core of Mint is based on Ubuntu LTS; and the Cinnamon desktop environment is reminiscent of Windows 7. Software/Package management is a breeze using Synaptic (and/or Apt), and OS updates are tidy and swift.

I've been a "Linux on the desktop" user for about a dozen years and see no reason to return to the Windows/Mac world anytime soon. For the odd piece of software that only runs on Windows, I have a Windows 10 VM set up in Virtual Box.

In all honesty, you can't go wrong with any of the mainstream distributions whether Mint, Ubuntu, Fedora, Suse, etc. Likewise, many of the mature desktop environments work well: Cinnamon, Mate, Unity, Gnome3, KDE, XFCE, LXDE, etc. Desktop environment is largely a matter of personal taste, however; so choose one that feels "comfortable".

Most distributions and their various desktop environment flavours offer a Live-CD download. Grab a few and give them a try using Virtual Box. You'll know when you find the right distro for you. :)

distrowatch.com is a good starting point for discovery.

 

HIGHLY recommend using Virtual Box to test out different distros. It's incredibly fun to fire up virtual machines in a matter of moments. I've found I truly do get the feel for the "right" distros very quickly. No need to endlessly boot from live CDs on a physical machine. VMs are vital experience as it is, so for me it's a no-brainer.

 

Yeah, In the class I made a disk partition in my laptop, but Im starting to think that it will be easier and faster just to use the virtual machine to discover new distros

 

Generally I second the idea of giving many distributions a try and figuring out what "feels good" to you. But this is mostly for "personal" use. In order to build a career, it possibly depends on what you have in mind:

If you really want to go deep into things, you should possibly look at Arch Linux or something built atop of it. This might be a learning curve a bit steeper, but this way you'll learn a load of very basic things about how a Linux environment works. This is something that will come in handy if you look for a career close to the Linux system itself (in example working for RedHat, Ubuntu or some Linux vendor, or maybe some company using Linux for embedded devices).

If you rather intend to do software development and want to work with Linux in a business environment for hosting other services and deploying applications to, you should have a look at Ubuntu (Server/LTS) or RedHat (Enterprise) / CentOS and figure out how to manage these specific systems in terms of overall system administration, package management and the like.

 

I'm interested in software development, so I think I will start with Ubuntu. However I will try to use more distros in my spare time, maybe I will find another one more comfortable for me. Thank you for the advice guys!

 

Great advice, as I'm going through the same decision process myself right now.

 

It mostly depends on your background and which OS are you currently comfortable with.

A bit of background: You can pick between multiple distributions and multiple desktop environments.

To put it really simple, a distribution can be described as the core foundation of your Operating System, the most common distros are Ubuntu, Fedora, Arch, Manjaro, OpenSuse, Linux Mint, elementary os. I'm sure I'm missing a ton of others, but these are for me the common distro. All of these, have different cores and approaches, some of them share the same core but come with drastic edits.

A Desktop Environment is what you actually see, your GUI. Common DEs are Gnome, Cinnamon, Mate, Pantheon, etc.
You can potentially have whatever distro with whatever desktop environment running on top.
If you used Fedora, most likely you used Gnome DE.

If you're coming from Windows I'd suggest Linux Mint with Cinnamon desktop, or Mate desktop. They're both based on Ubuntu, a really common distro based on Debian, with a massive availability of support, software, fixes, etc. Cinnamon and Mate DEs are really familiar looking for a user coming from Windows. They share similarities in managing windows, the file manager, and the overall interface.

If you're coming from MacOS I'd suggest Ubuntu Gnome or Elementary OS. The DEs are really similar to MacOS, and the learning curve is pretty flat.

If you don't know anything about Linux and you don't feel comfortable in tinkering with terminal commands and stuff like that right at the beginning, I'd stay away from Arch based distro, because they require a lot of customization, and also Fedora, because their approach is to include bleeding edge technologies that are not fully stable. Dealing with bugs and spending hours in the terminal is not a great first experience to approach Linux.

ElementaryOS is highly recommended for absolute beginners. Based on Ubuntu, has all the good packages and stuff you can get, but it comes with a strict and highly curated desktop environment called Pantheon. Easy to use, not overwhelming and out of the way. After you get acquainted with Linux and you want to start playing with the command line and heavy customization, you can switch distro.

I know my post is not really accurate, and I'm giving away a lot of average info, but I tried to keep it simple and easy to understand for a new user.

I hope that helps, and apologies for any inaccuracy.

 
 

Thank you so much, I hope it'll be somewhat helpful

Thank you very much man! It was helpful! I'll be checking out Linux Mint

 

A lot of people are going to suggest Ubuntu or other Debian -variants to you, but please save yourself some trouble and steer away from them. Debian -variants suffer from an incredibly unstable package manager that has consistently over the decades failed to get significant improvements and fixes to issues.

Only a Debian -based distribution is going to end up with you trying to run some updates and it telling you it needs to uninstall your OS kernel (the core of the operating system) before that can be done, but it can't do that because everything else on your system depends on the kernel being in place.

Similarly specifically Ubuntu has a bad history of being one of the few distributions with consistent issues on booting with various kinds of computers without kernel tweaks and such where literally any other Linux distribution just works out of the box.

Some of the other distribution families also have the most mind-blowing issues. I vividly remember my experience with trying to get Arch Linux on a laptop just to realize that the font configuration was made such a huge mess that it wouldn't come with decent font support for LCD screens out of the box.

RPM based distributions are generally much more stable and sensible, and often provide usability far exceeding Ubuntu.

An additional point worth considering is that one reason Linux knowledge is so valuable is that it dominates the server market. However, in the server market there really are only two popular choices: CentOS, and Ubuntu. Though my personal opinion is that Ubuntu is chosen by the people who know very little of Linux administration.

CentOS is basically the open source version of RedHat Enterprise Linux, which has it's bleeding edge of development done in the Fedora distribution. Using Fedora or Ubuntu on desktop will thus give you skills most easily applicable to the server -world, though some of the tools you will run into with Fedora are likely not going to be available on servers for some time still.

Now I've been using Linux on desktop since the late 90s, and I've seen quite a bit of progress happen, however I gotta warn you that if you expect a smooth desktop experience like on Windows or OSX you're going to have a bad time. The Linux Desktop "market" is still incredibly fragmented with a lot of competing platforms, libraries, tools, etc. that seem to mostly focus on bickering instead of interoperability. This means you will regularly run into issues with drag & drop not working between applications, and other such fun surprises, just because you are not using the "correct" file manager of the 20 options available and so on.

Additionally if you happen to run some hardware that the Linux community just doesn't care about you're just going to have an incredibly bad time. I heard that the Intel GPU drivers are among the best for Linux, so when I had an extra computer with an Intel integrated GPU I immediately installed Linux desktop on it to try out how well that works. Turns out with that specific GPU hardware acceleration support would make your computer completely lock up after just a few hours of use, and the only workaround was to turn off hardware acceleration making the computer way too slow for any sensible use.

If you are however willing to risk it, and understand that there are likely going to be issues that you will have to post to Stack Overflow, IRC, and various forums about, I wish you good luck and hope you have fun learning!

Some of my favorite distributions I can highly recommend are:

  • Mageia: A very friendly desktop distribution mageia.org/en/
  • Fedora: An all-round solid choice, one of the most widely supported distributions out there getfedora.org/
  • elementary OS: Ubuntu-based so suffers from many of it's issues, but if you really want something Ubuntu-based this distribution is actively trying to fix many of the issues of Desktop Linux elementary.io/
 

"Only a Debian -based distribution is going to end up with you trying to run some updates and it telling you it needs to uninstall your OS kernel"

Are you sure about that? I've been using Ubuntu for some 10 years, and there's not been a SINGLE instance where a package asked me to uninstall the kernel, just for the package to be installed.

I'll love to be enlightened. What package is that exactly? I've compiled and built packages from source for many different applications, and NONE has EVER requested that condition.

I'm curious.

 

Of course there is not a single package responsible for all the problems, this is a recurring issue that just happens when apt gets really confused about what it should be doing.

It regularly starts with a situation like this imgur.com/a/yXyD7 and then following the advice the software is giving.

Also you are aware of the fact that just because you have not seen a problem it is possible for it to exist? I've been using Debian based distributions since the late 90s and getting apt so confused as to not know what to do other than try to uninstall most of your OS is a recurring theme.

But if you want more material, here are some of my other complaints about Debian -based distributions, some less common than others:

  • Installing a package with a service automatically starts that service, so you often end up having to do several extra steps to get services configured to work the way you want them to: install, stop service, delete data, reconfigure, start service

  • Packages end up lingering around way after they're needed. Typically a Linux distribution suggests about 200MB /boot -partition, which gets quickly filled with the endless kernel images your Debian -based distribution installs without cleaning up the old ones

  • You just want to update your packages so you run apt-get update && apt-get upgrade -y and end up having to answer a million questions you shouldn't need to know the answer to when it's updating grub and other system critical packages

  • There is no easy way to suppress all user interaction requirements when installing packages, for every package you end up having to find how to pre-configure the selections for the answers you want instead, and there are a LOT of useless questions these systems tend to ask from people who shouldn't need to know the answers to them or even understand the questions

  • Randomly finding that the service for your package is just configured to run /bin/true instead of the binary for the service (e.g. openvpn server)

  • /casper/vmlinuz.efi: file not found, requiring acpi=off noapic or other kernel parameters to boot the installer and not having those boot parameters automatically saved to the installed system

  • Things just suddenly failing to work with no clear way for users to recover, e.g. only a year ago I installed Ubuntu and ran literally two commands apt-get update && apt-get install gnome and then rebooted, and the system would no longer boot cleanly and I had to spend my time debugging why

  • Constantly coming up with new pointless competitors for existing standards, unity, upstart, linuxbsdos.com/2012/04/27/whats-th... ...

  • Failing to implement solutions to generally known common problems. It's common for Ubuntu that some mirror fails every now and then, and there's nothing wrong with that. However, the commonly proposed suggestion is to edit the APT sources and change them to use "mirror://mirrors.ubuntu.com/mirrors.txt" to automatically use a working mirror. Why is this not default behavior?

  • omgubuntu.co.uk/2012/09/online-sho...

I could go on forever about issues I rarely bump into in any other environment other than Debian/Ubuntu -based distributions, but I think this is enough.

Welcome to open source, my friend.
Pull/Merge requests are welcome.
This is the imperfect world.
You even don't imagine how many problems are with Windowses or MacOSes.
If your job is linked with some kind of OS and you feel boring with it you may change your OS or your job to more comfortable. It's just a question of the decision.
There is a choice there, always.

I don't really think you understand.

1) Not all open source projects suck as badly as Debian/Ubuntu

2) Sending a pull request does not mean it gets accepted or that the community doesn't think their tools are already working "perfect" (as they obviously do in case of Ubuntu). Disagreeing with how a Linux distribution is built does not mean that you have time to fork it into your own distribution, feel free to give it a go if you doubt me

3) I've been using computers heavily since the 80s starting with the Commodore 64, I don't have to imagine as I know. Windows and Mac OS X have many fewer critical problems for multiple reasons. Windows is closed source so hardware manufacturers are ok with giving away high quality drivers for use on it, and since it's paid software there are developers working on delivering a quality experience instead of just spending their days bickering which means the effort is not fragmented into a million competing desktop implementations etc. .. For Mac OS X the main reasons are also simple: closed hardware means very limited set of devices that need to be supported, and limitation of features that are given to users limits the development effort, hell there isn't even an audio mixer for them to support. Additionally quite a lot of Linux distributions end up working a lot better than Debian -derivatives

4) I've made my decision already, it's to avoid Debian -derivatives whenever possible, and to warn people of being suckered into thinking Ubuntu is the best the Linux world has to offer.

I like your comment for the consistent reasoning and detailing. I hear you.
I agree that there are problems there. Maybe I learnt to live with them so they don't bother me anyhow. I'm very comfortable with Debian.
It's best for me but it's just me. And it's ok for me if you use another distro whether it be rpm-based or deb-based even Gentoo or Slackware.
Seems like you used test or sid branches.

 

+1 for Mageia as a friendly entry-point to desktop Linux. I used it's forerunners--Mandrake and Mandriva--for a while before settling on my current distro of choice (Mint+Cinnamon).

Likewise, CentOS is a good choice for a server-like environment where it's based off Redhat Enterprise Linux. (RHEL powers the majority of the Linux servers at my workplace.)

 

It just doesn't matter.

I mean, there are some wrong decisions. I would steer you away from Gentoo, because you build all the things, but beyond that, not much.

They present about the same with user space, with some superficial change with defaulting to Unity or Gnome or ... I don't even know the good window managers these days. But you can install the other ones.

And installing is similar too. Either apt install foo or yum install foo, which is not a big enough difference to really get hung up on.

It wasn't always this way. in the 1990s, I went Red Hat (before Fedora existed) because I could not complete a Debian install. I couldn't figure out how to get to "Yes, these are the initial packages, so install now, please". The problem then was that you didn't have yum, so you went to RPMFind to get the packages you wanted.

Then I found Ubuntu, which allowed me to say sudo install this package on the command line and gave me an easy installation, so yay. I stay because 1) I know how to have it tell my code my computer is locked, and 2) because it does The Right Thing with notify_osd. And, of course, because I'm used to it. This means I'm odd, not that it makes sense to you. This is not meant as a recommendation.

I'm hearing Red Hat is common in enterprise situations, including the systems my code runs on that I don't admin, and Fedora is based on that. I know people who run it and, as far as I know, they like it. I see stickers and t-shirts on occasion...

If Bioinformatics is going to be your regular gig, I'd double-up on knowing the Fedora side, even if just it's being used to having /bin/env python pointing to /usr/local/bin/python instead of /usr/bin/python. But it will be much more important to you if you get into systems administration than just developing.

And even then, kinda not, because with Puppet and Chef and Ansible -- are those the only major players in that area? Am I forgetting any? -- you're seeing large systems on which Bioinformatics is done, the admins want to have scripts saying "This machine has sshd, the message queue, NFS mounts to these file systems and that's about it". A Puppet developer told me about a system that caught a rootkit, but every time the kit tried to install the malware server, Puppet said "Nope, not on the manifest" and wiped it. So, installing the packages and keeping it up to, honestly, many generations back for most tools, is a Puppet/Ansible/Chef thing, not a distro thing.

So, if you know people who are strongly Fedora or Ubuntu or Mint and you can ask them questions, go with their preference, but the differences will be small and superficial. It really doesn't matter.

 

If you really want to learn to use Linux, I would use Arch Linux.

Pros:

  • Best Wiki in the world.
  • After installing Arch (with the help of said wiki), you are already pretty good in using the terminal
  • Newest Software, I hate when i have to somehow install a deb if no new version is in the repo on ubuntu/debian
  • From my experience, despite being bleeding edge, I had more problems upgrading Ubuntu than just having Arch
  • you can find everything in the AUR. Every software available for linux is most likely in the AUR, no manual building from source needed

Cons:

  • Takes some time to step through the installation guide
  • You have to decide how you want your Linux to look like

I personally recommend the gnome desktop with (at least) dash-to-dock. For pretty icons you can install numix-circle.

 

Im definitely going to try Arch, but maybe just not now. I'm kinda new in this field (I only have like 2 years coding and computer science) so maybe I will start with something a little bit more easy and like windows-users friendly idk. But I really appreciate your opinion man! Thanks!

 

And there's Antergos - Arch with GUI installer. I'm using it.

 

Personally I use two different versions of Linux on two different machines. For development I will Debian, I've found that it has a lot of prebuilt in tools that allow me to improve efficiency, the interface is wonderful. If I need to test my server for some changes or weaknesses I'll use a Kali machine, Kali was built for the soul purpose of penetration testing, it works wonders if you're testing on yourself or need to find a weakness in your own code. It has a lot of built in applications to do this (some a bit fiddly) but all in order those two are the ones I've found to be the best.

 

Sounds interesting, maybe I can try installing Debian in a new disk in my desktop

 

Would certainly either dual booting or having a separate disk to try out operating systems before hand.

 

Problem with a general suggestion

The problem I encountered with diving into the GNU/Linux world is that you cannot just "do stuff from scratch and understand everything" (i.e. learn C by writing a simple webserver).

Most distributions I consider practical for production are also those that need little maintenance after an initial configuration.

So I'd recommend you boot up a "beginners" distribution first though.

If you follow these steps, you will spend a few weeks or so with the process from start 'till the end of "Production System".
This will yield a lot of knowledge though.

Systemd

Due to the added complexity (and also the opposition to the Unix philosophy inherent to most of GNU), I'd recommend against anything with systemd at the start.
As soon as you understand what an init does, what services are.…
Let's say after you naturally discover what double forking is (so don't just straight up google it).
.…then you might very well look into it and see for yourself.

How about Slackware?

afterboot(8)

As soon as you can use the shell, including:

  • traverse the directory tree
  • be able to find out more about a command (--help, man)
  • edit files (nano is fine for starting, but as with systemd, when you know what your editor should be able to do, choose the one right for you ;-) )

I suggest you go through the Gentoo Handbook.
This will show you how to install a distribution from scratch with most of the configuration done by yourself, and lots of verbose explanation.

Why not LFS?

Suggesting LFS here would be a mistake, IMO, as this adds too much overhead (compiling, compilerflags,.…) that are not needed to understand a GNU system.
As soon as you understand GNU/Linux, you should already have a general idea on how building an LFS yourself could be accomplished.
This by far does not mean you must be able to do it of course.

Underlying Tech

I suggest having a look at the following man-pages:

  • read() and write()
  • traversing further by use of the "See Also" section

Then make sure you understand:

  • what file descriptors are
  • how processes communicate

Have a look at wait().

Production Systems

Learn how to use general purpose production systems.

Now that you know how it works, put it to use (this will be the easiest part).
Install e.g. a Debian Stable, configure it to the point where it hosts a static website (need not be anything special, a "Hello World" in HTML is enough).
Hints: nginx, Apache2, caddy are your friends.

Done?

You are never done with GNU/Linux (unless you switch to BSD).

If you still feel like it look into containers (e.g. LXC/LXD), automation (e.g. Puppet, Ansible) or whatever you feel like.

 

You should try openSUSE. Its have much packages in its official repositories, a great Installer and YaST as a powerfully graphical configuration tool. From this base you can learn down to low-level configurations and system interfaces.

 

For an initial distro, go with Ubuntu's Xubuntu. Package management is much easier, documentation is plentiful, and 99% of the time problems were hit on before by others.

After a few years, if you get the inkling, switch to a source-based distro like Gentoo. This gets your hands a bit dirtier as you'll be knee-deep in the command line, recompiling kernels. This gets you more deeper experience.

 

Just as something else to consider if you're thinking web, database or client/server software development; it might be worth your while to check out Vagrant vagrantup.com. It's a virtual machine management tool that simplifies spinning up local development server environments.

 

I like fidling and reinstalling a lot so I've tested different distros (more or less) successfully.

  • I started with Debian which I found was very good but a bit complicated to figure out at first. I can't really pin words on why though. Maybe it was a bit too serious for what I was doing with it.

  • I then switched to Linux Mint because it was Ubuntu based but lighter and worked pretty much the same way as Debian but felt more user friendly, especially when installing.

  • Lastly (for now), I revived a small i686 acer with Arch Linux ( aka Hipster Linux). I did it because I was looking for a challenge and I wanted to understand better how Linux works. Don't go there straight away if you're a beginner I'd say but definitely check it out on day !

 

Arch is my past love. Debian was my first love so I guess twas an emotional decision to return to him. :))

 

If you're interested in learning how to use Linux but still have a stable OS for your day to day tasks, try Ubuntu 16.04 LTS. It's one of the most beginner friendly Linux operating systems out there. Pretty much everything you need is baked in.

 

Debian is the industry de facto standard. (ie when a dev has only one distribution format available that is 90% of the time a .deb file)
However if you'd like to be extra thorough study also the rpm package manager for red-hat based distros. (A fedora vm image will do the trick)

Linux Mint is the way to go for your desktop environment. It is the easiest to install and use in a daily basis.

Arch is for gents who like to take care their own configs down to the finest detail.

I use a Gentoo build (coz old hardware)

 

I would highly recommend using Fedora 26 with KDE. It's been a dream. I've been a Linux desktop user for ~4 years, and gone from the bare metal (1 year using Awesome WM with Arch), to Gnome, to Cinnamon, to Mate, to Unity, and nothing compares to KDE or Fedora.

Modern Fedora is beautiful and easy-to-use, and I love DNF. KDE Plasma somehow feels the lightest and yet contains the most features of any DE around. The themes are sharp and it scales well at any resolution (I use a 4k monitor), providing a significantly better experience than Cinnamon (my second favorite DE). It has an application launcher similar to Unity's HUD, and the canonical start menu, giving you the best of both worlds. The layout and defaults are superior to GNOME, and Wayland support is excellent.

 

Hi from México too, i use and love elementary OS, any problem you get just search how to solve it on ubuntu. Protip: type 0 when ask for a donation to donwload. Also some people at my university really like deppin

 

The latest windows 10 will run ubuntu, fedora, suse Linux straight from windows store. For learning purpose I'd choose Ubuntu.

 

Keep in mind that Ubuntu, Fedora and Suse from the Windows store is a Linux "subsystem". *nix and Win10 don't interoperate 100%. However, for learning bash and getting one's feet wet with the Linux command line, it's a fair starting point.

 

But then you have not a "real" system. A system where you can configure the bootlooader by editing a text file, for example.

 

Any suitable VM (Oracle, VMWare) is your best friend in learning *nix-world.
Also it's a kinda filter or test to enter into that world. If you can't deal with that, forget about Linux.
Personally, I prefer Debian with KDE. But on my job they allowed me to use Ubuntu so my choice was to install Kubuntu. A nice distro I feel familiar with. :)

 

I recommend you use ZorinOS, it's awesome for beginners. You can read why I recommend if from my blog: rameau.me/my-linux-configuration/

Classic DEV Post from Feb 26 '18

"Learn at least one new language every year" is bad advice

You don't need to learn at least one new language every year to be a "good" programmer. The best programmers see the bigger picture and prioritize what they learn so that they can deliver the best possible results.

Carlos García profile image
Mexican Computer Science Student.