It is no secret that making contributions to open source projects is one of the best ways to learn a technology. But, when you are just starting out, it can be pretty overwhelming. I aim to give you some steps that you can follow in order to get started and feel comfortable with open source.
Open source projects have their source code made freely available for modification. It can be thought of as decentralized development as there is no specific team doing all the development but anyone who wants to, can contribute to the source code. So that is what it means to make open source contributions - fixing bugs, adding features, improving documentation and much more for open source projects.
Most popular open source projects follow some kind of coding guidelines that specify how the code should be written when it is to be modified. This is something very important that beginners often neglect when learning programming. Also, open source projects involves discussing issues related to the project on communication channels like slack, discord or IRC. This lets you interact with developers and you can learn a lot from them in the process.
Github is the place to start. If you don't know anything about GitHub, git or version control, then start by following some tutorials on them but in a nutshell, git is a version control system. version control systems allow developers to manage changes to the source code. github is a hosting platform for git.
Once you are familiar with git and github, try making pull requests to some repositories. There are a lot of repositories that allows users to contribute a small piece of code ( e.g. a html file for your profile ) to get them familiar to the whole pr process . Check them out and get yourself comfortable with the process.
Use the github's search bar to search for technologies you are interested in. It can be any programming language or library or framework you have some experience working with. The idea is to get better at using it by working on projects so you don't need to be highly experienced with it.
Out of the search results, use the github's star feature to star interesting projects that you can check out later.
Upon deciding the project, check out its contribution guidelines. It will often be included in a contributions.md file. Also, make sure to join their communication channel as it is the place where you will be able to ask and clear your doubts regarding the project.
Okay, now you are familiar with github, have an open source project you are excited to contribute to and have successfully forked the repository. Now, how to understand this pre existing 1000 lines of code?
This is usually the point where people get stuck in open source. The codebase of projects (especially the popular ones) are huge and if you don't have any experience with working with pre existing codebases, it can be very overwhelming.
It is often recommended to try fixing the minor issues (often marked as good-first-issue) to get started with understanding the codebase and project structure.
Other things you can try is asking someone from the communication channels as to how you should go about understanding this codebase. Of course, you don't have to understand all of it. But, it is always helpful to understand the tech stack of the project as it will save your time later.
Another unorthodox way that I tried was, go the the pull requests section of the repository, go to open pull requests. These requests are usually fixes for open issues. Then, click on some pr that interests you, and use the github's <files changed> section to see the changes the contributor did in order to solve this issue. As it is an open pr, it hasn't been merged yet. So, now you have the issue as well as the solution to it. So, first think of how you would go about fixing the issue and try to do it to the forked codebase. If stuck, or after implementing your solution, check what solution is used in the pr and try implementing it.
This way, you can familiarize yourself with the large codebase.
Remember, when stuck, it is important to have patience and be consistent with learning. Try to explore the repository, checking out new PRs, issues raised and conversations on the communication channels regularly and soon enough you will be recognized as a contributor to your favorite open source project and learn lots of fun things during the process!