Skip to navigation
Why use Gentoo Linux if you develop software
18.08.19
Why I use Gentoo Linux (and if you develop software you should too) I first discovered Gentoo Linux when I left Oracle/Sun in 2010, gave up my Mac and decided to experiment with creating a mac-like desktop experience on Linux. The initial reason was the optimizations you can do to squeeze every bit of performance out of your hardware (I'd bought a cheap Lenovo laptop). Gentoo is very different from most Linux distros. You compile everything from source (a handy tool called emerge makes that easy). You can choose what features are compiled into everything - want NginX built with a one feature but not another? Just set a variable in your make.conf. I run it on desktops and on servers - and even once hacked it into a VM in Joyent's cloud by dding a partition over the data partition and reinstalling grub. It has served me very well. A Gentoo system doesn't have a "version" - it's a meta-distribution - so its version is the combined versions of everything installed on it. It has an incredibly helpful community, and great documentation. Benefits After 5 years of using Gentoo, here are some of the benefits: You learn how your operating system works on a much deeper level, and that makes you better at all things Linux and most things Unix. Gentoo doesn't come with training wheels, but it's very friendly to configure and sensibly laid out. If you want to wind up unafraid of anything a Linux system can throw at you, using Gentoo will get you to that place. It makes you a better developer and better Unix person - I can't stress this enough. You do more on the command-line - if you want to suspend your laptop when the lid closes, you're going to chose the program that runs to do that (say, run s2ram -f), and write the shell script that gets triggered. While some may cry "I shouldn't have to know that", consider the power that that gives you - which has always been there, just hidden away. No matter how much lovely things like Docker promise to save you from knowing anything about OS's, if you write software, it runs on a real OS on physical hardware somewhere. And the more you know about how that actually works, the more competent you are. Compiler optimizations can make a huge difference. If you use any ordinary Linux distro, the packages you get are going to be compiled to run on the broadest category of machine possible. Meaning that if you have a fancy new CPU, you can't actually take advantage of its new instructions that do things more efficiently - because you're running software that has to run on the most ancient 686 out there. With some things it makes little difference, but with others it's night and day. Up-to-date software - and I mean really up-to-date - frequently 6-9 months ahead of Debian distros and years ahead of CentOS. You can also "keyword" packages that aren't officially tested if you feel brave, but even with stable packages, you get new versions a lot sooner - I always feel like I'm in a time machine when I use other distros, and it's incredibly frustrating. For example, as I write this, I'm on Kernel 4.0.5 and NginX 1.7.6. Until you've had this experience, you don't appreciate how crippling it is to depend on someone else - with their own priorities, schedule and agenda - to hold the tools you need to do your job hostage. Stability - if something was going to break on an upgrade, the things that it needs updated get rebuilt, and if that introduces a conflict, you know before all hell breaks loose. And library linking problems are a non-issue, because if it couldn't link, it wouldn't have compiled (there are some tools to help solve linking problems that are easy to use). It makes whole categories of upgrade problems disappear. You're not at the mercy of anyone deciding for you what software should be on your machine - I despise Gnome, and to my surprise, found that you don't need it - or any other "desktop" package (even xfce - though if I had to choose one I'd pick that). Your desktop is a bunch of programs, after all - and picking and choosing what you want and what should start when X starts. I have a lovely desktop to rival any fancy desktop package, assembled in an afternoon and tweaked since. Your machine never surprises you - no cron jobs you don't know about, no things that automatically update themselves - your machine never grinds to a crawl because something you don't know about and didn't ask for is happening. Ever. Compare that with the incredible learned helplessness of a Windows user - and consider that even as a distro user, unless you've studied it intensely, you've got a little of that. Not only is it possible to know with some precision what your computer is doing, it's easy and darned useful to. You can set up incredibly minimal systems - you will have a compiler toolchain, but they don't have to have any features you're not actually using. On a server (or any computer), every piece of software and every feature is a potential security hole. Being able to have those holes just plain not exist is huge. You reach a point where you feel a little queasy running software you didn't compile from source. Which is how it should be - you should be uncomfortable running anything that's a black box you can't see inside.
https://timboudreau.com/blog/gentoo/read
Reply
Anonymous
Information Epoch 1732631144
Development is an iterative process.
Home
Notebook
Contact us