My Hacktoberfest'23 experience: Guide, tips and tricks!
Tags: hack23contributor, beginners, opensource, hacktoberfest
Published: 2023-10-29 10:27:45

<!-- ✨This template is only meant to get your ideas going, so please feel free to write your own title, structure, and words! ✨ -->

Hey folks! I'm **Hisham**, a web dev and a CS undergrad. 

{% embed https://github.com/sikehish %}

In this article, I discuss into Hacktoberfest, and my experience of contributing to open source repositories. 

<br>
<hr />

## What is Hacktoberfest and How does it help?

<!-- Share a bit about yourself as a contributor. Is this your first Hacktoberfest, or have you contributed to others? Feel free to embed your GitHub account by using {% embed LINK %} -->

I'd heard a lot about Hacktoberfest but it was only recently that I could make some meaningful contributions, partly because I was busy maintaining a repository under Hacktoberfest :p. I have always been fascinated by how people collaborate and contribute to open source repositories, which in a lot of cases are game changers in their respective domains.

Hacktoberfest is an annual worldwide event held during the month of October. The event encourages open source developers to contribute to repositories through pull requests (PR). It attracts developers and all open source enthusiasts from all over the globe, of all levels. You could be a beginner at programming, and you still manage to contribute, as there are a lot of projects having tons of issues at various levels and of various kinds. 

For example, Lets take this issue: [Good first issue](https://github.com/gdsc-jssstu/campUS-Web/issues/22.) This issue is an example of a beginner level issue. You would find such issues on a lot of repositories. Also, what I mean by beginner level issues(also referred to as _"good first issues"_) is that these issues are relatively easy to solve, and in no way are these issues less meaningful. Solving these issues definitely make an impact on the project and its quality.

Hacktoberfest gave me a platform to contribute to repositories that I like, and it helps open source enthusiasts and incentivizes them to contribute by giving out virtual badges, along with a cool reward kit!

<br>
<hr />

## Getting started

You can register for Hacktoberfest 2023 here: [Hacktoberfest registration](https://hacktoberfest.com/)

Here are a list of repositories participating Hacktoberfest: [Hacktoberfest repos](https://github.com/topics/hacktoberfest)

Also, you can read the rules here: [Hacktoberfest rules](https://hacktoberfest.com/participation/)

Once you're done registering, you can search for repositories which have a label of "hacktoberfest", and you can search for issues on the repo.

<br>
<hr />

## Make your first open source contribution

Let us start our discussion with issues.

![Issues](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o3zhjj85meglkg8wg8bt.png)

In the above image, which is basically the [repo that I'm maintaining](https://github.com/gdsc-jssstu/campUS-Web/issues),you can see the issues that are open, i.e, that are yet to be solved.
These are the issues that are yet to be addressed. 

Also, before you even consider contributing, please look into **CONTRIBUTING.md** or their contribution related rules. In a lot of repositories, you cannot create a pull request(PR) until you're **assigned** a particular issue.

> But Hisham, what does being "assigned" mean how do we get assigned?

Glad you asked!

So, for all the first time contributors and for the uninitiated, the maintainers can assign you to solve an issue, and in order to make yourself eligible to be made an assignee, you will have to politely ask the maintainers if they could assign the issue to you in the comments section of the issue. If the issue is already assigned to someone, then you can try your luck by approaching the maintainer if the assignee hasn't solved the issue and is inactive.

However, in a lot of repos, you are allowed to raise a Pull request(PR) addressing a issue without being assigned. In such a scenario, you can start working on the problem, without asking to be assigned.

> But Hisham, what even is a PR?

Aha, I knew you'd ask this!

So, a PR, short for pull request, lets you tell others about changes you've pushed to a branch in a repository on GitHub. You create a pull request to propose and collaborate on changes to a repository. 

You can read more about it [here](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)

Let's take an example.

Consider the [campUS-Web repo](https://github.com/gdsc-jssstu/campUS-Web/).
Now, I want to address an open issue: [CreateRequest.jsx: Create a page to create a request #15 ](https://github.com/gdsc-jssstu/campUS-Web/issues/15), which at the time of writing this blog, is not assigned to anyone. How do I solve this issue?

I first fork the repository, which essentially creates a copy of the repository on my github account, and then I clone the forked repository, which creates a local copy of the forked repository on my computer. I can then inspect the code and see if I can come up with a solution. Assuming that I can implement the solution, I will commit the changes to my local repo and push it to my repo.

If you're not familiar with the terms used above, this could be a great starting point: [Git and Github basics](https://www.freecodecamp.org/news/introduction-to-git-and-github/#how-to-start-using-git-and-github)

Once, Ive pushed the changes to my repo, I can create a PR on the original repo's page.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pkitust5q6o3ctupecfo.png)

The above image is a screenshot of the PRs page of campUS-Web. You can click on the **_New Pull Request_** button, and then choose the branch that you want to compare and create PR for the changes you've made in that branch of your forked repo.

You can also find a **Compare and Pull request** banner on your forked repo's page, if you're on the branch where you had made the commits. You can create a PR from here as well.

Once you've followed the guidelines of creating a PR, which would vary from repo to repo, and have come up with a PR elaborating on your solution, you can create the PR, and voila! You've made your first PR! 

The maintainers will review it and request for changes if needed. If a PR is not aligned with the project's goals, coding standards, or guidelines, maintainers may choose to close or discard it. If the PR meets the project's guidelines and standards and the code is considered valuable, maintainers can choose to review the changes and merge them into the main codebase. 

Making 4 PRs, that get merged, will result in you unlocking all 4 badges and an exciting reward kit, provided your PRs aren't spammy and are valid, as per Hacktoberfest guidelines!

<br>
<hr />

## My Experience
My first contribution was after 20th October. Needless to say, I was late to the party! A lot of issues that I wanted to work on were assigned, but I remained persistent and discovered some great repositories, which had a vision that aligned with mine. Most of my PRs were related to React and tailwind. I would work on issues that were assigned to me, and followed the guidelines strictly. I received my 4th badge on 28th October and it was a pleasant sight!

<br>
<hr />

## My takeaways
Thanks to Hacktoberfest, It made me more comfortable with git and github and collaborating with developers helped me work on my soft skills as well. All in all, it was a fantastic experience and it made me more confident as a developer.

<br>
<hr />

## Get in touch!
If you liked my blog, then please ❤️ it :) and put down your thoughts in the comments section below. Also, share it with fellow open source enthusiasts who are looking to contribute. You can also follow me on [_github_](https://github.com/sikehish) and get in touch via [_Linkedin_](https://www.linkedin.com/in/hisham-akmal-ba7455226/).

Until next time, happy hacking :p