Hi, this is my quick guideline on how to improve linux development experience.
Operating system
When you search for “Linux OS”, Google would give you thousands of “operation systems” like Ubuntu, Arch, Mint, … So which one is best for you?
First, “Linux” as you say is not “operating system”. It is the kernel, the bridge between software and hardware, and reponsible for almost everything in the computer. When you boot your computer, it is the first part of the OS loaded into the RAM for your system to start working.
There are many Linux distributions built upon the kernel and use a separate package managing system to suit many specific purposes. So before choosing a distro, you should know your reasons of using linux.
- If you are new to linux and just need a boost, start with Ubuntu, Nitrux or Zorin OS. They are both friendly to new users, with Windows-like interface, so you shouldn’t get confused when migrating.
- If you want to have a perfect environment for developing, Debian is one of your consideration list. There are also many other distros, like Manjaro, openSUSE, Solus, Fedora … You can install dev-branch of many distros for its specific development too.
- If you want a light weight distro and do not need many unnecessary apps, Linux Lite or ZorinOS Lite is the best choice.
- If you are advanced user, the only distro I can reccommend is Arch.1
Look and feel
Desktop enviroment is also an important part in the OS. I will list some of them here, by my actual experience:
- KDE Plasma 5: My most favorite DE, which I am also contributing to.
- Xfce: it’s really simple and light-weight
- Cinnamon: It’s good looking at first glance, and easy to tweak too
- LXDE: another light-weight DE for old machines
- GNOME Shell: The most popular one, and look like MacOS too
- Deepin: the best-looking DE by some f*** chinese guys who don’t care about privacy
Let’s note that you can choose your favorite DE in some distros, but some others don’t give you that option.
Here is my KDE Plama DE:
Essential packages
I use so many packages to support my projects, and it depends on your purposes too. But these following are the most importatnt tools that everyone needs.
Remember, you can install them via package managers like apt
, pacman
, pkg
, … but many of them are not upgrade frequently and it may causes problems with your projects. If you need cutting-edge packages for your project, I suggest installing from source.
git
, and(or)gh
docker
gcc
,g++
,make
,cmake
,autoconf
,automake
,build-essential
,gdb
- Popular languages: NodeJS, python3, ruby, perl, go, java, …
- Visual Studio Code, or your favorite text editor.
- Some system tools:
gparted
,timeshift
, …
What to know?
Using linux means you should know a lot about it, but some errors may appear suddenly and you can’t just search Google for help. So basic understanding and skills are required to join the party.
- CLI - Commandline Interface. You have to control everything almost by command in the terminal, so get used to that.
- Users and groups. Permission in Linux is really important, so knowing who you are is the fisrt lesson to survive through system errors.
- Compile packages. There are so many ways to build a package, and this is the most boring part when you have to deal with any errors that can happen anytime. You should be familiar with building from source, installing binary archives, or using package managers. The completion of your experience relies on the number of errors you meet.
- Search Google. This is your life rescuer, so learn how to use it effeciently.
- How linux works. You should have basic knowledge about how a linux system works, the meaning of folders in root directory, how kernel interacts with hardwares and sofwares,… This is useful when you face a system problem (and it’s frequent). Reseting the system should be the last way of rescuing your system.
Conclusion
Yes, it’s hard, and you may spend your whole life to buid a linux system. But it’s funny though.
Some final words, the above is based on my actual experience of 5-year using Linux, so it can contain something hard to understand. And you can personalize your liux distro to suit your need.
Thank you for reading!
-
btw I use Arch. ↩︎