ALL ABOUT OPEN SOURCE
Tags: opensource, github, git, community
Published: 2021-02-20 14:35:32

### What is Open Source?
Open Source software is the software whose source code is freely available under some licensing conditions so that we can provide some extra features to the current version, find bugs and report some issues. With the help of Open-Source software, we can read its source code and if needed we can implement its some part into our project under some licensing conditions. Open Source is not only related to software but also is more related to programming languages, projects and some well-known High leveled Design Systems.

### Open Source Software.
Here is the list of Some Popular Open-Source Projects:-

1. Mozilla Firefox
Mozilla Firefox is a customizable internet browser and free open-source software. It offers thousands of plugins that are accessible with a single click of your mouse. 

2. LibreOffice
LibreOffice is a complete office suite that offers presentations, documents, spreadsheets, and databases.  

3. GIMP
Another of the best open software source examples that are worth mentioning is the photo editing tool GIMP.

4. VLC Media Player
VLC Media Player is one of the most popular open-source software examples that you can use for free.

5. Linux
According to a Stack Overflow survey, 83.1% of developers claimed that Linux is the most wanted platform. Linux is one of the most user-friendly open-source software on the market. It is most commonly used on Android devices and desktops.


6. GNU Compiler Collection
GNU Compiler Collection is a collection of compilation tools for software development in the C, C++, Ada, Fortran, and other programming languages.

7. Python
Python is common programming and scripting language used by custom software developers.

8. PHP
When talking about the best open-source software examples of 2021, we shouldn’t miss PHP. 

9. MySQL:
MySQL is an open-source relational database management system.

Nowadays open source practices are becoming very popular, developers are outsourcing their project to the world so that his/her project gets proper shape as per their needs. There is also a scenario that every person on this planet does not know each tech-stack that exists so if he/she wants to add some extra feature to his project which they might not know then they can approach a person who knows the field and can do the required changes. Many big organizations/companies like Netflix, Linux foundation, etc are making their project open source so that they get ample amount of suggestions, improvements, and bug fixes from experienced developers.

### What is git?
Git is the most commonly used version control system. Git tracks the changes you make to files, so you have a record of what has been done, and you can revert to specific versions should you ever need to. Git also makes collaboration easier, allowing changes by multiple people to all to be merged into one source. Git is the main root of the version control system and many company's/organizations use it on their platform for project tracking.

### What is GitHub?
GitHub is a website for hosting projects that use git.

### Various Platforms for Open-Source projects:-
1. GitLab
Gitlab is an open-source, powerful, secure, efficient, feature-rich, and robust application for handling software development and operations (DevOps) lifecycle. This is possibly the number one alternative for Github, as it supports group milestones, issue tracker, configurable issue boards and group issues, moving of issues between projects, and more. It also supports time tracking, powerful branching tools and protected branches and tags, file locking, merges requests, custom notifications, project roadmaps, 
issues weights, confidential and related issues, burndown charts for project and group milestones.

2. Bitbucket
Bitbucket is a powerful, fully scalable, and high-performance development platform designed for professional teams. Education users and open source projects get free Bitbucket accounts and many other features. You can easily import your GitHub repositories to Bitbucket in 6 simple steps and supports third-party integrations. It has remarkable features such as Bitbucket pipelines, code search, pull requests, flexible deployment models, diff view, smart mirroring, issue tracking, IP whitelisting, and branch permissions for safeguarding your workflow.

3. Beanstalk
Beanstalk is a powerful, secure, high-performance, and reliable platform for managing source code repositories. Beanstalk designed to improve your development workflow using features such as code review, issue tracker, repository statistics, release notes, notifications, email digests, compare view, and a full history 
of commits and files, and so much more.

4. Launchpad
Launchpad is a fully free, well-known platform for building, managing, and collaborating on software projects, built by Canonical, the makers of Ubuntu Linux. It has features such as code hosting, Ubuntu package building and hosting bug tracking, code reviews, mail listing, and specification tracking. Furthermore, Launchpad supports translations, answer tracking, and FAQs.

5. GitBucket
GitBucket is an open-source, highly pluggable Git platform that runs on JVM (Java Virtual Machine). It comes with features such as a repository viewer, issues tracker, pull requests, documentation, and wiki, as well as a plugin system to extend its core features.

To get into the world of open source, you should know at least one programming language, knowledge in the sense you should be able to solve complex problems using the language. And the second most required thing is learning git and GitHub, there are lots of resources available on the internet regarding the same. Learning doesn't mean only watching the tutorial videos, you must have a habit of "coding-along" while learning.

Now that you have learned and implemented one programming language and git/GitHub, it's time now to look for some beginner-friendly repositories in which you can make your hands dirty by making some good contributions and applying the knowledge you have gained. There are two ways in which you can find repositories.

1. Using the GitHub search feature.

![1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3fdfzjmaswi7ocu751j.jpg)
Here you can write your programming language name on the place where I have marked with red and hit enter then Github will list all the repositories that use the particular language.


2.Google it.
You can use google search by just typing "Beginner friendly repositories for <Programming_language>"[it's just a demo sentence].

Note:- In the above sections, I have just guided you for searching for a project related to your language, but for finding the relevant organization you need to hustle more as it requires a decent amount of searches in finding perfect-fit organizations related to your tech-stack/language.

After you found the matching repositories/organization related to your tech-stack/language then setup the code-base on your local machine and start understanding it. If you are finding any difficulty in setting up the code-base then you can contact the maintainer/mentor of the repository regarding the same. But before approaching any maintainer regarding the doubt, firstly you should see for the errors you are getting on the internet and if you
are not able to tackle it then you can approach the maintainer.

After you get familiar with the code-base try to search for the issues that have a "good-first-issue" label on them, the meaning of the label is that even the beginner having the basic knowledge of the tech-stack can work on the issue. If you found some extra bug or wanted to add some extra feature then you can create an issue by yourself, but make sure that you check all the issues first to ensure that there is no such issue created first.

Open source is not about just coding, you can work on improving the documentation[Readme. md] also of the project. Documentation is also equally important as coding as it guides the collaborators step by step about the project and "How you can contribute to it".

If you get stuck on solving some issues, you can take help from other developers using the IRC channel/slack of the organization. The biggest advantage of open source is that the community is there to help you at each stage of your development.

### Good practices for contribution:-
1. Always raise an issue first before creating a PR directly.
2. Always make your own branch for making changes and then create a PR from your branch.
3. Always be concise about your doubts.
4. Be humble while asking your doubt and be patient till your doubts are resolved.
5. Always follow the code of conduct and contributing guidelines of the project.
6. If you are creating an issue then be descriptive about the issue, add some images related to your fixes, etc.
7. During creating a PR, provide a proper description of the changes you have made with screenshots if necessary.

### Making your first contribution:- 
1. Fork the repository.
![2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s7tk3g0vepv3w9zllel7.jpg)
open your cmd.
2. git clone https://github.com/YOUR-USERNAME/repository-name.git
![3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wp3v0e4dz282rahzta1.jpg)

3. cd repository-name.
i. git remote add upstream <link to main repo (not ending with .git>[URL of mail repository]
ii. git pull upstream

4.git checkout -b "branch_name" 
 i. git pull upstream branch_name

5.Make your changes.

6.git add . // it adds all files

7.git commit -m "commit-message"

8.git push -u origin <your-branch-name>

9.create a pull request
![6](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0fc530leh8f6jaem96l.png)

10.open pull request.
![7](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owyhfai8atiso7gb89m5.png)
Wait for your PR to get reviewed and merged. Congratulations 👏🥇 you wrote a line of code that is going to be used by hundreds or thousands of people, this feeling can not be expressed as it has its own importance.

Even though your PR gets merged but it's your responsibility to stay in touch with the project and the maintainers, help other peers who are facing
an issue.

### Open Source Programs:-

1. [Google Summer of Code](https://summerofcode.withgoogle.com/)

2. [GirlScript Summer of Code](https://gssoc.girlscript.tech/index.html)

3. [MLH Fellowship](https://fellowship.mlh.io/)

4. [Outreachy](https://www.outreachy.org/)

5. [Season of Docs](https://developers.google.com/season-of-docs)

### Advantages of open source contribution.

1. Ability to work with a large code-base.
2. Grow your network.
3. Habit of writing efficient and precise code.
4. You can add your contributions to your resume.
5. Improves problem-solving skills.
6. Get to learn something new.