I am writing this blog as a final year undergrad. “Open source” has been a buzz word for me for the past 2 years. I have always shied away from learning about such a cool thing, and I regret for not having gotten my hands dirty earlier. I have read numerous blogs and taken up numerous courses, but sadly I could not find anything that suited my needs. So I decided to write this blog as a guide to other developers who have found the concept of open source a bit tough to understand, just like I was until a couple of days back. Let’s get started.
Let us look at what the internet has to say
If you do a google search for open source, this is what you will get:
Open-source software is a type of computer software in which source code is released under a license in which the copyright holder grants users the rights to use, study, change, and distribute the software to anyone and for any purpose. Open-source software may be developed in a collaborative public manner
Phew! That is a lot to take in, right! In simple terms, it is some code that can be accessed by anyone. There is a tonne of cool software and products out there right. If you have reached this blog, it means that you know all of that cool stuff is someone’s code that is running. Take our favorite Google Chrome for example. It is a browser, and it is someone’s running code. What about some final year project that is hosted on GitHub? That is someone else’s code. If you can access it, that is also open source. Now you would have gotten the idea.
If you take another look at the definition, it says that the code is licensed. Which means there is an owner who stands as the copyright holder to that code. If I own something, I have to make sure that someone else doesn’t steal or take credit for it right? The same goes with open source as well.
Why open source?
Okay, so why would someone let their code be openly accessible? Imagine you are writing a book. Initially, you write some story for 10 pages. Now you have to proofread it, to make sure it does not contain any errors. No problem, you can reread the book an make the changes. Now you want to add some pictures in some pages, but you want to do it all by yourself. That is okay, you can sit and create the drawings you need. But what if you are not an artist? You would prefer a professional do that for you right? Also, what if it was a 100 page book. Would you have the time to work on it all by yourself? It would be better if you had someone to help you right?
That is why you open source your source code. You are giving the chance for others to help with your code. They can make changes that they think will make your project better. Or they can help with the problems in your code.
Version control System
Version control is a term that travels along with open source. Again, let us look at what Google has to offer:
In software engineering, version control is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections of information.
If you have large amount of code, there are chances that many people are working on it. Imagine that both of us are teammates. I want to add a button to a web page. You want to add a search bar to the same web page. I make some additions, and then there is a new version of the project with the code for a button in it. Now if you want to add the search bar, should you go for the the “button code” version or the “no button code” version? Which version is the latest one, that everyone should be using? Well, all of this is taken care of by the version control system. It allows for multiple developers to contribute to the code base, without having to worry about other’s additions.
To be continued….
With this, I hope you would have understood the basics of open source. In the next blog, we will look at one of the most famous version control system, Git and GitHub and how you can make your first contribution to open source. See you there !!