This week I was seeking in GitHub (and other sources) open-source projects to contribute and learn in the process how is to work with the code of someone else.
Seeking for a project
There is a lot of open-source projects out there, I was looking in the section of exploring on GitHub, but there are a lot.
One characteristic that I encounter very helpful is the tags search projects, for example, searching terms like “help-wanted” or “good-first-issue” and then putting the filter for your favorite programming language help me to filter the projects that I’m interested in collaborating.
Being part of the community
It’s very unlikely that you encounter a project that has recently started, most of them have a builder community.
Before working on the project, I encounter very useful first join their main communication channel, it can be a discord or slack server, personally, I introduce myself, my intentions to support the project and they respond very nicely and friendly.
Another important aspect to be in contact with the other contributors is that you can easily find answers to the questions that you may have.
Communication is all, and in this chaos of pull requests and issues is useful to be in touch with others and understand the main objective of the project.
Mistakes on the way
Every project is different, that’s why you should pay close attention to the details and rules of how to contribute.
It may have (or not) the specifications of how the issues are assigned, the blueprint for the pull request, and branches information.
I made a mistake on my first attempt to make a collaboration, I was working on the main branch instead of development (where the changes have to be done).
For example, I make a mistake thinking that the application has an issue with a certain page, but in I the end I wasn’t in the correct branch. Wrong issue and pull request.
At the end with less or more practice, you will feel more comfortable coding within the project, in my little experience searching for repos to help all the people which I interact with was nice.
When you gain a certain basic level of programming, is a good experience to read others’ code and try to understand what’s going on, if you don’t get it ask.
And when you do your contribution, it doesn’t need to be perfect code, that’s why there are discussions and code reviews, to improve what is not ok and learn in the process.
Another important point, is the description in the PR, every project is different, but most of them ask you to answer the questions: what, why, how, and testing.
Here is an example of my pull request in the medusa project.