My Case for Open Source

Laptop computer with code displayed on the screen
Photo by Arnold Francisca / Unsplash

Background

This introduction is a bit long-winded. The TL;DR is that someone asked me why someone would use Linux. If you're in a hurry you can skip to the next section.

This week started with an attempt (again) to switch my desktop OS. Last year I attempted to switch to Pop!_OS 22.04 by installing it on a second disk. I had been using PopOS on my laptop for months before and felt comfortable enough with it to give it a shot on my desktop. That experiment ended up failing pretty quickly. I had all of the software I needed installed, but there was just one issue: opening any tool window in Unity caused the editor to crash. I reported the bug using their tool and support got back to me pretty quickly, informing me that the operating system version I was using wasn't yet supported by Unity. Back to Windows for me.

Fast-forward almost 9 months. I finally decided to upgrade my laptop OS version from 20.04 to 22.04. The upgrade process was smooth and after the initial shock of change I ended up really liking 22.04. I thought maybe enough time had passed to sort out some of the issues I had had with my desktop install. So I changed the boot disk on the computer back to PopOS 22.04 and performed the months of updates that had just been piling up.

Almost immediately I ran into an error (again). The update process had failed and retrying the updates just failed with the same error. Eventually I found the fix online, applied it, and was greeted with a fully up-to-date PopOS 22.04 installation! I opened Unity hesitantly, dreading the "I knew this would happen" feeling of the imminent crash when opening a tool window. I had come prepared this time though – I had done some more reading on Unity's Linux compatibility so I was ready to roll up my sleeves and get to debugging. I opened the Package Manager window and ... it didn't crash! Apparently Unity fixed compatibility in a subsequent editor version.

It wasn't all good news though. I started to get intermittent hard system crashes that seemed random. My computer would completely freeze for a few seconds and then restart. After some more occurrences of this, I had started to suspect it had something to do with GPU utilization as it tended to happen only when some kind of video was being played – YouTube, Discord screen shares, and Unity all triggered the crash fairly reliably. I couldn't find any logs that pointed a finger at the issue.

I was on a Discord call when one crash happened. When my computer came back up from the crash I explained to my friends that my computer had been crashing "randomly" for a few days now. Someone asked if I knew why. I told them it started when I had switched to Linux. Then I got 2 flavors of the same question:

What is Linux?
Why use it instead of Windows?

Someone chimed in that "Linux is an operating system that programmers use to think they're better than everyone else". I didn't know how to answer that immediately. That experience got me thinking about open-source in general, and how to explain it to non-programmers.

What is Open-Source?

Source code is like a recipe. A recipe tells you how to produce something. Source code tells a computer how to compute.

Open-source software is software whose source code is... well... open. Anyone can view it. Almost anyone can take a copy and use it. Almost anyone can make changes and then distribute the software with their changes. Just like with recipes, you can make a better version of an apple pie and share it with your friends.

Why "almost" anyone? All software has a license that attempts to spell out what you can and can't do with that software – usually called the End User License Agreement (EULA). Open-source software also tends to have a license that says what you can and can't do with the source code. That license can be incredibly permissive, like The MIT License which basically states you can do whatever you want with the source code (including sell it!) as long as you keep a copy of the license in the source code.

Why is Open-Source Important?

Open-source has a lot of good points:

  1. It's free – sometimes you don't need all of the features you think you need. A lot of the free alternatives that you find for commercial software (like GIMP if you were looking for a Photoshop alternative) are open-source.
  2. Community – open-source projects tend to have a pretty passionate and engaged community. This makes getting support surprisingly easy, especially for larger projects. Commercial software support tends to rely on paying people who don't know (or use) the software how to read answers to common questions. Open-source support is generally done by the developers of the software or another user who has had more experience.
  3. Developer community – open-source projects have a unique ability to address issues: programmers can make changes and share those changes with the original project. That makes the software better for everyone without having to wait for the original developer to address the issue themselves.
  4. Can be audited – there tends to be a higher degree of trust with open-source software because there's "nowhere" to hide malicious code, since everyone can see it.

In a perfect situation, open-source is the ideal of many people working together for the common good. It's not all sunshine and rainbows though. There are some downsides:

  1. The burden of support is on the initial project owner. There are countless instances of open-source developers getting burned out.
  2. Projects can be abandoned at any time.
  3. Many open-source developers are essentially volunteers (see #1).
  4. Some projects lack documentation that would otherwise help new users get into the software.

Why Support Open-Source Software?

Open-source software fills in the gaps that commercial software leaves. Chances are incredibly high that open-source software was used for your secure connection to this website. If you are in the majority of users that primarily use Google Chrome, did you know that Chrome is built from the Chromium Open-Source Projects?

In my development work I use open-source all the time. Using existing code rather than writing my own can speed up development time. Being able to look into issues with that existing code is also very helpful and it beats waiting business days for responses from companies.

Open-source projects are also a great way for people who are new to programming to get started. They provide experience that is very valuable to have on a resume when applying for a job.

Open-source projects have different incentives from commercial projects. Open-source projects tend to be more utilitarian: "what's the fastest and/or easiest way to solve this problem". Commercial software can be very polished because they are able to fund developers, project managers, graphic designers, marketers, etc. That comes at a cost though. Usually that cost is financial. Good software is worth paying for! Sometimes that cost is the erosion of privacy.

So Why Linux?

It's really a personal decision. Part of it is that I like mixing things up sometimes.

Then there's the open-source benefits: it's a free (no $100+ Windows license), highly configurable, no-frills operating system that just gets out of my way. The community is engaged and helpful for the most part. I like being able to solve my own problems. I like being able to generate a useful bug report that can be delivered straight to the person who is able to fix the problem.

Then there's my gripes with Windows: annoying notifications, forced reboots for forced updates, crappy preinstalled software, visual updates that no one asked for (the right click context menu on explorer is such a mess) and can't opt out of, the weird interrogation you get on every major update ("do you want to turn on Cortana yet?", "don't worry your files are safe"), the upsells (looking at you OneDrive and Office).

There are many different Linux operating systems. One of the nice things about that is if your distribution does something you don't like, you can switch! My go-to distro used to be Ubuntu but now it is PopOS (which is itself based on Ubuntu).

For me, Linux does everything I need. Now that .NET has pretty mature Linux support, Rider is an amazing IDE that also happens to be cross platform, and Unity is cross platform I can do all my programming work without having to switch back to Windows.

Year of the Linux Desktop

In case you were wondering, yes, I solved my system crashing issue. It turned out to have been caused by a very unsuccessful overclocking attempt. I reverted the BIOS changes I made for that and haven't had a crash since.

In the Linux community there's a long running joke that "this will be the year of the Linux desktop" – every year. While it may not that year for everyone, it will be for me!