Opensource Contribution 👾
Tags: github, git, opensource, learning
Published: 2024-03-03 04:23:42

> _tldr_
> 1. Find a Project
> 2. Clone it and Get Familiar with Code
> 3. Observe Issue
> 4. Fork and work on that issue
> 5. Create Pull Request including : "Fixes #issueID"

## Pre-Requisites 👌

__1. Learn an Skill__

- Just get started with an skill , preferred languages for beginners would be JavaScript & Python.
- Learn Any One , Start getting familiarise yourself with the language.

__2. Start Building Projects__

- Create Portfolio.
- Create Different kind of projects.
- Clone of an per-Existing Application.
- Watch Others Project , Create Your Project , Deploy that Project , Showcase Your Project to Others (SM...).
 
__3. Git & GitHub__

- Learn GIT Basics
- Start using GitHub
- Get familiar with its features (Github Actions,Pages,Desktop)

##  Opensource Contribution 👍

__1. Find Opensource Project__

- pick up an Opensource Project which also uses the same stack as you are learning.
- Observe and get familiar with the project by locally setup or trying their online services.
- Google any openaource alternative of the regular tool you are using .
- Follow on github acc , watch their star listed projects 
- Github provide various Page : Explore , Trend , Events

> Advance Search Option :
>  - <title> in:name , <desc> in:description 
>  - is:issue , is:open , label:"easy"
>  - stars:1..1000 , pushed:>2022
>  - language:JavaScript 

```
is:issue  stars:<1000 is:open   in:description tailwind
```

<u>_Checkout_</u>

1. README.md : gives overview of the project.
2. languages : To know , are you familiar with the languages.
3. Code Of Conduct : It gives overview of the project and what blueprint should be followed for your contribution has been documented.

4.Template for Issue , Pull request , Commit Message.

<u>_Issues_</u>

- Once you get familiar with project you can start creating `issues.
- Issues are nothing but raise an point you want to contribute such as any feature or fixing an bug.
- Every Issue has its own #ID.
- Creation of an good issue : Clear and Minimal Title , good description , Screenshot of that issue , Solution Description.

__2. Fork & Local Setup__

- before getting start to opensource contribution in a project you need to fork it and setup locally.
- Fork : Creating an copy in your Own GitHub Repo to work on.

1. Fork and Locally Setup
2. Create an new-branch & do Changes in the Code
3. Commit that new-branch 
4. push that new-branch into Your GitHub Repo  
5. Create an Pull Request of it

__3. Sync Upstream Branch__

1. Connect to the repo you forked : `git remote add upstream <github_repo>`
2. Switch to your main/master branch : `git switch main`
3. fetch the changes in upstream repo : `git pull upstream main`
4. Update your GitHub Repo : `git push origin main`

create an branch regarding that issue , create fix branch only from being into main branch else you will clone the fix branch . then goto main branch and pull the latest commit to stay updated

## Ethical Border 🫶
  
- In Opensource Contribution, their are various factors to keep in mind.
- You can't expect that your PR(Pull Request) will get merge every time.
- You have to be an open minded person and all review on your code of other developers.
- Opensource Doesn't mean you have become an developer but its gives as close as possible experience.
- Don't get demotivated , initially you wont be able to do regular contribution but keep going , you will learn by making mistakes.
- Opensource Community has very big heart and ready to help you in all kind of situation , Just be respectfull to other and show little patience thats all.

__License__
- GPL v3 : Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
- Apache v2 : when distributed and are not required to provide source code. Apache licenses contain a patent grant. 
- MIT : It allows anyone to do whatever they wish with the original code, as long as the original copyright and license notice is included either in the distributed source code or software.
- [more...](https://opensource.org/licenses)

## Resources 👊

__Explore__
- https://opensource.guide/
- https://www.freecodecamp.org/news/github-search-tips/
- https://project-awesome.org/MunGell/awesome-for-beginners

__Learn__
- https://github.com/firstcontributions/first-contributions
- https://github.com/MunGell/awesome-for-beginners?tab=readme-ov-file
- https://github.com/tldr-pages/tldr
- https://www.freecodecamp.org/news/github-search-tips/

__hackathon__
- devfolio , gsoc , jwox , iwoc , innogeeks
- https://github.com/prathimacode-hub/Open-Source-Programs


find opensource alternative of your tool then find suitable stack to work on .