In my personal opinion there are only two viable Linux distros and which you use depends on your needs and whether or not you control the hardware of your system.
Gentoo:
If you are running your own hardware: such as a laptop, desktop, or virtual machine on your laptop or desktop Gentoo is the only way to go.
Gentoo has the highest learning curve of any distro, due to the fact that it is the only distro that actually allows you to pick and choose the features of your packages.
Gentoo also allows you to compile your Linux kernel based on what hardware you actually have which allows your computer to noticeably run and especially boot faster.
NEVER USE GENKERNEL.
Debian:
If you are renting a vps such as a xen domU you want to go with debian. The reason is due to the fact that you don't get control over your kernel and cannot take advantage of the benefits of Gentoo the way you can when you own your hwardware.
Also most of the time when you rent a vps you are doing so to take advantage of the LAMP stack (Linux, Apache, Mysql, Php).
The LAMP stack is something that Debian is very good at handling out of the box. Also while most of the time Debian configuration isn't as nice as Gentoo in terms of LAMP projects Debian does a great job organizing configuration.
As is the case with me, and I'm assuming AbDuCt as well although i don't want to speak on his behalf, it doesn't matter what distro we use.
We separate the idea of the Kernel (Linux), from the operating system (GNU), from our environment (WM,TERM,EDITOR), from our shell scripts which provide us the experience we enjoy.
It's been said that the operating system is only a bootloader for emacs. This simply means, the kernel and operating system don't matter, only your environment.
The key is to stop judging distros by their out of the box experience, if you are doing so you are using something that isn't the best for you _always_
For the most part you don't want to focus or worry about your Kernel or your operating system toolkit.
Get better at bash, perl, (lisp if you emacs), as well as editors and environments such as vim, emacs.
Once you can take advantage of any linux system regardless of the kernel or operating system, then you can focus on tweaking your base system to accentuate your experience.
What you want to focus on is your environment, and your scripts.
Decide on if you need a desktop manager to be productive. Do not use a window manager just because they are cool. There are two types of users: Those who use window managers because they are cool, and those that use window managers because you can't script a desktop manager. (This isn't exactly true. In fact, desktop managers use a window manager and then put menubars, desktops, and context integration on top of the window manager. So technically you can configure the window manager).
The biggest mistake people make is that they decide what window manager to use based on what looks cool, this is a misnomer because any window manager can look equally cool based on how you configure it. When you swap distros as a way to see different window managers you are only seeing one person's style and method of configuration. You need to judge window managers based on their interactivity, and ability to be configured via an integrated scripting language.
Personally for my window manager i use awesome. I've used awesome since 2008. Don't swap between different window managers because of style and looks. You can make every window manager seemly identical in appearance. Choose which window manager you use based on what programming language you like. If you like haskell go with xmonad, if you like lua go with awesome. The idea is that your window manager should be configurable in a language you enjoy scripting in and in a language that you feel comfortable writing code from scratch in.
Remember that your window manager should be an expression of yourself, and not a tool with preset specifications. You should code your window manager to provide the experience that suits your unique computing needs that differ from everyone else. This is the whole point of using a scriptable window manager. If you are using a window manager because people think it is cool without configuring it, you are missing the whole point. Alot of people do this and i personally find it very sad.
The next topic is your terminal. rxvt-unicode is the ONLY terminal that is any good in my opinion. It can be configured in anyway imaginable. It has both a perl scripting engine (allowing you to write perl code to modify its behavior and to provide hooks for all of its internals) as well as nice cosmetic customization via .Xdefaults. It is the most aesthetically pleasing and powerful terminal out there, hands down.
The next thing to focus on is your text editor.
There are two choices: emacs and vim. (nano doesn't count, stop using it.)
Emacs and vim can both be scripted to add features to the editor. Again, the idea isn't the out of the box experience. It's about how you like to write and work on projects and making your editor work that way rather than getting someone elses way of doing it which is NOT the best for you even if you think it is because you get used to it.
Emacs, which i use, is far more powerful than vim due to the fact that it is scripted with a lisp called emacs lisp and has a REPL (Read Eval Print Loop). Vim is also a viable editor though, it has a very basic minimally features configuration language called vimscript. However, if your vim is compiled with perl, python, or ruby support you can write modules and extensions for your vim in those languages. However, nothing beats lisp, i won't make this post longer by explaining why, but you should look into lisp. To get an idea of what lisp can do really easily watch the iron man movie where he creates his projects. While it's text and not voice based like Tony Stark's system people who use lisp don't write code. They create their own pre-process languages and then run evaluation functions on their few lines of psudo code to generate code in other languages.
Finally the last part of your environment is your shell scripts that you create as wrappers over the other commands to provide useful quick tools or larger scripts that do amazing stuff.
mkdir ~/.bin
cat PATH=$PATH:~/.bin >> ~/.bashrc
touch ~/.bin/myscript
chmod +x ~/.bin/myscript
This allows you to write your own scripts and to be able to execute them in your terminal without going to their local path in the file system.
Here is an old screenshot of when i used Awesome, rxvt-unicode, and vim:
http://scpb.in/dev.pngI hope I've been able to give you some helpful advice.
Cheers.
This post was edited by Raffle on Apr 20 2015 08:58pm