Finding a repository to work on
Tags: beginners, opensource, github, hacktoberfest
Published: 2020-10-19 19:00:22

So this is the first, none the less challenging part of the journey. Finding a repository that you can work on. The main steps go like these:

1. coding language (for me it was C++).

2. searching for a repository.

3. looking at the code structure (sometimes).

4. navigating to `Issues` panel and filtering issues with label `beginner`.

5. Finding an issue that you like.

6. Clarifying doubts and asking for assignment.
<br>
#### 1. Coding Language
Fixing a language, may not seem very important at first but it is. It should be a language that you are most comfortable with. It's okay if you are beginning in that, but this way you will know which repos to filter out.
<br>
#### 2. Searching for a repository.
People will tell you that Github Explore is a great way to find the repositories, but it can be challenging for someone just starting. Once you filter out the repos on the basis of language, you will see tons of them. Many will be personal side projects and many will be actual products. You will need to navigate to issues and search for something you could work on. This may be too much for some (as it was for me).
I prefer sites like [IssueHub](http://issuehub.io) & [IssueHunt](https://issuehunt.io) for searching issues. There you can find tags such as `good-first-issue` or `beginner` etc. This way you will directly be looking at the issues that you can tackle.
<br>
#### 3. Understanding Structure
This step is not always the next thing to look for, as a 3rd step (feel free to do this after you find an issue to work on), but sometimes it makes it easier to understand how the project has been laid out. It can be all functioning files in the root folder(highly unlikely), it can be divided into `src`, `include`, `scripts`, `docs`, etc. You will get a better idea of how things are laid out and it's a good way to accumulate understanding of good practices.
<br>
#### 4. Navigating Issues
Go ahead to `Issues` tab and filter the `Label` as `beginner`. You will find issues that are beginner friendly and specifically targeting newer audience that are starting out. Issues may/may-not need huge coding skills.
<br>
#### 5. Finding your Love
Find an issue that appeals to you the most. Read the comments and the description. If people are already working on it, look at the way the discussion is going on. See how people ask for explanation. Make note of the commit messages and PR(pull request) names. Find something that is still untouched. Look what needs to be done. Go to the code and see where and what changes you'll be making. This way you'll be better prepared.
<br>
#### 6. Ask for assignment
Now go ahead and present your will to work on this issue. Just write something like:```Seems fun. I would like to work on this.``` The maintainer will respond you to go ahead and then you can clarify any doubts you have. Like``` is there a specific guideline on the naming convention``` or anything that you want to know. Don't be scared of asking. Maintainers are good people. They want to encourage you to do this, which is why they are having the `beginner` issues at the first place. Once you are clear on what you have to do, go ahead and ask the maintainer to assign this issue to you.``` Please assign this issue to me so that I can go ahead with the work.```


<br>
Once assigned, Voila! 🥳

You got yourself into this, now do what you have to. And have fun while you do it.