Open-source is the concept of software where the code written is accessible to the public, allowing any user to modify and redistribute their own changes. There are many great things that come from open-source – allowing aspiring developers to learn how the ins and outs of a product work, and allowing for bug fixes and new features to be added to the original product.
Open-Source Helps Aspiring Developers Learn
I have first hand experience of how open-source projects have helped me understand and get into programming. I had my first experience with open-source software when I was just learning how to program and I found the site CodeProject. I don’t hear too much about the site anymore but it is still up and running, and from looking at it just now, people are still using it. CodeProject is a site where users can post articles and their own source code, for users to download and learn from. I first found it when I was learning VB.NET and C#, and the projects users have contributed to that site got me to a level of understanding where I could start building things on my own.
If it weren’t for the fact that so many programmers willingly share their code to be picked apart and viewed by anyone in the world, I would’ve had a much harder time getting into programming, as I learn messing around examples over any other learning method. These people that are devoting their time to build projects and examples for other users to use aren’t even getting paid for it, they just enjoy building these things and writing these articles to teach others, and I think that’s something truly admirable.
On the other hand, I don’t think it’d be right to force all code to be open-source. In the business side of things there is code that if it was available to the public, there’d be nothing stopping a larger company from stealing their product. But open sourcing separate components without exposing the core product for all eyes to see, could benefit businesses in many ways. Having users spot bugs in your code, and also just doing your part to share information and help the world to learn more.
Big Companies and Open Source
In recent times however, larger companies are becoming more and more open to the concept of open-source recently. Microsoft is a huge one. Their .NET platform, which VB.NET, C# and some other languages run on, was recently open-sourced on GitHub as the “.NET Core”, which they’re porting to operating systems other than Windows such as Mac OS X and Linux.
If you look at a large company’s GitHub page these days, you’ll likely see a ton of open-source libraries they’ve made publicly available for others to use. Take Facebook for example. They created the React platform for their own site, but releasing it into the wild allowed other developers to pick it apart and transform it into something that is growing rapidly.
Another example: AirBnB. While they understandably don’t have their entire web platform on there for all eyes to see, they do have their separate reusable components hosted publicly, as well as other large libraries they’ve developed in-house (for example this machine learning library, aerosolve).
Google’s entire Android platform, the core behind Chrome OS (Chromium OS) and the core behind the Chrome browser (Chromium) are all open-source as well. In fact, Android and Chrome OS are based upon the entirely open-source Linux kernel. While Google’s built in apps themselves aren’t open-source, they’ve chosen to keep the technology behind the operating systems open-source to allow others to build on it.
Apple is another company that has taken the “partially open-source” approach. While their flagship operating systems, Mac OS X and iOS are not open-source themselves, they have built the core of both operating systems on the open-source BSD kernel. This core is called “Darwin” and is open-source itself. This to me is a great example of having the underlying, more abstract technologies open to the public while still securing yourself as a business by not making your entire platform open-source. There are many more operating systems that are completely open-source, though.
First Experience with Linux
The same time that I started getting interested in coding I also had my first experience with the Linux operating system. I installed Ubuntu 8.10 (a distribution of the Linux operating system) on my computer which at the time had one of those big white CRT monitors.
For the whole first week, my WiFi adapter didn’t work and it was really frustrating but I didn’t want to give up on trying this new operating system out. So I used the family computer (that’s a thing of the past…) to Google how to fix these problems and eventually ended up compiling open-source drivers and installing them on the machine. It worked. It was a totally different experience than I was used to but when it worked, I felt super accomplished, and sort of felt like a rocket scientist.
Ubuntu comes pre-installed with completely free and open-source alternatives to popular software like LibreOffice/OpenOffice.org rather than Microsoft Office. Just about any paid and closed-source software you can think of, there is an free and open-source alternative.
For example, if you don’t want to pay for PhotoShop, or would rather just support the developers who contribute to the open-source community, try GIMP.
These days I try my best to use open-source software over proprietary software as much as I can, and I usually also take the time peer into the source code of programs I use to better understand how they work internally. I spend a lot of time digging through repositories on GitHub to find cool projects others are working on and learning how they work.
My Own Open-Source Projects
I also have most of my own code projects open-sourced on GitHub. One of my main open-source projects I’m working on is my Ace programming language written in C++. I have it open to the public because I hope that on the off chance someone finds it, they’d have the ability to look into it and understand how I made it. Maybe it could help them build their own language. Maybe they’d want to contribute to it. Or maybe, they just want to peer through the code. I think that giving people the option to see and understand how things are work is what matters most.