What is Open Source, and why is it important?
Tags: opensource, ibm, redhat, callforcode
Published: 2021-03-09 17:00:12

## About 
Open Source has been a buzz word for a few years. With [IBM’s acquisition of Red Hat](https://www.redhat.com/en/ibm) and initiatives like the [Call for Code Global Challenges](https://developer.ibm.com/callforcode/), Google & Microsoft open-sourcing it’s various projects, the investment and development in open-source projects has been rising exponentially. Seeing all this news around Open Source, there are a few questions which arise in our minds, like what exactly is "Open Source", why is there so much activity around it and how does it all work. In this blog, we will try to answer these questions. 
 
Open Source, as the name suggests, is freely or widely available source code which can be modified or redistributed. It has a license called an open-source license which is part of the open-source software movement. It supports the usage of partial or the complete software.
 
The Open Source model is based on dispersed or decentralized development to promote open participation. Developers devote their time and skills to write, improve and document the code for further development. This leads to improvement and expansion of the project and allows anyone to access and revamp the code. Contributing to prominent Open Source projects leads to the collaboration of like minded developers who enhance the development of these projects like [Kubernetes](https://github.com/kubernetes), [Node.js](https://github.com/nodejs) & [Hyperledger](https://github.com/hyperledger).

## Availability
[There are over millions of Open Source Projects available.](https://octoverse.github.com/) Due to the plethora of options, it can be a bit challenging to find proper access to impactful projects. Here is a list of sources where you can access some popular Open Source Projects looking for contributions: 
1. [IBM](https://www.ibm.com/opensource/open-projects/)
2. [Red Hat](https://redhatofficial.github.io/#!/main)
3. [Microsoft](https://opensource.microsoft.com/projects/)
4. [Google](https://opensource.google/projects/explore/featured)
5. [Facebook](https://opensource.facebook.com/projects)

## Utilization & Derivative Work
Since, a majority of the internet was built on open-source technology, you are most likely already utilizing open-source projects. Linux based Operating Systems and your code in GitHub are all examples. A large number of developers utilize open-source projects as building blocks for their projects. 

## Using open source: Pros and Cons 
### Advantages
There are lot of advantages of utilizing open-source technology.
1. The initial cost is zero or negligible. You can start by retrieving the code from a verified portal. Lot of developers, who are working on their projects can save up on costs and time by utilizing open-source projects.
2. Open-source projects are used by many developers as a result they are constantly being worked on by contributors which results in quick responses to bugs. This makes open-source projects highly reliable.
3. Continuous evolution due to open accessibility provides an added advantage of longevity of open-source projects. Risk of proprietary software companies shutting down is a common fear for many developers as this would lead to loss of support and updates. [Lot of enterprises work with open-source.](https://www.redhat.com/en/enterprise-open-source-report/2021) For example - Red Hat and IBM work together to make open source projects like Kubernetes Enterprise ready like [Red Hat OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift).
4. [Research has shown that open-source projects are more secure compared to as to proprietary software.](https://www.sas.com/content/dam/SAS/en_gb/doc/analystreport/open-source-vs-proprietary.pdf) This is due to the fact that developers are constantly working on bugs found by users whereas the same process for commercial software could take weeks or months.
5. Flexibility is the backbone of open source. Developers can freely modify the code conveniently as allowed by the license for the project. Proprietary software has limitations & user agreements that are not adjustable.
  
### Disadvantages 
With many benefits of open-source projects, there are also some disadvantages.
1. As the focus of open-source projects is on developers, these projects are built and documented for technical purposes. Therefore, they are not very user friendly and can be tough for people from non-technical backgrounds to play around with.
2. As lots of developers are working on OS projects, not all of them have noble intentions. Some out of spite or hostile intentions can tamper with the project, which can lead to catastrophes for users who would have to deal with issues like insecure code, malware, trojans, bugs etc. 
3. Open-Source Developers can lose interest in a project due to lack of support and projects can be discontinued. 
 


## Use Open-Source Software Wisely 
Developers are surrounded by open-source projects. As we already seen lot of advantages of using open-source projects. In this section, we will see how to use them wisely.
1. Do not replicate blindly.
Tech is updated every fortnight, with these constant changes the replicated code in between the projects can be hard to keep track and update. This leads to unwanted bugs and loss of time in fixing these bugs.  
2. Use reliable projects.
Some projects attract more traction as compared to others. This can be attributed to the following facts – it’s backed by a big-name company, large number of contributors or quality & applicability of the project. 
3. Verify the license. 
Lot of developers face issue as they sign up for projects and face legal consequences as they missed the fine print.
4. Update daily.
As mentioned above, OS projects are updated frequently, for it to work as expected, we need to update the OS components in your project.

The upcoming blogs will focus on Open Source Guide, Open Source Education and my experience participating in the [Hacktoberfest 2020 Challenge.](https://hacktoberfest.digitalocean.com/) Meanwhile you can learn how to [Get Started with contributing to Open Source Projects.](https://developer.ibm.com/devpractices/open-source-development/blogs/start-contributing-open-source-call-for-code/)

On March 29th 2021, @fawazsiddiqi and I will be hosting a webinar on [Your Quick Guide To Open Source Development and Software Development Trends.](https://www.crowdcast.io/e/open-source-2) In this webinar, we will talk about open-source development, the hype for open source development, and how you can get started with becoming an open-source committer. We will discuss how you can become valuable in the open-source community, introduce you to the types of licenses for contributing projects, and how you can contribute to various other projects of interest. You can register [here](https://www.crowdcast.io/e/open-source-2) for this workshop.