I first started looking for an open-source project in Dec 2018 to get into Google Summer of Code 2019. Asked some previous year GSoC students about the preparation strategy, and all they had to say was to pick a mentoring organization from the GSoC official website based on your tech stack and start with small contributions to the codebase. It could be fixing typos in the documentation, writing tests, or fixing “easy to fix” issues. Believe me, it looked easy but most people can’t even do that. I had started learning to program just 6 months before that, so I didn’t have much confidence to even submit a proposal for GSoC in March 2019 because I couldn’t make any contributions. Then again, in June 2019, I decided to get it a try. After jumping from one project to another, I finally found an interesting project, SymPy, and started sending patches around dec. Furthermore, I got so involved in the community and by the time of applying for GSoC in 2020, I got several PRs merged into the SymPy codebase. Result: my project was selected and over a period of 4 months, I worked with the sympy development team and developed a control systems engineering package from scratch, in python.
Yeah, that is a common issue that most contributors face. It looks overwhelming at first, but trust me, with the time you’ll get used to it. Fix: you need to deal with some specific files to fix issues, and you don’t have to understand the whole codebase at all in the beginning. Commands, like grep, come really handy while searching through large files. I have seen some of the lead maintainers of the projects also don’t know all parts of the codebase, they are learning alongside you. Another trick here is to understand the codebase by fixing issues, so try to fix as many issues as you can, send the patches and get them merged. Even if you come up with a naive approach to solving a particular problem, fellow developers will help you in improving the code even further. That’s the whole point of open-source, right? You won’t get very far just by knowing the syntax. In fact, once you know any language then learning the syntax of some other lang won’t take much time, probably two weeks, not more than that. So focus on quality here. Learn to program don’t just learn a tool, and its obvious that would take years, if not months. This page by Peter Norvig has some great advice for you, have a look: Teach Yourself Programming in Ten Years. Regarding the open-source contributions, even if you have made a small project (in your lang of choice) on your own before, you’re good to go! It could be a game you made for yourself and for others, a blog posting web app, an android app, your own website, whatever. Just build something before you dive into the world of open-source.