The Open Source
Tags: opensource, git, github
Published: 2020-10-28 20:49:00

In this article I will try to explain all about **Open Source** and how it is important for everyone (also for non-technical persons).So, lets start!!!

##**What is Open Source?**

Anything that design publicly accessible and anyone can modify them are refer as open source.

##**What is Open Source Software?**

Open Source Software is a computer software whose source code is made publicly available for modification and enhancements. Open source software released under various licenses like BSD, MIT etc. Open source software's  authors make its source code available to others who would like to view that code, copy it, learn from it, alter it, or share it. LibreOffice and the GNU Image Manipulation Program are examples of open source software.
There are many advantages to contributing to open source - You can make a great resume that stands out from the crowd. It helps you in building online presence. Many people prefer open source software because they have more control over that kind of software. Some people prefer open source software because they consider it more secure and stable than proprietary software. 

##**License**
Open source software released under various licenses like BSD, MIT etc. A license is an agreement that allows someone to copy , use , or resell a commodity , such as digital content.
Most open source licenses include the following statements:
* Software can be modified, used commercially, and distributed.
* Software can be modified and used in private.
* Software authors provide no warranty with the software and are not liable for anything.

Some most popular license are:
* **MIT license (MIT):** MIT is one of the most permissive licenses. It is also the most popular one. It offers very low protection for the author of the software. Modifications to the software can be release under any license. React is now MIT licensed.
* **Apache License 2.0:** Apache License 2.0 offers more flexibility to the users. Modifications to the software can be release under any license. Popular projects using Apache License 2.0 are Android , Swift etc.
* **BSD(Berkeley Software Distribution):** BSD has two main versions: 2-clause and 3-clause. They both offer more flexibility to the users than the Apache License 2.0. The license and copyright notice must be included in the documentation of the compiled version of the source code (as opposed to only in the source code). Popular projects using BSD license are Go(3-clause), Pure.css(3-clause) etc.
* **GPLv3(General Public License, version3):** GPLv3 is one of the most restrictive licenses. It offers high protection for the author of the software. Modifications of the software must be released under the same license. Popular projects using GPLv3 are Bash and GIMP. Linux uses GPLv2.







##**Programmers loves Open Source Software**

Programmers like open source software because it helps them become better programmers. Open source software helps the programmers to learn about how to work with the team and also help them to learn more about code. Open source code also help them to make better software. Students can also share their work with others. When people discover mistakes in programs source code, they can share those mistakes with others to help them avoid making those same mistakes themselves. Open source software matters to developers in building a career while allowing them to work on some of the biggest platforms around the globe.

##**What is version control system?**

A version-control system (VCS) is a program (or set of programs) that tracks changes to a collection of files. One goal is to easily recall earlier versions of individual files or the entire project. Another is to allow several team members to work on a project, even on the same files, at the same time without impacting each other.
With a version-control system, you can:-
* See all the changes made to your project, when the changes were made, and who made them.
* Include a message with every change explaining the reasoning behind it.
* Retrieve past versions of the entire project or individual files.
* Create branches, where changes can be made experimentally. This feature allows several different sets of changes (for example, features or bug fixes) to be worked on at the same time, possibly by different people, without impacting the master branch. Later, you can merge the changes you want to keep back into master.

There are three types of version control system:
* Local Version Control Systems
* Centralized Version Control Systems
* Distributed Version Control Systems
But in this article I will discuss about **Distributed Version Control Systems**.

##**Distributed Version Control Systems**
In a DVCS(Distributed Version Control Systems) if any server dies, and these systems were collaborating via that server, any of the client repositories can be copied back up to the server to restore it. Every clone is really a full backup of all the data. Distributed version control systems contain multiple repositories. Each user has their own repository and working copy. And if someone want to make any changes to their own repository then other cannot access to your changes. This is because commit will reflect those changes in your local repository and you need to push them in order to make them visible on the central repository. Some examples of DVCS are Git, Mercurial, Bazaar etc. But git is most popular DVCS. 

##**FAQS**

1.Is open source software only important to computer programmers?
**Ans:** No. Open source technology and open source thinking both benefit programmers and non-programmers.
2.How to Contribute to Open Source?
**Ans:** That's great if you want to contribute to any open source, there is an article which help you to know how we can contribute to open source. 
:point_right:[How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)


##**Some Open Source Programs**
1. [Google Summer of Code (GSoC)](https://summerofcode.withgoogle.com/)
2. [MLH Fellowship](https://fellowship.mlh.io/)
3. [Hacktober Fest by Digital Ocean](https://hacktoberfest.digitalocean.com/)
4. [Free Software Foundation (FSF) Internship Program](https://www.fsf.org/volunteer/internships)
5. [Outreachy](https://www.outreachy.org/)
6. [Linux Kernel Mentorship Program ](https://wiki.linuxfoundation.org/lkmp)
7. [Google Season of docs](https://developers.google.com/season-of-docs)