At Black Pepper, we love open source software. And now that October has finally rolled around, it is officially the season of Pull Requests (not to forget seas of German beer and fields full of pumpkins).
Hacktoberfest has started.
For the uninitiated and unfamiliar, Hacktoberfest is an annual event designed to bring people of different backgrounds and experiences together in order to learn about and contribute to the open source software movement.
Over the course of the month, participants will get the chance to learn new technologies, interact with other keen hackers, contribute to public GitHub projects and even win free stickers and an event t-shirt.
What doesn’t sound great about that?!
Hacktoberfest’s official website states:
“To get a shirt, you must make five pull requests (PRs) between October 1–31 in any timezone. PRs can be to any public repo on GitHub, not just the ones highlighted. The PR must contain commits you made yourself.”
No extra hoops to jump through, just make sure you are registered and get going! 5 PRs earns you a very snazzy Hacktoberfest 2018 t-shirt (and maybe some new knowledge or bragging rights).
I say “no extra hoops to jump through” - we shouldn’t gloss over the fact that participants are expected to submit 5 pull requests. 5 PRs is no mean feat, especially for those just beginning to dip their toes into open source. In the rest of this post, I’ll lay out a handful of steps to help any open-source newbies become seasoned veterans in no time.
So, where to start?
Finding something to pick up can be really tricky, but the open source community is so welcoming, with several easy inroads. An important part of Hacktoberfest is accessibility, and the official Hacktoberfest website even highlights a handful of great places to get started:
The following resources share repositories that curate tasks for beginners:
And then, once you start feeling a bit more comfortable (and your t-shirt is in the bag), you can continue to find more open source projects that can use your help here:
- Pull Request Roulette
- 24 Pull Requests (Like Hacktoberfest, except turned up to 11 and in December)
This certainly drastically increases the opportunities for first-timers to get their hands dirty!
Despite this, it can still be really daunting to dive into someone else’s code for the first time (especially in a public place). I know that I certainly felt that way last Hacktoberfest - but my absolute top tip is to find a community that you have some vested interest in. This can completely vary depending on the contributor. It might be the group around a massive, vital tool you use daily at work, or the latest hacky project your friends are working on. For me, it’s been contributing to the “code practice and mentorship“ site exercism.io (somewhere I go to practise new languages).
Whatever you choose, by having an extra interest in the system you are helping develop, you’ll have a bigger sense of ownership and you’ll ensure your contribution and understanding of the project is first-class.
Once you’ve found an area you want to contribute to, it’s worth doing some extra observations. If you are unfamiliar with the repository, try and get to know the community around it and project too. Take some time to read through the latest few commits and open and closed pull requests. See what the current patterns of work are, and where your abilities and knowledge can slot in to help out.
It’s also worth remembering not to bite off more than you can chew. Take sensible size pieces of work; if you aren’t too confident, diving into a new public project for the first time pick up a small fix before growing your contributions. My first public contribution was a documentation fix! While it isn’t as fancy as some of the bigger pieces I saw contributed at the time, it is a great way of dipping your toes in the water before taking the plunge. As the months, weeks and even days go by, your experience will grow and you’ll be contributing larger and larger pieces of work.
Once you’ve found the (sensible-sized) issue you want to work on, my next piece of advice is knowing how to claim a piece of work (after all, you wouldn’t want someone else starting the same bit of functionality you are adding). There are a few ways to let other GitHub users know that a feature is being worked on or fixed up - you can’t go wrong with commenting on the relevant issue asking for it to be assigned to you (make sure someone else hasn’t claimed it first)! Work-in-progress PRs (an empty pull request with a descriptive title that your commits are pushed to) are also a nice way to indicate active development, and ask for help along the way. These are both lifesavers when it comes to really popular repositories on GitHub, as there is nothing worse than finding out someone beat you to the punch - especially after you’ve torn your hair out over that one last bug…
After you’ve claimed an issue, it is time to code! If you need to ask for help, that is absolutely fine - look online for any resources that might make contribution to that particular project easier, and ask the maintainers. Often, repositories have their own ways of working, so getting familiar by asking questions is a great way to start off. Most of the time, the maintainers will be glad someone wants to help out and will therefore, explain whatever you need!
Once you’ve written your code, committed it back and made a pull request make sure to keep an eye on it! Sometimes maintainers will give feedback to improve your code. When you’ve got the big green tick of approval, your code will be merged in and you’re 1/5th closer to your t-shirt.
Hopefully, you’ve found this quick overview useful (I know I wished for something like this when I first looked at Hacktoberfest)! If you still have any more questions, the official Hacktoberfest website is a great resource, and if you want to discuss anything further, or agree/disagree with anything I’ve said, please contact me - I’d love to hear from you!
Finally, if you manage to get a t-shirt from this Hacktoberfest make sure to share it online! Tag @blackpepperltd and show off your great work.