2015-10-01

Why I don't use Linux

Prepare for a rant about backward compatibility.

Despite being a programmer that primarily works in C++, I'm a Windows user. I'm not ignorant though, I know my way around Linux thanks to VMs and Travis CI. I'm not particularly happy with Windows - it's a nightmare for developing C++ - but I just can't see myself using a Linux operating system full time or even part time. Windows does one thing right that Linux does wrong: programs are self-contained.

On Windows, when you install a program, all files that are not temporary or specific to any one user go into a single folder. Don't want that software anymore? I would say just nuke the folder, but there are freaky things like the Registry, Services, Shortcuts, etc. that are really best dealt with by an Uninstaller. So Windows is not perfect. But in my opinion, Linux has it worse: when you install an application, files get distributed everywhere. There's /bin, /sbin, /usr/bin, /opt/, lib folders, etc. and it makes it really confusing to know where to look for a program's files.

Not only that, but the files are mixed in with other applications! That's horrible design! What if Program X won't work if Program Y is in PATH? Sorry, you're screwed! What if Program Z and Program W have an executable with the same name? Sorry, you're screwed! What if Program Q has dozens of executables and something isn't working because one is in the wrong location? Sorry, you're screwed! (PATH in and of itself is an insanity, but at least the user can control it kind of easily.)

Both systems are bad, but Windows is at least bearable. I'm not the only one with this opinion - people know Linux's directory layout sucks. There's also GoboLinux, a flavor of Linux that actually does something to remedy the problem by isolating program files. See? People saw a problem and it was significant enough to them that they decided to go through all the effort of modifying the operating system itself to fix the problem. This isn't a light issue, it's something people actively have to deal with every day.

Also, there seems to be no current standard for having multiple versions of a program installed at the same time. On Windows, some applications append the version number to the name of the folder they install into, which works fine but doesn't organize all the versions into a common folder for convenience. On Linux, you're screwed! People just append the version number to all the files for the program, because if not, conflicts would happen and you'd be even more screwed!

Most of these problems are due to decisions made decades ago that are long beyond complaining about, but that doesn't mean innovation has to be stifled! Operating systems are so worried about backward compatibility so as to not fix the mistakes of the past, and yet companies are still running ancient operating systems and software because backwards compatibility gets broken anyway! Why even bother trying to be backwards compatible if you can't even do it right!? Just fix what needs fixing and improve what needs improving! The world will have a huff and a puff and then adapt - the huffing and puffing will be smaller if the break in backward compatibility actually fixes fundamental underlying problems instead of just changing the layout of the Start Menu.

The only way technology seems to move forward is by reinventing an existing thing instead of just fixing what we already have. This is incredibly wasteful! It's a mess: people are too afraid to fix what's broken so instead they completely reinvent everything just to keep the broken stuff broken in the same way and the new stuff not broken for a little while.

I'm very passionate about technology, but I keep seeing this same trend over and over. Randall Munroe puts it pretty well. Sadly, I don't know how to fix it - I can only contribute to the chaos of competing standards. At the very least, now you know why ninjas don't use Linux.

UPDATE: for yet more reasons I avoid using linux except in virtual machines, read this article.