My first time participating in Hacktoberfest was quite fun, finding projects that I liked was quite easy, but finding issues that I could handle given the time I had was a challenge. A lot of my time was spent hopping from repo to repo looking for issues that I could tackle. I looked at quite a lot of c++ repositories but the issues of the repos I looked at required quite in-depth knowledge of the project and I figured I should perhaps look at higher level languages or smaller projects in general where smaller issues may be more prevalent.
I first started with Runelite which was a custom client for the game RuneScape written in Java. Java is an easy language to work with and Runelite is very well written making it easy to start working on. The Runelite community also has plenty of resources on their discord and I have a couple of friends who made their own plugins so I has some people to lean on to get started but it wasn’t that bad and a lot of the work I was able to do myself. My first pull request was an addition to add a colored overlay to in-game items to help people with impaired vision.
My next week I decided to work on Runelite again since I really love the work they have done and RuneScape as well, this time however I worked on a bug fix. Since I had a working build and some experience from the week before this fix felt like a breeze and I was enjoying myself more than kicking myself for my code not working. To be fair, this bug fix did not require me to dive into their API to add a feature but was just correcting the logic of the calculations they used from the game’s leveling system.
After two contributions to the same project I had to switch to another and was thrown back into uncharted territory. I struggled to find a fix suitable for me but was intrigued with how massive projects handle contributions and so I came across Mattermost and saw the vast amount of issues that were geared towards first time contributors. I figured it would be a nice place to try and contribute to and a bonus was that they guided you on what work should be done. They had a CLA which needed to be signed and reviewers to check your code. Sure, it was less work than my two Runelite contributions, but it was way more nerve wracking… I might stick to smaller projects I use personally.
My final contribution was to Rustybeer, a CLI tool for all things related to beer brewing. The tool is written in Rust, which is slowly becoming one of my favorite languages, it might have some weird syntax with their unwrapping operators and whatnot but it’s not impossible to figure out. Rustybeer had a couple of nice issues that anyone could pick up and I decided to add a feature for calculating yeast viability. This project forced me to work with rust properly for the first time and I picked up on some new things which is always great. I learned about the rust linting, testing and building process which will come in handy later on.
$ rustybeer yeast-viability --help rustybeer-yeast-viability 0.1.0 Philip Golovin Estimates yeast viability based off production date USAGE: rustybeer.exe yeast-viability [OPTIONS] --pd <pd> FLAGS: -h, --help Prints help information -V, --version Prints version information OPTIONS: -c, --cc <cc> Cell count -f, --f <f> Date format (default: "%d/%m/%Y") -p, --pd <pd> Production date
My contributions were all fairly different with different levels of “formality” (I guess you could say that) between projects? I’m not sure what my “progress” looked like over the duration of October but if there’s one thing that haunted me, its to MAKE SURE I LINT before pushing and to SQUASH MY COMMITS. I will never forget to do that again cause man I feel like no one would want to merge commits from someone who doesn’t do those two things. And my proudest contributions for Hacktoberfest were definitely the two additions I made to Runelite despite them not being merged, I just really like the project and it was a joy being able to work with it.