So, let's start from the beginning, what's Hacktoberfest? Hacktoberfest is a way to celebrate open source during an entire month by contributing. Open source projects tag issues on their Github boards with the tag Hacktoberfest which are issues low on complexity and a really good way to start contributing to any open source project.
It's all about open source
At Elastic, we embrace open source software so, for us, it's a really exciting event and month to get closer relationships with open source contributors from the community.
The open source projects at Elastic gained a lot of members in Hacktoberfest of last year and the feedback and the help received from those members has push forward our widely used open source projects. We had communication with people who were already active contributors as well as people who were doing their first pull request (PR) in an open source project.
It's all about lowering the barrier to OSS
Contributing to OSS can seem daunting at first, and that’s completely understandable. But it is not daunting at all... it just looks like it is. Nobody is born knowing how to ride a bike, as well as nobody is born knowing how to open a PR. It takes practice to know what information to add and which tests to write.
But one thing to keep in mind is this: maintainers know that there's a lot of people out there that have never contributed and want some help with their first issues, so here's the guideline about Hacktoberfest:
Making your first OSS contribution:
To make your first contribution to a OSS project, we suggest the following steps:
1. Choose a project
Do you like to write Java and or Ruby? Peek at the widely used and incredibly popular Logstash project: https://github.com/elastic/logstash.
What about Go? The entire Beats project is waiting you: https://github.com/elastic/beats. In Beats, you can contribute to several packages: Filebeat to collect logs, Winlogbeat to get Windows event logs, Metricbeat for system monitoring, or the networking and security related projects of Packetbeat and Auditbeat, respectively. Everything is written in Go, and some projects like Filebeat have configuration based modules where you don't need to know Go even!
Do you like Python more? If so, try Rally (https://github.com/elastic/rally) to contribute to this terrific tool for Elasticsearch benchmarking. Or try Curator (https://github.com/elastic/curator),an incredibly useful and popular tool for index management.
2. Read the contribution guidelines
Each project has its own contribution guidelines intended to help setting up the development environment as well as give some clues about the contribution process. For example, here are the Beats contribution guidelines.
3. Search for "Hacktoberfest" tag in the Issues board
You'll find several issues, read the contents of any of them and try to find one that seems easy for you. Most of the issues tagged in Hacktoberfest will be a good first-time issue, or simply tasks that don't need a lot of context to understand and that doesn't involve much complexity.
Choose any issue and start peeking at the code. You don't really need to warn that you are starting with that issue if you are not sure if you'll finish it so don't feel pressed. It's not as common as you might think that two persons are tackling the same issue at the same time.
Asking questions is way more important than it might seem. Contributing is not usually as simple as reading the issue description and opening a PR.
You are probably not the only one that has your specific question, so by asking, you are already contributing by giving more context to an issue. So don't worry about asking, we'll answer you or redirect you to any issue that could solve your question.
Even if you don’t manage the PR, the question will remain there in case someone in the future wants to try so.
Don't be shy to ask.
4. Make some changes and open your first PR
For big PRs, make some small changes and open the PR, don't wait until you have a lot of code developed. When you submit, you’ll receive some guidance from the maintainer, so better to only have a few changes instead of a lot.
That is why it is important to ask and to have an open communication channel with the maintainers of each project.
5. Maintain focus.
Contributing to OSS is not a difficult task, nor does it need to be a time consuming task, but it does take some time to merge even the smallest change. Don't expect to do it all in a day. It usually takes days even for the smallest changes.
Remember that people are in different time zones and that you won't receive feedback immediately, so try to stay focused on one task during a week by spending some time every day on it.
Contributing to OSS is a marathon, not a sprint. Just get used to asking a question, waiting some time until getting a response, updating your code, pushing the new code, and waiting a few hours until more feedback is received. Slow and steady.
Congratulations: You have become an open source software contributor.
That's all. Personally, I think that the most important point is to "maintain focus" because it's easy (and normal) to feel enthusiastic about contributing, but it's also very easy (and normal) to lose focus after the first evening. Just don't forget that it is not possible to do everything in a single evening. Feedback is necessary (and desirable) and very easy way to learn new things.
And don't forget that Hacktoberfest lasts for the entire month of October, so you have plenty of opportunities to contribute! Enjoy!