Contributing to Open Source - Week 1
December 21, 2021This was the first week of the Contributing to Open Source phase, also it was one of the last weeks of 2021. I feel like the year went by pretty fast, but also, I am happy with all the knowledge I have acquired over the past few months.
The Contributing to Open Source phase has two main objectives: promoting community service by helping (voluntarily and free of charge) open-source software projects and helping to develop the skills of reading other people’s code, understanding large codebases without getting lost, and working with other people. We are encouraged to choose a challenging enough issue inside a large enough project, to really get much experience out of this phase. It is worth noting that “large enough” and “challenging enough” are mostly arbitrary, the purpose is to get out of your comfort zone. During this week, I was mostly searching for projects to work on and contribute. It is the most exhausting and difficult part because there are lots of open-source projects (many of them are dead projects!), some project maintainers are reluctant to accept external contributions, or there are lots of people working on the project (in the case of very popular projects like React). I am a Python lover, so I was initially searching for Python projects to contribute to, that is where I found a good issue inside the Matplotlib library that was marked good for beginners and I immediately jumped on it and started working on the solution. Fortunately, I was able to make a pull request fixing the issue, and, although it was a one-line change coupled with documenting the reason for that change and some suggestions, it enabled me to get a feel for the flow of contributing to projects. Because it was a simple change, it has no meaningful value to provide to this phase, but I feel it was very useful for future contributions.
Many open-source projects use tags like good for beginners or good first issue to show that they are welcome to contributions from people with little experience or new to the project, so it can be a valuable tag to search for if you are interested in making your first contribution. Additionally, many resources can be used to find projects with these tags, one of my favorites comes from an online event that takes place every year in October, called Hacktober Fest, which encourages people from all over the world to start contributing to open source projects and they make it easy by providing tutorials, easy-to-find projects, among other things. Even though Hacktober has ended, users can get into the official website to view the available resources.
One of the other assignments was to write an article about a highly-technical topic. I wrote an article about how memory is managed by the Python interpreter; it was really fun to work on because I got to read a lot of C code (the language I learned coding with) and understand the Python programming language better. These kinds of topics are what can differentiate a good programmer from a very good programmer because knowing the internals of a specific tool means more room to experiment without the worry of breaking something. I like this idea so I will get into the habit of researching the in-depth workings of tools that I use every day.
As I mentioned before, my main difficulty has been finding open-source projects to work on. Next week, I will have chosen one or two projects and hopefully contributed to at least one of them! I am trying to find projects that use JavaScript and/or Python, but I am open to new experiences.
Happy coding!