When and how to contribute to open source projects
Tags: beginners, opensource, github, codenewbie
Published: 2021-09-16 19:14:43

# Now

Yes, you should do it now. It is a very beginner friendly process.

I have answered the 'when' part of the question in the title, the remaining blogpost will address the 'how'.

> Disclaimer: I am just a code newbie myself, so I might get some of the details wrong. If I do so, please feel free to correct me!

# The bar to contributing in open source is extremely low
I think this is important to mention because I always thought that contributing to open source projects are for advance hacker type Mr.Robot people out there in the world. Something that you have to have a double degree in Ivy League, worked in NASA and Google in order to do.

![MR Robot codes](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8yzwnanfbbkplerniz2k.jpeg)

I was extremely relieved to have found out that this understanding of mine was sooo far from the truth. You can pretty much start contributing to open source projects once have some basic understanding of html (or even just markdown).

# What is an Open Source project?
As its name suggests, an Open Source project is open to any external contribution. For example if anyone uploaded there project publicly on GitHub (or any other Git Repo), those are by definition Open Source projects since anyone can fork a repo and contribute to the codes. In fact, many large frameworks everyone talks about are open source projects (e.g. Ruby on Rails, React.JS etc).

# Why do you want to contribute?
You want to contribute to open source because:
- It teaches you Git workflow as a beginner (very important skill)
- It teaches you the code improvement, code review process
- You get to read the source code of projects done by excellent programmers
- When you make a pull request on GitHub, it is almost guaranteed you are going to get feedback from the maintainer of those projects (imagine getting feedback from one of the React/Rails maintainers)
- It will show on your GitHub profile

# But I know too little code to do anything!
Well, you don't have to contribute code. In fact contributing code is not recommended as a complete beginner. There are loads of other contributions you can make such as:
- Improving html links to make links for accessible for people accessing the site through voice reader
- Correcting typos of markdowns
- Improving documentation of a project
- fixing dead html links

[My first contribution](https://github.com/firstcontributions/first-contributions) was literally a GitHub open source tutorial where I forked a markdown file, added my name on it and did a pull request! *It wasn't much but it's honest work*

My second contribution was a website called [Happy coding](https://happycoding.io). There I corrected typos in markdowns and improved link accessibilities.

Both of my open source contributions have very little coding involved.

# What have I learnt in my first two open source contributions?
In my first open source contribution, I learnt about the git and GitHub workflow, how to fork a repository and then git clone it to my own computer, how to create git branches, commit a change and push it back to GitHub and make a pull request. These are things that you will use on the job every single day as a software engineer.

In my second project, I learnt not just about accessible websites. Since I had to fork the entire repo of the website into my local machine, I got a lot of time to read through the source code of the website. I realised that most of the sites were built using markdown and I had no idea how to do that. So I shoot a message to the project owner. Since I made contribution to the site, the owner of the site was more than happy to teach me. I realised that there is this tool called Jekyll which kind of automates (for lack of a better word) the layout of the website as well as turning markdown into HTML. 

Furthermore, since this project is a coding tutorial site, as I was correcting typos, I also had to read a lot of the actual tutorials to get the context. I learnt about [p5.js](https://p5js.org) which is a creative coding framework.

I have then implemented all of the above I have learnt (Jekyll, GitHub workflow, GitHub pages, Website Accessibilities) into creating my [own website](https://arnoldboy123.github.io) which is also an open source project where other people have made contributions.

# How do you start contributing now?
I recommend going through this [tutorial on contributing to open source](https://github.com/firstcontributions/first-contributions). By the end of the tutorial, you would have contributed to your first open source project!

Once you have done that, I would recommend looking at projects marked as [good first time issues](https://goodfirstissues.com/), these are specifically labelled to be beginner friendly. Try to find ones that doesn't involve contributing codes, you want to build up the GitHub workflow experience and open source experience first and foremost.

Congratulations on reaching this far! Happycoding!

![MR Robot Hacker man](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0adhtlk4i916fkyb34i5.jpeg)