Step 1. Decide why do you need to contribute
I had several contributions to opensource, but they were rather fixing bugs on my own interest in small projects.
My motivation was to challange myself and to make something which a lot of people use, even on a small scale.
On daily basis I’m rather corporate type of developer, who works in a team and who’s code never leaves corporate github.
Your motivation could be different, but it’s still nice to realize what is there before starting.
Step 2. Decide where do you want to contribute
Already for a while I wanted to contribute into something “real”, and I really like scikit-learn project, since it’s near scientific and has a great and well-organized community.
You could choose a project you use most in your daily job, or project which uses technology you wanted to try but had no chance. There are several options and this step is depends on step 1 (motivation).
Step 3. Find a topic to contribute
Almost a year ago I found this issue: https://github.com/scikit-learn/scikit-learn/issues/11680 labeled as “good first issue“. Which is exactly what I was needed.
Step 4. Get familiar with contribution rules
Every self- and users- respecting opensource project should have very understandable “how to contribute” guide. Scikit-learn in that sence I recon one of the best, just take a look here: https://scikit-learn.org/stable/developers/contributing.html#how-to-contribute
It really guides you step-by-step, so even having no previous idea of project’s internals I was able to run tests locally, which was a first step to make my change.
Step 5. Contribute!
Remember, that most of the contributors are the same developers as you are, means they have office job, too. So don’t expect them to reply instantly. But sometimes when you don’t see any activity in the project for several month it might be not a good sign to start.
I made this PR: https://github.com/scikit-learn/scikit-learn/pull/12116 which lead to long discussion how to do it better, how to test it better with one of the main contributors of scikit-learn.
Overall, it was really enjoyable expierence, so I would really recommend you to try at least once!