My First Hacktoberfest
Published: 2021-11-01 05:57:18

In this story, I would like to share my experience of winning my first hacktoberfest.
##What is Hacktoberfest
First of all, [Hacktoberfest](https://hacktoberfest.digitalocean.com/) is an annual event hosted by [Digital Ocean](https://www.digitalocean.com/) to encourage software engineers around the world to contribute to open source projects.
As we all know, open source projects are pivotal in software engineering. So, by participating on this event, we are **practicing** to give something back to this community.
Hacktoberfest is usually held on October (a month-long), and we can join this event as a maintainer or a participant. After completing the event, we can receive some prizes.

## My First Hacktoberfest
My first hacktoberfest is hacktoberfest of 2021 (I'm mentioning this because there might be some changes for another year). I'm joining hacktoberfest as a participant, and the goal is to **submit 4 pull requests/merge requests** (which means we can use github or gitlab) to repositories labeled as "hacktoberfest", and those pull requests **must be merged** into the repos by the maintainer.
The prize for completing hacktoberfest is a t-shirt **or** a plant with your name in it, and also a badge for your dev.to account.

As a recap, the requirements of hacktoberfest (as a participant) is as follows:
1. Search for repositories that labeled as "hacktoberfest".
2. Contribute to the repo, and then make pull requests.
3. The pull requests should be merged into the repository.
4. Make at least 4 successfully merged pull requests.

In the next section, I'm going to share my tips as a beginner of how I win hacktoberfest of 2021.

##Searching for Repositories to Contribute to
In my opinion, this step is the most important part if you want to win hacktoberfest. As we have discussed, to win hacktoberfest, we must submit 4 pull requests and that pull requests should be merged. So that means, you have to search for repositories that you can contribute to, as a beginner.
So here are some tips from me:
1. Search repositories with keyword "hacktoberfest", filter by your preferred programming language, and sort by "Recently updated".
Here is the example:
![Searching Repositories](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1pg6zof8ue9o8bgyybvc.png)
We use "hacktoberfest" keyword to filter repos that is participating in hacktoberfest, and we also filter language to make sure we familiar with the language so that we can contribute to it, and the last thing is sort by recently updated, this is **so important** because there are tons of hacktoberfest repos which are not maintained anymore, and by using this sort, we make sure to choose active repos.
2. Search for eligible, yet beginner-friendly repos.
To do this, we have to look for repositories one by one, and check some criteria, these are my criteria about eligible, beginner-friendly repos:

- Understand what the repo is all about. We will contribute to the repo, so we have to understand what the repo is all about.
- Repository have CONTRIBUTING.md or CODE_OF_CONDCUCT.md or something similar. By having this, it means the repo has guideline of contributing, and this is to make sure the repo we contribute to is more eligible.
- Repository has CI/CD workflow. This means, the repo has code quality checks or something like that, to make sure the repo even more eligible.
For github, you can see if the repo has CI/CD workflow if it has .github/workflows/[file].yaml file. 
- Repository have reasonable amount of issues or pull requests, if repository has **too much issues or opened pull requests**, it can be a bad sign that the maintainer is no longer maintaining the repo, or your pull requests cannot be merged quickly, or the repo is a big library that is widely-used, therefore it's not that beginner-friendly to contribute to. But if the repo has **too few pull requests (opened and closed)**, it can be a bad sign too since no one is contributing to the repo. Make sense?
Now that I have mentioned to search for eligible, yet beginner-friendly repos, you might be wondering, why the repo we're going to contribute to has to be eligible? Well because, digital ocean has system to check if a repo is accepting pull requests carelessly, and if it is, the repo will be marked as "excluded project", and your pull requests will not be counted as completed, even if your pull requests is already merged. You don't want that, right? Well for me personally, I have already made 3 pull requests that have been accepted in one repo, but the repo is marked as excluded project, and that 3 accepted is no longer counted.
![Excluded Project](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6yjjmn1u3grg7pi2z4yv.png)
- Search for good-first-issue label or something similar, this is a sign that the issue is for beginners, even if the repository is already widely-used. And in my opinion, this label is the perfect place to make a good contribution to open source.

##Contribute Properly 
To contribute to open source projects, here are some step:
1. Fork repository to your git account.
2. Clone that forked repository to your local repository.
3. **Read contributing guideline**.
4. Create your branch, make changes, and commit on that branch.
5. Push your changes to your github/gitlab online repository.
6. Open your pull request.

As I have mentioned earlier, hacktoberfest is an event for **contributing to open source projects, not to ruin it**. So, please contribute properly, follow contributing guideline, write useful code, **don't spam** repos with meaningless pull requests. The point is, be responsible.

##Don't Get Too Focus on 4 Pull Requests, and 1 Perfect Repository.
As we have learned earlier, pull requests can be rejected, or repo can be excluded, so prepare more than 4 pull requests for backup, and don't get too focused on 1 repository.

##Conclusion
That's it, I have shared my tips to win hacktoberfest (mainly as a participant). And let me mention this 1 more time, **contribute properly, don't ruin open source projects**. Thank you for reading, and this is my [github account](https://github.com/wahyaumau) (in case I'm participating as a maintainer next time XD). Happy hacking, Good luck on your first hacktoberfest!