I care deeply about open source software. What started as a curiosity turned into a hobby, then later developed into a passion, a career, and, finally, something resembling a social and political stance. While I don’t use exclusively open source software—that would be too hard, and I’m not that brave nor that absolutist—I try hard to use as much open source software as possible. Over time, I try to replace closed source tools with open source alternatives. And I try to spread the love, advocating for open source, explaining why it matters so much, and sharing thoughts on how to make the best use of it, and how to contribute to it and support the movement.
This topic grew from a single “thing”, into an entire issue of Three Things, into multiple issues (in an effort to keep each issue relatively short and focused). The topic just keeps growing because it’s so darn interesting and multifaceted. For this first issue, I’m going to focus on first things first: why open source matters so darn much. Expect to see other related topics soon including why open source is challenging and what we can do about that.
The first time I encountered open source was in the form of an early version of Linux that I was given on a CD in the nineties. At the time it felt less like a functional operating system and more like a curiosity. I was excited to install it on an old computer and play with it because it felt edgy and almost subversive. It felt like finding something I wasn’t supposed to find, like dirty magazines under a bench in the park.
Of course, open source software was pretty crappy back then. The idea was pretty new. I had no idea just how big, important, and subversive open source software and the movement around it would prove to be. It took a long time for me to come full circle and return to open source software as an adult, and as someone who understood it from first principles. And it took a while to see why and how the same principles behind open source software are starting to permeate modern society at large, as software eats the world: from ideas to code to data to money to, eventually, open source organizations and institutions.
Folks much smarter and more experienced than I am have written about the value of open source at length and I won’t attempt to do the same here. Instead, I want to emphasize three important properties that open source enables.
Thing #1: Extensibility
The first property is extensibility. This is the ability to modify or improve an application. This is fairly self-evident: if the code is open source, then by definition you can view it and change it. But why does this property matter so much?
Like many of us, over time I’ve begun to spend more and more time inside software. Think in terms of a hotel room: when you go on a short trip, you don’t care that much where you sleep. You can stay in a generic hotel room and it can be totally fine as long as it meets your basic needs. But no one wants to live in a hotel room, because it will never feel like home. Humans have a basic need to customize the places they live and the spaces they occupy. As I began to spend more time on my computer, and more time online, the desire to make changes to optimize or tweak the experience grew. I began to grow pickier about details like where my data are stored, how they’re synchronized, how portable they are, etc..
Even more importantly, however, I began to feel uncomfortable about the idea that my computer isn’t mine. I bought it and set it up, and I do my most sensitive and important work on it, but at the end of the day, I began to feel like my computer isn’t working for me. It’s working for Apple, Google, Microsoft, and the other tech giants behind the software (and hardware) I’m running. This feeling is profoundly disturbing. There perhaps isn’t a perfect metaphor for it in the pre-digital world, but it’s a little bit like buying a car, trying to drive somewhere, and being told, “No, you can’t drive there,” without being told why.
To reiterate: my computer (and my phone, and other devices) is the single most important tool in my life, and the applications running on it are where I spend most of my time. I want it to do precisely the things I expect and desire it to do, and nothing else. I want it to be simple, durable, and belong to me. This is simply not possible without open source software.
So it’s not just about customization. Customization is important but it’s probably less important than these other attributes. I want to know what my software is doing, and I want to have control over it. It’s that simple. Any tool should have these attributes. In this respect there’s nothing special or different about software, other than the central role it plays in our modern lives.
Moreover, extensibility is nuanced for several reasons. Anyone can fork the original version of the code, make changes, and rerelease the changed version. However, while changing the code is easy enough, as anyone who’s done it a few times knows, releasing and operating software is tricky. For this reason, most of the time when a developer changes an application, they either just make a small, local change and run the modified version themselves, or else they contribute the change back to the original version of the software. If the change is unambiguously good, such as a bugfix or adding a useful new feature written by a developer who knows what they’re doing, the change will likely be included in the next release, but this process can be delayed or blocked. In general, though, the property of extensibility is why open source apps get better over time: they have a much larger universe of possible contributors than closed source apps. But it’s also a challenge because, without strong leadership and a clear product vision, open source apps can begin to resemble a clumsy chimera over time.
For more: Install and run an open source app. Make a change to it. Welcome to the wonderful world of open source, customization, and extensibility!
Thing #2: Longevity
The second property open source enables is longevity. While an application’s developer or operator can trivially shut down a centralized, closed source application by turning off the backend or removing it from the app store, open source apps don’t die so easily. This is because if a useful app stops being operated or maintained, someone else tends to come along to fork it and relaunch it, assuming responsibility for maintaining it going forward. I can’t tell you the number of times some company (Google, I’m looking at you) has arbitrarily and suddenly shut down or stopped maintaining a piece of software I relied on. This is one of the main reasons I strongly prefer open source: I know that, no matter what, as long as I have the code, at the very least I can continue to run the application myself. (Obviously this is more complicated and less useful for multiplayer or social apps, but those too can be launched with more coordination.)
Open source is also important to me as a developer. The reason has to do with public goods. If I work on something for a long time, if I pour my energy into it, I want to know that it will live on in the public domain no matter what happens to the company or team behind it (since bad teams and people problems often sink great tech). I want to know that other developers can find it, modify it, build on top of it, and include it in their own projects. As a software developer there’s nothing more rewarding than knowing that other people are using my software, and writing open source maximizes the likelihood of this happening.
For more: Look for an open source alternative to an application you use regularly. Install it, and every time you find yourself using the closed source app, try the open source one instead. Promise yourself to do this for at least a week.
Thing #3: Security
The third property open source enables is security. This is one of the most important but also least well understood, least appreciated aspects of open source software. We use our devices to record and interact with more and more intimate personal information, from private emails and text messages to health and financial records to our web browsing history to our day to day work product, and much else besides. I’ve written before about how privacy is one of the most important things in the world.
The vast majority of centralized, Web2-style closed-source software simply stores our personal data on servers run by the application’s operator, and the operator has full access to view (or modify) that information unilaterally, without our permission and without our knowledge. (Uber’s God View comes to mind as one example of how egregiously this trust can be violated, although more often companies are just clumsy with protecting our data and it gets compromised.) In some cases companies tell us that their applications are end to end encrypted, which means that even the company operating the app has no access to your data—but if the app is closed source (and the company is Facebook), how well do you believe them? The only surefire way to know exactly what an app is or isn’t doing with your data is to look at the code and check for yourself. For this reason, I try not to put sensitive information into apps that aren’t open source, and I suggest you do the same.
For more: Reflect on where you store and interact with your most sensitive information. Who could potentially have access to that information, and how might it be compromised or used against you?