Its intimidating when you first step into the world of open-source. There are events held online such as Hacktoberfest to help you get an insight into this by encouraging and helping you make some dummy/noob PRs. But once you experience that, you feel a thirst to actually make a meaningful contribution to some project. That's where the struggle begins.
So I had first participated in Hacktoberfest in 2018. Receiving all the goodies was fun but it was something through which I just got introduced to the world of open-source. I wanted to contribute to more projects but most of the times I was so overwhelmed with the complexity of the projects and the code base that I almost always shunned the thoughts to make any form of progress.
This continued for 2 complete years! Until I was pushed and had to force myself into it. I'm currently in the final year of my Master's degree and I had just had experience in C++ and Qt framework, making only small fun projects and desktop apps. I know Python but only that much that allows me to get by my days in the university. Never learned it in thoroughly or practiced it by making projects.
I got an assignment in my Software Architecture course, where it required me to make contribution to open-source projects, it can be a bug-fix, a feature request or resolving some code issue. Now we know that all these aren't easy. I started looking up projects and that's when I realize that I'm extremely restricted to my choices, as I only knew C++ and majorly only had been solving problems on Leetcode.
(Psst. Newbies! This message is for you:
To all the people struggling with such limitations in languages, I urge you to get out of the comfort zone of your favorite language and learn new one. Don't clip your wings by your own hands.)
This realization hit me so hard. Learning other language widens the scope/domain to play with, but it also makes us diverse.
If you wonder which language you should pick-up, why not try JavaScript? I have started learning JavaScript (from the most famous FreeCodeCamp of course). It is a thing that's running on frontends, backends, desktops, mobile, name it! It's everywhere. Even on IoT devices now. (whaaaaaaaat...)
Anyhow. So I landed on KeepassXC Github repository where someone asked for a feature request to color the app based on the color they wanted. I took it up and started working on it, made some progress and asked on the feedback. I was responded that I took the right direction but since it was just an experimental feature, it may never be merged. Although the maintainer was polite and encouraged me to try things and keep learning, but I have an assignment to complete. So I hit a dead-end there.
Next I moved to another repository looking at the projects and realizing that had I known JavaScript well, I would not have had such difficulty in doing so. After some time I stumbled onto IssueHub.
Searched for C++ and tag: beginner, and somehow stumbled on another project.
This time I did some more research. Looked at how beginner labelled issues were handled. Saw the conversations, went through the CONTRIBUTING.md, looked at the CodingStyleGuide.md they had, and decided to pick an issue accordingly.
I hope this time my changes get merged to the project and I have something to show for my assignment. But assignment or not, I just want to say to all the freshlings here, just go ahead and try with minor issues, and as you develop and study the code you will be able to make worthy contributions to a project that you want to. It takes effort and patience. But then, what doesn't?