After more than 20 years in the software industry, the aspect I find most interesting is how open source software has evolved from "something us geeks use" to being so prevalent that it goes unnoticed most of the time. Everyone knows computing has changed the world, but few people outside the IT industry recognize how much of that progress was driven by the open source movement. To really appreciate its influence requires some background, so I found a few videos to explain the key points and added a bit of elaboration. I also glossed over some nuances to keep it simple. If you're not a technical person but want to understand what's so exciting about open source or even a geek at heart seeking a simple introduction, this post is for you.
Basics of Open Source Software
In today's world, computers are more than just the machines under our desks. They're everywhere—in our phones, cars, and refrigerators—and those devices all run software. In this post, we're talking about the computers in your phone and your light bulbs as much as we're talking about the one on your lap. Source code (sometimes just source) is code written by a programmer to tell a device or app what to do and how to behave. If the source code is open, that means it's available for anyone to see and modify; if it's closed, then it's kept secret from anyone who doesn't work on it. That's where we get the phrase open source software.
With that explained, let's take a look at "What is Open Source Software?" by Brian Daigle:
Then move straight into "Open Source Basics" by Intel Software for a great analogy that shows how open source works:
Now that you understand what open source means and how open source projects work, let's delve into what entices developers to build open source software and the impact it's had.
Appeal of Open Source Software
Why would anyone give away something they worked hard on? Many open source contributors earn a very healthy living for the same kind of work that they donate in their spare time. People who choose to do that tend to be passionate about software in general or the specific projects they're working on—the kind of people you can expect to do great work. Obviously the motivation for donating your time is personal, but there are several common themes. Many do it for fun as much as any other reason. It provides a creative outlet for people who enjoy solving problems with software. To a developer, getting positive feedback from users is like an author hearing from readers who enjoyed their book; finding out other developers use your software is like discovering that other authors enjoyed your book. If people decide to contribute to your project, then you reap the rewards of their work in addition to their ideas. It's a collaborative world of give and take.
Why does it matter that you can access an app's source code? If you're using an app that has a glitch or is missing a feature you really want, it's truly empowering to be able to submit a patch that scratches your itch. When developers have access to source code, not only can they fix bugs and add features, but they can examine the code to see exactly how it works and what it does. That enables them to learn from each other while also inviting scrutiny. Does an app make your device vulnerable to hackers? Does it send your personal data to Microsoft and/or the NSA? You don't need to trust the company that makes it when you can see for yourself exactly what's going on behind the scenes. Developing in the open increases transparency and builds trust, which is conspicuously lacking with many of the big tech companies. Often, open source software springs from a desire to give users an alternative to those untrustworthy sources.
Another tremendous draw is the community. Being part of the broader open source community creates a connection with tens of millions of developers and numerous more users. When you're a contributor to a project, you share a much greater feeling of ownership and belonging with other members and users of that project. Of course, there are blogs, podcasts, forums, and chat rooms as well as conferences where like-minded people share their passion for open source and bond over their experiences in that world. Since open source doesn't mean perfect (did I mention bugs?), there are times when things don't go the way you want. That's when the community really matters. A couple of months ago, I had a problem with my file manager after a software update. I dropped into a chat room where the team who works on that app hangs out and asked for help. In exactly 2 hours and 1 minute, someone had found the cause and published a fix. It took another 9 minutes for me to pull the patch down and rebuild the app: problem solved. Bug fixes aren't usually that fast, but that level of response would have been impossible if I used the closed source Windows Explorer instead.
Finally, a common motivator for open source developers is a desire to give back. We've stood on the shoulders of giants for decades by reaping the rewards of open source, so contributing allows us to pay it forward. We're all working together to solve problems and make better software not just for ourselves but the entire world. The only efforts of this magnitude in all of history have been wars, but the open source community has been mostly self-mobilizing. Many open source advocates take a philosophical stance that all software should be open as a matter of principle to improve society. This is often referred to as "free as in beer vs. free as in freedom" (i.e., price vs. liberty): some people simply don't want to pay for software (like getting free beer) while others want the source code to always have the freedom to evolve and benefit the community.
Impact of Open Source Software
Using Intel's recipe example, let's say that grandma had 5 children who each had 5 children who in turn had 5 children of their own. Now she's a great-grandma with 155 people plus herself using that recipe or a version of it. Most of them keep in touch and share changes that improve it. Eventually, those are going to be some really great cookies—even grandma would be impressed. The same was true for software: over time, with enough contributors and iterations, open source software began to take the lead against proprietary software. Companies and users found open source tools that out-shined closed source tools, and it made sense to choose apps with most of the features they wanted while allowing them to add more. They started making contributions and donating money to open source projects they depended on. That had a snowball effect where the community of open source developers, apps, and users grew rapidly. The amount of code increased as it became easier to collaborate over the Internet, and these projects each represented a solution that anyone could use in whole or in part.
Imagine if a fantastic restaurant posted their recipes on the Internet for anyone to use—including other restaurants. What if most of the best restaurants posted their recipes on the Internet? Home cooked meals would level up a notch or ten despite whether you had to swap out some ingredients to make a recipe perfect. That's the impact open source has on creating software. Today, the vast majority of software projects use open source building blocks to avoid reinventing the wheel for every little task. A major benefit of using many of the same tools is that it increases compatibility. When a large portion of developers choose the same building blocks, you begin to find those tools everywhere. Starting with familiar tools makes it faster and easier to build new things. Open source is the number one reason we're able to have fancy things like affordable software for our phones and cars.
To get a feel for the prevalence of open source software and the level of collaboration involved, sit back and enjoy "What the Tech Industry Has Learned from Linus Torvalds," a TEDx talk by Jim Zemlin discussing the most widely used open source project in the world:
At this point, open source is nothing short of ubiquitous. The largest site for open source collaboration, GitHub, has over 65 million users and is home to over 200 million projects as of August 2021. That's 65 million people collaborating to build open source software on just one site. Because of all the freely-shared solutions available, it's easier to build software today than ever. The sheer volume and quality of open source projects empowers developers around the globe and beyond: NASA revealed that their Ingenuity helicopter on Mars is powered by Linux, and they open sourced the code they wrote to fly it. Open source is to software what blogging was to traditional publishing (as mentioned in the first video, WordPress is an open source blogging platform that powers 42% of all websites). Open source developers tore down the castle walls built by the early software giants like Microsoft and gave a voice to the masses.
The biggest lesson from the open source movement is that cooperation, collaboration, and open competition are superior to closed competition with few participants and even fewer gatekeepers. We're still competing to build the best solutions, but we're doing it in the open where anyone can contribute. It's democratization of software by inviting everyone to participate while allowing users to pick the winners. At the same time, it's socialization since everyone in the world reaps the rewards. The only barrier to access or participation is having a device to run the software, which gets cheaper with every passing year. Who owns all this software? None of us; yet I do, you do, we all do. It's the great equalizer and enabler of the 21st century. The people have taken stewardship of the most valuable intellectual property in the world, and they're using it to build a future where we all benefit.