After searching for the perfect issues to solve as part of Hacktoberfest for about 10 days, I finally found them! Anyone participating in Hacktoberfest knows how hard it can get to find issues to contribute to. Issues are usually either taken or lack proper documentation to set up the development environment, or they may be something completely beyond oneβs abilities.
The number of things I learned over the three pull requests I made this week was beyond expectation. I was also able to network with maintainers and nonprofit organization founders who are taking part in Hacktoberfest. I was able to directly communicate with some of them through Discord and I even got invited to a standup meeting of a Non-governmental organization (NGO) called Glific to understand their issues for better contribution. Never in my wildest dreams did I expect so much networking and collaboration to happen within just the first 15 days of Hacktoberfest!
I learned that open source is a wonderful way to gain new skills and people are more than happy to guide you when you are stuck.
My Pull Requests π
1. intel / cve-bin-tool
I created two pull requests for Intelβs CVE Binary Tool. CVE Binary Tool is a tool that scans a file for known Common Vulnerabilities and Exposures.
Pull Request 1 -
refactor: resolve mypy errors in test_version.py
Pull Request 2 -
refactor: resolve mypy errors in test_extractor.py
The Fix π§
I was able to fix the errors that were occurring in both issues and now I am awaiting approval from the maintainer.
Challenge Faced: A CI/CD nightmare π
Now, the only little knowledge and experience I have of CI/CD are from my cloud computing class where we used jest to write tests. I woke up to two emails stating that my run failed for both pull requests. It had something to do with black
. Not knowing what it meant, I promptly sat to work to identify what went wrong. This was also the first time I properly learned to read those logs that shows the CI/CD runs. Black was checking for whitespaces and it was unhappy with the whitespaces that I left in the code. I had to go back and run black test/test_extractor.py
to fix the formatting.
I received some requests for changes from my reviewer for the test_version.py
file. The comments were super detailed and so helpful. I knew exactly what I did wrong, fixed them, and pushed my changes.
But then... the run failed again and it had to do something with isort
. Through this trial and error of multiple runs fails, I learned that there was something called pre-commit that checks a whole lot of things such as formatting and linting and most of my fails were formatting related. I then ran the pre-commit and fixed all errors before pushing my changes. Had I read their contribution guidelines a bit more carefully in the beginning, this would have been a lot easier.
2. ifmeorg / ifme
If me is a mental health organization that encourages people to share their stories, moments, and moods through their platform with their loved ones. I found this organization through reading this GitHub blog encouraging people to participate in contributing to digital public goods. If-me is a certified digital public good and I wanted to play my small part in helping them out.
-
Pull Request -
make the navigation bar fixed
Challenge Faced: Lost in the Ruby codebase
The development environment setup took a long time. The language used was Ruby and I had never seen Ruby code before working on this project. It was hard to go through the files to identify which file the issue was at. The issue itself was not very difficult but what made it challenging was my lack of knowledge of Ruby. Also, real-world projects are so large! It is hard to set them up and navigate around them to fix even the smallest issues.
Currently, I am addressing the changes requested by the if-me maintainer and I am also attempting to write some unit tests for them. Now, it has only been about two weeks since I learned to write unit tests, so I am not so sure how this will go.
Digital Public Goods
What are Digital Public Goods (DPGs)?
βDigital public goods are open-source software, open data, open AI models, open standards, and open content that adhere to privacy and other applicable laws and best practices, do no harm by design, and help attain the Sustainable Development Goals (SDGs).β (Digital Public Goods Alliance)
NGOs are very close to my heart. Going into Hacktoberfest I knew one thing β I wanted to help small non-profit organizations that are working for a good cause. I wanted to make an impact β big or small and come out of Hacktoberfest feeling accomplished. I love participating in events that are working to achieve Sustainable Development Goals and I love reading research reports on how open-source software or technology is being used for social impact. Here is one such great article!
Before joining Seneca College in 2020, I spent about 1.5 years working and writing grant proposals for various NGOs throughout Southeast Asia and the Pacific Region remotely. I wrote for and provided technical support to six organizations in Thailand, Myanmar, Indonesia, Papua New Guinea, Mongolia, and Bangladesh. My writing became the voice for those who did not have the skills to write grant proposals. I told their stories, helped them prepare reports, and infographics, and even filmed and edited short documentaries for their donors. When I found the GitHub blog mentioning all the nonprofits taking part β I knew I had to help them in any way I could. This time through code.
A little bit of backstoryβ¦
My mom runs a nonprofit research center in Dhaka, Bangladesh focusing on marginalized communities and finding ways to serve them better by regularly collaborating with the nationβs government and various universities from around the world (particularly Europe) for research purposes. My dad does the same thing, but in Bangkok, Thailand and oversees the activities of many NGOs across ten countries in Asia and the Pacific region. This exposed me to the world of nonprofits from a very young age and naturally, I was inclined to participate in helping them.
Going Forward π
I can't even begin to describe how much I am enjoying taking part in Hacktoberfest! I am becoming a better programmer and learning so much. I will be writing more blogs about my experience and the projects I am working on in more detail in the coming days.
Top comments (13)
Hello Samina
First and most importantly: great job!
I waited so much in my career before I contributed to open source - long after I was interested in the movement itself.
As for how to contribute, a point I make below is that contributors are often overthinking it. Doing the first contribution is strange because you are one stranger trying to do something complex with another stranger.
I recommend starting with something simple but valuable: spending 20 minutes to try a product and giving feedback, opening an issue, contributing a failing test, adding tests to a part of the codebase that has yet to be covered.
Good luck
Can beginners make a simple but meaningful contribution? Some unconventional advice #hacktoberfest
Jean-Michel Fayard π«π·π©πͺπ¬π§πͺπΈπ¨π΄ γ» Oct 1 γ» 7 min read
Thank you for sharing!!
Hey Samina, great article! Definitely can relate to
CI/CD nightmare
, re-checking the formatting is always something that slips away from me :)BTW would you like to contribute to a simple language for developing full-stack React + Node web apps with less code? If so -- please check out this issue and join us!
Thank you for sharing. I will check it out!
Its not the swags that make us happy, it's the feeling of accomplishment that pushes us towards contributing more. I really enjoyed your way of learning, even I faced those CI/CD hurdles along the way. But the fun is in turning those red crosses into green ticks.
I would like to give you a suggestion on your problem with setting up of development environments. Honestly if I try to clone the repo and setup that environment myself, my good old laptop will just give up. Instead I heavily rely on cloud based development environments such as gitpod.io It is a cloud based vscode IDE with all tools you need. A great life saver feature of gitpod is that it detects the type of the project most of the times and sets up the environment (like Ruby), installs the dependencies and provide you with a ready to code experience.
This will save you a lot of time and will allow you to focus more on your contribution.
Thank you for the suggestion! I will try it out next time.
Happy Hacktoberfest !π
Happy Hacktoberfest !!!!!! ππππππππππππ
Wonderful article Samina.
Actually we are also interested to join. How can we do it?
Great share Samina!
Thank you!
This was very inspirational
Thank you! And happy Hacktoberfest.