Intro to Open Source - Lesson 1 - What is Open Source and Why Should You Care?

Hello and welcome to the first lesson in the Getting Started with Open Source Learning Path! In this lesson you will learn what open source software is, and why you should care about it.

Note: much of this lesson has been adapted from our earlier blog post on the Knative blog.

What is Open Source Software?


Open Source Software is software with code that is open to the public: anyone can view, use, modify, and distribute the software. But why does this matter? Well, one of the main advantages of this development approach is that everyone can see and modify the code, encouraging innovation and collaboration amongst a large number of people. It can also lead to better code quality, because there are more eyes looking at the code, giving feedback on it, and improving it.


In addition to Open Source Software, there is also Free Software. Free Software is free in terms of your freedoms as a user - think of free speech, not free food. The fundamental idea of Free Software is the 4 essential freedoms:

  1. The freedom to run the program as you wish, for any purpose
  2. The freedom to study how the program works, and change it so it does your computing as you wish.
  3. The freedom to redistribute copies so you can help others.
  4. The freedom to distribute copies of your modified versions to others.

While there are important philosophical differences between Open Source Software and Free Software, from a practical standpoint most open source software is free software, and vice versa. Given that this learning path aims to help you start contributing to open source, we are going to leave the debate of Free vs. Open Source Software to other forums and simply discuss the practical side of contributing from now on. However, we do encourage you to read up on the debate in your own time and come up with your own opinions on it.

What are some Open Source Projects?

Now that we know what open source is, what are some of the projects that have been developed in the open source community? Well, first of all you are probably reading this on a browser which is either open source or based on open source technologies. If you are on Firefox, then your browser is open source! If you are on Chrome, Microsoft Edge or another Chromium-based browser, or Safari then you are using a browser that is based on an open source engine (either Chromium or WebKit). 


Aside from browsers, there are many pieces of open source software that you likely either interact with or have heard of. For example, this lesson is on KubeByExample! The “Kube” in KubeByExample stands for Kubernetes, which is one of the most popular open source cloud technologies and used by companies large and small all around the world. Another common open source technology is the Linux operating system, which is used for most servers, as well as for many people’s personal computers. 


Furthermore, since you are reading this article, you have probably programmed before or want to program in the future. This likely means that you have used or will use open source software as most programming languages are open source!


Why should you contribute to Open Source?

Now that we have seen some open source projects, let’s talk about why you would want to contribute. It’s important to note here that generally, open source contributions are volunteer work and unpaid. That being said, there are companies like Red Hat who sell products based off of open source technologies who do pay employees to work part or full time on open source projects. 


But given that all this work will likely be volunteer work, why should you care to contribute? There are two main reasons why you should care about open source as a potential contributor.  The first is that it can be highly beneficial to your career. The second is that it gives you the opportunity to shape the future of technology. Let’s dive a bit deeper into these two points.



As we claimed above, contributing to open source can be highly beneficial to your career. The reasons for this are threefold. The first is that open source projects can really grow your portfolio. These projects generally have existing user bases, as well as standards for code quality and testing. All of this leads to these projects being much better for your portfolio than many other side projects you could pursue. The second reason is that there are many talented developers working in open source communities, and you will be able to expand your network to include them as you work with them. The third reason is that many companies value open source contributions - by working on open source projects you are setting yourself up for success when looking for your next job!


Contributing to open source projects gives you the opportunity to shape the future of the technology. If there is a feature you really want to see in the project, you can go and add it. Additionally, many open source projects are on the cutting edge of innovation. By not only using cutting edge technologies or reading about them, but contributing to them you will be able to have a say in the direction in which the technology evolves.


Given the innovation from open source as well as the career opportunities you gain from it, we hope that you are excited to start contributing! Keep following this learning path and you will learn how to find a community to contribute to, what types of contributions you can make, as well as what the processes are for these contributions.



Calum's headshot
Calum Murray
Software Engineering Intern
Calum is a Software Engineering Intern at Red Hat and an Engineering Science Student at the University of Toronto, where he majors in Electrical and Computer Engineering. He is passionate about Open Source, and strongly believes in building in the open by default. He is interested in the intersection of algorithms, control theory, distributed systems, and machine learning. Calum currently works on Knative Eventing, the Eventing Kafka Broker, and a Getting Started in Open Source with Knative Blog Series. He is also the lead of the newly revived User Experience Working Group in Knative.
Leo's headshot
Leo Li
Software Engineering Intern
Leo Li is currently a third-year computer engineering student at the University of Toronto, where he is also pursuing a minor in Artificial Intelligence. Leo has a passion for coding and is dedicated to building tools that can assist people in need and make a positive impact on the community. During his internship at Red Hat, Leo has been deeply involved in working with Knative Eventing and the Eventing Kafka Broker. He is also contributing to a blog series titled "Getting Started in Open Source with Knative." Furthermore, Leo is leading the IEEE student branch at the University of Toronto, where he is committed to fostering student community involvement. Through his work and leadership, Leo continuously strives to make a difference and drive innovation.