LAHacks was both a terrible and amazing experience.
Making things open source sounds like a great ideology of sharing and making the world a better place, but the success of making things open source depends on more than simply allowing anyone to use and modify it.
Ten years ago, my dad gave me my first computer. As I turned it on for the first time, I noticed that it was different from any of the computers that my friends had.
I was greeted with a logo titled “fedora” that I had never seen before, and was instantly intrigued. This was linux, and as a 10-year-old kid I had no idea what the implications were. All I knew is that I had to use Open Office because Microsoft word was incompatible, and much of what my dad did to set it up involved text moving really quickly around a black screen.
“At least I have Firefox”, I thought to myself as I started to resent not having Windows like all of my other friends.
Ten years later, I find myself completely fascinated with open source software, joining the newsletters for different development projects and submitting pull requests to people I have never met in person.
Misconceptions about Open Source
Most people involved in the open source community have similar experiences, owing their introduction of open source software to something they discovered on the internet or via another person.
The term “open source” is a relatively new one, emerging in the past couple of decades with the growth of computer software and the internet. And today, the concept of “open source” is flooding into various other industries, creating a lot of interest in the “open” future.
But there’s a misconception that non-technologists have about open source: that the value of open source is primarily about making things freely accessible to be used by everyone.
If the essence of open source materials was simply making resources freely available to all, public libraries could be considered an open source repository of knowledge, as some people believe them to be.
But public libraries are not open source.
Public libraries are centrally organized, hold copyrighted works, have a very specific method for being published and hosted, and have very strict levels of legality. This is almost the exact opposite of being open source, with the only commonality being the ability to freely access and read the resources. Open source is decentralized, has little or no barrier to entry, and generally free of regulation.
While opening up resources is a very powerful step toward being more transparent and collaborative across a sector, the real significance of open source resources is much greater. Open source implies a freedom to modify and redistribute without fear of violating copyright or other legal problems. In other words, I can duplicate anything that is open source and release it as my own. This is very different from the collections of copyrighted books that libraries allow people to read.
Thus, the significance of open source is not in the way that things are distributed (although democratic decentralization is a big part), but in the way that things are created. In fact, some open source software licenses have a copyleft, which means that any derivative of a software must have the same license.
The Impact of Open Source Software
Most of the world’s computing systems run on some from of unix/linux. If you’re reading this on an android phone or a mac, you’re directly using some sort of linux/unix operating system. Over 8,000 people have come together to write the code you are currently using. Saying that the linux operating system has been one of the most significant technological wonders of our time would be an understatement.
Linux would not be possible without the open source community surrounding it, and is probably the most accurate incarnations of the open source philosophies ever.
But if we look at the history of linux, we find that it is by no means organized. There are many different variants of linux that are referred to as “distributions” or “distros”, and anyone is free to take and modify a distribution for their own use. Because of this, we get an extremely rich and dynamic history to linux.
Over 8000 people have contributed to the core linux code, creating over one million lines of code. The fact that so many people have come together to create such a powerful piece of software without receiving any financial compensation is the quintessential example of the power of open source.
Open Source Licenses Explained
When we look a little deeper into the world of open source software, we find many different licenses. If you’re anything like me or most other people in the world who have never read through the entire “terms and agreements”, you likely have no idea what open source licenses actually say. There are many different types of licenses for open source software, but here are some of the more prominent ones:
- Apache License 2 – “the license allows the user of the software the freedom to use the software for any purpose, to distribute it, to modify it, and to distribute modified versions of the software, under the terms of the license, without concern for royalties.”
- BSD 2-Clause and 3-Clause – “allows freedom to modify and redistribute as long as the license is included in any derivative work.”
- GPL – “grants the recipients of a computer program the rights of the Free Software Definition and uses copyleft to ensure the freedoms are preserved whenever the work is distributed, even when the work is changed or added to.”
- MIT – “permits reuse within proprietary software provided all copies of the licensed software include a copy of the MIT License terms and the copyright notice.”
- Mozilla Public License – “allows covered source code to be mixed with other files under a different, even proprietary license. However, code files licensed under the MPL must remain under the MPL and freely available in source form.”
Check out Wikipedia for more information and a comparison of all the licenses.
Open Source Philosophy
In many ways, the backbone of the recent technical revolution was the open source software that made collaboration and cycles of technological scaffolding possible. In an economy of physical goods, if I give you a car, you now have a car and I no longer have a car. But in an economy of open source software, I can easily duplicate software and we can both have copies that we can infinitely distribute.
This mere fact changes every aspect of the software industry, and has allowed software to proliferate as fast as it has. Now, instead of having to spend years trying to build something that another group of people have already created, I can adapt a version of open source software to my own needs, benefitting myself and whoever decides to use the software in the future. This prevents developers from having to constantly reinvent the wheel in software, and easily build on someone else’s ideas.
There are a couple of interesting side effects that happen as a result of open source software. The first is that it lowers the barrier of entry to software development. Anyone with a computer and an internet connection can contribute to software that is used in millions of applications all over the world. Open source software is not stuck behind the recruiting processes of a single company, and gives anyone the freedom to contribute, create, and remix open source software.
And a corollary effect to the first side effect that I’ve noted is the fact that open source software varies far and wide in terms of quality. Because of the fact that anyone and everyone can contribute and distribute, there are open source projects that range from extremely high quality to extremely low quality and everything in between. Not every open source software project turns out the way that linux does. In fact, most open source projects are disorganized, buggy, and often left to die, scattering remains in a way that cripples support for users who aren’t technical enough to fix problems themselves.
Thus, compared to software developed by the private sector, the open source landscape carries much more noise.
Open Source Development Tools
To deal with this noise, effective collaboration, and distribution, many tools have emerged around the development of open source. I won’t talk about them all in this post, but I do want to mention one in particular: version control. Version control systems such as CVS, Mercurial, SVN, and GIT have all had an enormous impact on allowing developers to easily scale the creation of software unlike any other industry.
Essentially, version control systems allow anyone to easily modify the code, maintain their own version, and merge it back with the original if they so wish. Version control keeps track of all the changes along the way, making it easy to see where something changed and how it was changed.
Let’s say that I am a developer that wants to make a change in the linux code. I would begin by forking the linux repository to my computer, make my changes to the code, and then submit it back to the original repository as a “pull request” that is then either accepted or rejected by the package maintainer. If the package maintainer chooses not to apply my modifications, I can either work it out with the maintainer and the community until the maintainers are convinced, or I can start my own fork and become the maintainer of my own version.
In the case of linux, this process has enabled over 8,000 people to use a single codebase, creating an unfathomable number of forks and variations but still having a powerful core product.
So, if open source has worked such wonders in the software industry, how do we reap the same benefits in other industries in the information age?
One implementation that I have been pondering a lot recently has been the area of educational resources. The most obvious use case to open source educational resources is to replace textbooks that students and schools often cannot afford. But I’d like to argue that this is the wrong value proposition to start with. In the same way that open source software is more about the creation of software rather than the consumption, we need to look at any implementation of open source the same way.
Open sourcing educational resources is similar to software in that some teachers collaborate on creating educational material, and are often recreating the same resources in different schools. Thus, to enable a proper ecosystem of open source, it makes most sense to begin by building tools around the creation of the open source resources.
By first building out great tools for educational resources, we empower teachers and other content creators to make extremely high quality, collaborative resources, which will in turn create a demand for people to use.
(note: these views are my own, and do not reflect those of the organizations with which I am involved)
If anyone is interested in creating a tool for version control that can be used in any information industry, I’d love to get in touch!