This October, I dove into Hacktoberfest 2024, excited to contribute to open-source projects and gain real-world coding experience. As a relatively new participant in open source, I didn’t know what to expect - only that I wanted to explore and learn as much as possible. This journey introduced me to a diverse range of projects and coding practices, which expanded my perspective on software development.
Hacktoberfest itself was an adventure. Initially, finding issues that were manageable, open to new contributors, and within my skill set took time. The Hacktoberfest tag was both a blessing and a challenge: while it directed me toward projects welcoming contributions, it also attracted thousands of developers with the same goal because of growing popularity. I discovered that many repositories with these tags were either overloaded with PRs or had issues that were not truly beginner-friendly(at least in my-terms). Still, with persistence, I found several exciting projects that offered a chance to make a meaningful impact.
Tackling Four Unique Pull Requests
Throughout Hacktoberfest, I explored and worked on many different projects, each with its own ecosystem and contribution challenges. Below is a rundown of the four PRs entailed and what I gained from them -
TLDR Pages (Adding a Page) - My journey began with a fairly straightforward PR - adding a new page to TLDR Pages, a collaborative project for simplified, community-driven command documentation. Working on this was a smooth entry point, letting me focus on writing concise, readable documentation while following the project’s strict contribution standards. It was not overly technical, but it deepened my understanding of guideline’s importance in open-source contributions and helped me become familiar with the PR process on GitHub.
Deno Project (Primordials Replacement) - Next, I contributed to the Deno repository which is a JavaScript runtime focused on security and modern practices, and my issue dealt with its Node.js compatibility layer. My task was to replace some global functions with “primordials” to prevent potential prototype pollution. This PR had me researching the project’s coding standards, understanding JavaScript runtime internals, and navigating a large codebase written in a combination of JavaScript, TypeScript and Rust. Setting up the environment was challenging and required understanding Deno's unique structure. This PR pushed my comfort zone and I got insight into how JavaScript runtimes are built.
Faker C++ (Adding Locale to a Module) - The third project, Faker C++, was inspired by the popular Faker.js library, which generates realistic mock data for testing. My task was to add locale support to a module, which allowed me to work on a C++ codebase - something I had not done in a while. Setting up the environment in C++ was a different kind of challenge, involving tools like Blaze, CMake, Ninja, and clang-format.
Valid-GTIN (Optimizing GitHub Actions Workflow) - My fourth and final PR involved CI/CD with GitHub Actions, a domain I’ve been eager to contribute in. The issue here was to update the workflow file to optimize when tests should run, based on changes to specific files. This required me to research GitHub Actions’ path filtering and to figure out the best way to apply it without disrupting the main workflow. It was a lightweight project, but it gave me a chance to work with CI/CD and understand the considerations that go into managing resources in active projects.
The Challenges and Joys of Open Source
While I ultimately completed four PRs, the journey involved exploring nearly a dozen other issues that I couldn’t resolve for various reasons. Some were overly complex, and others introduced dependencies or setup requirements that I couldn’t resolve within my timeframe. Each issue presented unique challenges: some were in languages or frameworks I hadn’t worked with, while others required new configurations I’d never set up before. I deliberately avoided asking to be assigned issues immediately, instead working through them locally to avoid blocking others until I was confident I could handle them.
This approach was sometimes frustrating but taught me a lot. I learned to persevere through setups, to read documentation thoroughly, and to test things locally until I felt prepared to push changes. By the end of Hacktoberfest, I have probably reviewed over a hundred repositories, many of which are incredibly interesting even if they didn’t have open issues suitable for me. These explorations have expanded my understanding of various programming languages and domains, and I now have a list of projects I plan to revisit and contribute to in the future.
Lessons Learned and Future Plans
Reflecting on Hacktoberfest, I’m grateful for the growth I’ve experienced both technically and personally. Here are a few lessons I’m taking with me:
- The Value of Good Documentation: Projects with well-documented contribution guidelines and helpful communities stood out. Clear documentation not only makes contributions smoother but encourages newcomers to participate.
- Perseverance Pays Off: Finding the right issues and setting up environments was often time-consuming. But sticking with it led to valuable learning experiences and the satisfaction of seeing a PR merged.
- Expanding My Toolset: I gained exposure to C++ setups, JavaScript runtimes, CI/CD workflows, and more. Hacktoberfest pushed me out of my comfort zone to use new tools and frameworks.
- The Open-Source Community is Inspiring: Being a part of the open-source community and contributing to shared projects was deeply fulfilling. Knowing that my code might help someone else or improve a project definitely felt nice.
Although Hacktoberfest is over, my open-source journey is only beginning. I plan to keep contributing to projects I found interesting and giving back to a community that has given so much to developers.
Top comments (0)