January 10, 2015 centos teaching infrastructure

'(Choosing your Everyday Operating System)

Three great operating systems are recommended for growing your programming chops: Arch Linux, Gentoo Linux, and FreeBSD/PC-BSD. You’re welcome to go with a more mainstream UNIX like Ubuntu or OSX, but these have a tendency to hide lower level OS details; you’ll learn a lot more by choosing one of our recommendations. Your preference for control, speed, licensing, and mainstreamedness will determine your choice. All three are bleeding edge rolling release, highly open, fast, minimalist, configurable via text files, and security conscious. And all have uniquely fantastic package managers.

Linux or BSD?

A wise person on some podcast I once heard said something like …​

Linux is a PC OS ported to UNIX, BSD is a UNIX ported to the PC.

The first consideration is what license model appeals to you. Linux is GPL (v2), which means that many of the tools you’ll use are going to be GPL, and changes that you make to code should be shared back with the community. BSD’s stance on licensing is that you can do whatever you want with changing of code. For some business cases this may be a preferable model. You may not be augmenting your system tools or kernel, but some day you very well may.

Linux is more popular than BSD, but that doesn’t mean it’s better. BSD powers much of the internet today, including sites like Netflix and Yahoo. It’s even what’s underneath OSX.

Linux has broader reach, particularly in mobile and embedded computing. It’s what powers your Android phone. It’s in your router, and probably even in your microwave. There are literally hundreds of distributions out there that you could install on your laptop right now, many of which are in widespread use in data centers and as desktops.

When you start up your shiny new service on an affordable VPS, most of your options are going to be Linux based. Popular VPS hosting services include Linode, DigitalOcean, and Rackspace, all of which primarily offer Linux (and only Linux). There are BSD hosts out there, but the paucity is something to keep in mind. If you have some idea of what OS you’ll want to eventually host your apps on, you probably want to choose that OS as what you’ll run for your home/development systems. IOW, if you decide to go with a Mac (or PC-BSD) for your daily development, you may want to go with FreeBSD in the cloud. Otherwise, choose a Linux family for both.

Linuxes nowadays are mostly based on systemd. This gives you sophisticated control of running services, fancy journaling/logging, and super-fast booting. BSDs have a simpler init startup system (but sometimes simple is a feature).

More details on this TechRepublic post.

Arch Linux

The first Linux option is Arch. It is the most popular of our three and features several niceties:

  • Fast installation

  • Wikis and forums for any topic under the sun

  • Binary packages for speed of install

  • A lot of adoption momentum

Gentoo Linux

Gentoo is a DIY OS. You build everything yourself to suit the architectural details of your system; you even configure and build your own kernel! It takes some time to build/install a Gentoo, but the result and learning experience is usually worth it. Compelling features:

  • System is tuned to be fast!

  • Ultimate control of every tool

  • Portage/emerge

Fedora Linux

The main advantage to using fedora is that it’s in the RedHat family. The most commonly deployed server OS these days is CentOS (also based on RedHat). Read why I like CentOS to see why I this is a good choice.

PC-BSD

FreeBSD is by far the most popular of the BSDs. The experience is pretty similar to Gentoo, in that you can build most things yourself. It has some very compelling features:

  • ZFS (compression, reliability, raid, speed, ease of use)

  • Disk encryption

  • DTrace

  • All-in-one OS, maintaining the kernel and userland together

  • Reputation for robust security

  • A PC-BSD super-distro with easy installation, making laptop and server consistent

Great, you can make a choice now! It won’t be final, but it will get you on your way with your first machine of many in your lucrative career.