My First Open Source Contribution;Why You Should Get Involved
Tags: opensource, github
Published: 2022-08-05 07:50:00

My first open-source contribution was successfully merged yesterday and I can't sit still. Although it took a week of back and forth to make corrections, I am grateful to have my contribution added to the [AsyncAPIGitHub](https://github.com/asyncapi/spec-json-schemas) repository.
 
For anyone not familiar with the term,
> open-source refers to something people can modify and share because its design is publicly accessible. Open-source projects, products, or initiatives embrace and celebrate principles of open exchange, collaborative participation, rapid prototyping, transparency, meritocracy, and community-oriented development.~[Opensource.com](https://opensource.com/resources/what-open-source)

Before I share my experience, I would like to list some of the benefits I realized since starting with open-source:
- Learnt  more git Commands like *fork*,*rebase*,*upstream*,*issue*- You don't know git until you  do opensource 
- I can add the project to my resume
- I improved my tech skills by studying other people's codes
- my confidence as a developer skyrocketed and I look forward to doing more projects
![Image of lady wearing you can do anything T-shirt](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ve7mt64cfgabh4ok5kh0.jpg)

### My experience
I  have heard a lot of conversations about open-source contributions and its benefits but I didn't know where to start. So when I came across the AsyncAPI team on [Twitter](https://twitter.com/AsyncAPISpec) asking for contributors to the API, I immediately slid into their slack channel-literally!

I went ahead to announce my availability and was soon assisted by one of the maintainers(the team that runs the project) to find a project that suited my skill set.

I was given the [contributors guide.](https://github.com/asyncapi/community/blob/master/git-workflow.md). This document contains simple instructions on how to contribute to the project. It includes instructions on how to fork, clone, work on the issue and merge your fork to the upstream repo (repository) so that maintainers can review it.  

These instructions are especially useful for contributors to understand the workflow and minimize conflict/clashing with the main project repository. If you don't adhere to these contributors' guidelines your pull request will be uneventfully closed! Which is highly embarrassing! 

It's scary at first, but once you learn the procedures, it's easy to work with.  
So I went ahead and set up my contributors' repository by forking, cloning the repository to my local machine, and working on the issue I had picked. 

Once done, I followed the guide to *push* to my forked repository -which is connected to the upstream repository, to make a [PR](https://gitential.com/pull-requests-and-code-reviews/) (pull request). A PR alerts the maintainers to review your branch and suggest changes before merging. 
 This diagram illustrates the process clearly;

![Image of Pull request flow ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vdlstf77zvi82k7p3duq.png)Source:[gitbook.io ](https://haksung.gitbook.io/oss/github/pull-request)

After reviewing my PR, the maintainers suggested that I make changes to the document. Which I quickly did and made another commit. When the final review was done and all maintainers were okay with it, my PR was merged.:-)

Not only was it a sign of relief but also a boost of confidence. Now I look forward to contributing more to the AsyncAPI initiative and also being involved in other open-source projects. Next, I let you know **where** and **how **to identify a good open-source project worth contributing to. 

### Where to find an open-source project
- [GitHubsearch](https://github.com/search) -find open-source projects on GitHub
- https://www.firsttimersonly.com/
- https://opensourcefriday.com/
- https://up-for-grabs.net/#/
- Twitter -Search for projects on Twitter using a #opensource hashtag

### Things to look out for :
- Is the project active on GitHub?-check when the last commit or PR was made. If it's more than 3 months don't bother
- Does it have a license?-Should have an MIT license
- Does it have contributors guidelines? Should be a file on the root folder of the main repo
- Does it have an active community on social media community e.g on slack, Discord, or Twitter where you can communicate with other contributors?
- Are the maintainers active? Check how long they take to respond to pull requests 

I had a great time contributing to my first open-source projects. I am sure you will too. These projects enable you to showcase your skills, learn from others and meet amazing people. You will gain a community, what do you have to loose?

### References
- [Opensource.com](https://opensource.com/resources/what-open-source)
- [zaycodes.hashnode](https://zaycodes.hashnode.dev/a-z-of-open-source-for-beginners-cl5t5wg8n08wyscnvdeeg7fkq)
- [ASyncAPI](https://github.com/asyncapi/community/blob/master/git-workflow.md) initiative
- [ gitbook.io ](https://haksung.gitbook.io/oss/github/pull-request)
- [Git cheat sheet](https://education.github.com/git-cheat-sheet-education.pdf)