# Blog|

LiNuX iS bEtTeR fOr PrOgRaMmErs!

Thu, 08 Feb 2024 09:02:49 0000

So I'm trying to figure out where this idea that Linux is better for programming comes from. As someone who's used Linux exclusively for the past several years, I'm no stranger to the pros and cons of it, so let's go through some of the common talking-points here.

1. Security and Privacy

I totally get it, security and privacy are important. In fact, this was one of the major reasons I switched to Linux in the first place. That being said, I could never quite figure out what this has to do with programming. You'll hear some vague thing about viruses or hacks and it's just like, get off the sketchy websites and practice the most bare-minimum network security. Oh, and if you use Windows, log in with a user account, not an administrator account. There you go, your attack surface has just been reduced by 99%, and if you're a valuable enough target for someone to still go after your data, your choice of OS is not likely to save you.

Privacy is a different discussion, however, and that's up to your personal comfort level. Windows and Mac will send telemetry to Microsoft and Apple respectively by default. Depending on your Linux distro, it may ask to send telemetry, or you could be using one of those Chinese distros I guess. The point is, Linux for the most part makes it easier to not send data to a third party. What any of this has to do with programming, I'm still not sure.

2. Performance

Linux is usually lighter-weight than Windows or Mac but not always. It being usually lighter-weight means that your bloated IDE will usually have more resources to work with compared to running on Windows on the same system. Now, this is a bit of a paradox because usually the people who laud Linux for being lightweight are those gigachads running tmux on a tty, coding exclusively in NeoVim (they still usually use Vimscript-based configs though), and maintain a carefully hacked together network of irc bridges for Slack. They don't actually write code, since they're usually chasing down dependency version mismatches with their broken AUR packages instead of just using Ubuntu. Normal people who use JetBrains IDEs on GNOME or KDE aren't realistically going to see much of an appreciable performance benefit over using Windows. In fact, Windows 10 boots and runs a bit faster on my 13 year old Thinkpad X220 (with coreboot) than Linux with KDE does on my 12 year old Thinkpad X230 (also with coreboot).

People will also say that Linux supports more hardware architectures. This is true technically, but in practice, most any distro you'd be installing supports at most two architectures: x64 and maybe arm. Care to take a guess which architectures Windows supports? Look, as much as I love my old m68k Powerbook, I'm not going to stick an m68k Linux kernel on a floppy disk, compile an entire userland (which you will be doing), and try to program on the thing. The only good argument I can think of for Linux supporting more hardware architectures being a benefit for programmers is if you spend $7000 on an POWER9 machine. If that's the case, yeah, you'll have to use Linux.

3. The Terminal

Learn Powershell or install WSL2.

4. The Community

Literally imagine asking anything on r/Linux.

5. Customization

Ok I've got a rant for this one. People literally do not know what customization means. People will suggest that KDE based distros are more customizable because the settings program is somewhat comprehensive, or that Linux is more customizable because you can choose a different desktop environment or window manager. You can even choose a tiling window manager and spend your whole life writing config files if you want. This is all well and good, but none of these "customizations" are really unique to Linux. Windows has a settings panel too, and guess what, there are extensions you can install to add tiling behavior. Where Linux's customizability comes into its own is when you realize that all of the core system is open-source, and so core system libraries can be swapped basically at will as long as you're willing to recompile anything depending on that library to account for ABI changes. This is not to flex, but in my time using Linux I've run Gentoo with LibreSSL instead of OpenSSL; with Udev ripped out and replaced with Mdev; and with Musl and the LLVM toolchain instead of Glibc and GCC. This is all to say, sorry Arch users, your crappy distro isn't special, hard, or customizable. But this is really all to say that none of this crap is anything programmers should be wasting time with. Like, I get it, it's cool to have hobbies, and if you want maintaining a niche Linux configuration to be that hobby, I guess that's cool; but when I can't work because I installed a botched kernel update, was an idiot and didn't set up a fallback entry to the old kernel in the bootloader, and then had to spend my time burning a live usb from a secondary system so I could fix my bootloader and make my system bootable again, that's an example to me of customizability being a liability. I don't know many people who enjoy willingly taking on liabilities. Also, your TWM config and scripts don't actually make you more efficient.

Oh, and I use Gentoo btw.