Hello Mishamigos, in a week we will be the last day of October. The day where ghouls and demons will sprout and throw one more spell at us humble coding people. The day where until the last second you will look at your inbox petrified waiting for the next jump scare. As you guessed, in case you were oblivious to the post title, tomorrow is the first day of the last week of Hacktoberfest, 2018 edition.
Taking part in Hacktoberfest
What is Hacktoberfest? The principle is simple. You have, well had, 31 days to submit five pull requests in order to gain a t-shirt and bragging rights. Technically, you need to be among the first 50,000 first contributors to reach five pull request to get the t-shirt. But still, this is your chance to give back to the community. A community that gave you GNU/Unix operating systems and JQuery among other tools so that you don’t reinvent the wheel.
Despite my love for t-shirts, especially the free ones, I never took part in Hacktoberfest. I heard about it for the first time a couple years. However, after a few hours browsing for an interesting repository to contribute to I dropped it. Back in 2016, maybe was it 2015, interesting repositories did not seem accessible enough. How would you know where to go give your time? How would you find an accessible project to your skill level and abilities?
Hacktoberfest, my year one, JC’s year 2018
Well well well, when I joined the challenge earlier this month I noticed a
hacktoberfest label popping up on Github. That same label gives visibility to some inspiration to join in from the Hacktoberfest 2018 website. Maybe it was always a thing but I only spotted it this year. This made me think I could give a couple hours of my time to support open-source development and get a t-shirt. The developer equivalent of saving the world and kissing the girl while maintaining a social life.
My contribution was pretty straightforward. By October 5th I completed the Hacktoberfest challenge by opening my five pull requests.
Two against some repository that has for goal to be a shitty version of Linq-to-SQL. Then three
Enough with the introduction let’s get a bit more Buzzfeed-like with a top five. Originally that’s all I wanted this post to be then chose to give you some more context to make it (hopefully) more enjoyable. The following will give you the top kind of repositories you may find during Hacktoberfest. Disclaimer, top here does not necessarily mean great.
5 kind of repos I spotted during Hacktoberfest 2018
#5: Cheaters, dishonourable mention
Hacktoberfest has been created around values there to foster meaningful contributions to open-source software. There are a bunch of quality standards that discouraged in order to prevent pull requests that are “[…] clearly an attempt to simply +1 your PR count for October.”
However, there is a loophole that can be used according to the organisers. A loophole you definitely should not use but is here for informational purposes.
As long as the project is public and GitHub-hosted, your PRs will count towards your participation
This brings me to this category, cheat repositories. The most dishonourable mention in here. I spied with my little eye people creating dummy public projects. Sometimes empty, sometimes with a text file. Then opening equally shallow pull requests against their own repository where they are the sole contributor. This provides them with their +1 PR count for the month.
Hopefully, someday a technical filter is added to prevent these from being counted. Could even be a new repository idea to be picked up by DigitalOcean since it doesn’t look like they have their Hacktoberfest website source on Github.
#4: PR practice repository/Implement algorithm X
When you open Github to look for issues with the
hacktoberfest tag these are the ones you see everywhere. The complexity of the “task” does vary from implementing fibonacci using python to writing your name in a README. These have the merit of not cluttering proper repositories with people willing to open a pull request about anything without bringing any value.
I’m not fundamentally against these repositories as they exist even outside of Hacktoberfest. If anything they allow people to familiarise themselves with the mechanism around opening pull requests. In the case of existing implementations, there might be a challenge seen in racing against other developers to squeeze your implementation first. Either way, people contributing in these kinds of repositories may contribute to repositories that will have actual production code.
It is still preferable to open a PR against one of these repositories than you know, against your own empty repository like some people.
#3: That guy that actually smoked weed every day
We all have been in that place at one point or another. Discussing with someone whether it is your boss, a client or Cynthia trying to make you quit your job to go on a crazy venture. The presentation layer may change but the gist is the same, they want to build an insanely complex project for cheap. It might sound like “I want to create the next Facebook”. Obviously, it will be a mix between Facebook, Spotify, World of Warcraft and real life.
Father, forgive them, for they do not know what they are doing.
It goes without saying you will be expected to implement this behemoth for free. Sorry, for exposure and in this case, a free t-shirt. Somebody betrayed the sacred developer code by letting them know about Github, about Hacktoberfest 2018. I guess they’re going straight to the bad place.
#2: Write tests for my super-mega-death-monolith
Still better than the weed guys, these repositories at least have some code in them.
If software with testing in mind, then a change of design will most likely be required. In order to change the design while maintaining the original behaviour, tests are needed. However, here, you need to add tests so that you can clean up in order to add tests. Even if you are the author of the software, there is no way you can guaranty the modified software will behave the same as before your changes.
Of course there are tools that would allow you to write some tests. Per example, Postman allows you to write a collection of requests with tests on the responses for a web API. I wrote as post around that about a year and half ago. Once you have these tests in, you can refactor your code to add unit tests in. It is way too time consuming a task to be a reasonable ask. You may find a hero developer jumping to deal with that. That definitely won’t be me.
#1: Win-Win repositories
Hard to find in this 2018 edition of Hacktoberfest, just like every other year. A repository where you can actually deliver value and may even be a user of. When you find one, you stick by it. Believe in that!
You don’t necessarily need know how to write code in order to contribute. Sometimes, adding a translation file for a language not supported yet can be a big help. Other times, you will help cleaning up and updating the documentation of a project. Last but not least you will bring improvements or fix issues reported by users and owners alike.
In those cases, contributing can beneficial for all parties as it opens the door to learning about new patterns, standards and sometimes continuous integration. More often than not, the repository owners will provide you with honest feedback to help you progress and deliver better code. Don’t be mistaken though, sometimes you will be the one bringing higher quality to a project. In both cases, they will help you help them improve their work.
These repositories tend to be well documented and rely on a continuous build system triggering automated tests when you open a PR. Sometimes you will even have a linter to validate your coding style matches the project one. These tools allow speeding up the review progress and focusing on the logic of what you want to submit.
Go spread the gospel of open-source!
Even though Hacktoberfest is coming to an end, there is no time to give back to your community. Take a look at a library or IDE you use on the regular. Check if it has a repository you can contribute to and go through issues. You may find something you can help with and will feel better about yourself after contributing. On top of a feeling of accomplishment you may even learn a thing or two. On these words I will close this post. I hope you enjoy the last few days of this Hacktoberfest 2018. Happy coding!