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:
coding language (for me it was C++).
searching for a repository.
looking at the code structure (sometimes).
Issuespanel and filtering issues with label
Finding an issue that you like.
Clarifying doubts and asking for assignment.
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.
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 & IssueHunt for searching issues. There you can find tags such as
beginneretc. This way you will directly be looking at the issues that you can tackle.
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
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.
Go ahead to
Issuestab and filter the
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.
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.
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
beginnerissues 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.
Once assigned, Voila! 🥳
You got yourself into this, now do what you have to. And have fun while you do it.