Hacktoberfest is an event hosted by DigitalOcean that partners with many organizations. The goal is to give back and contribute to open-source projects. The organizers offer little incentives for a job well done, like a shirt and stickers.

Other organizations also get involved by offering their own rewards. You can find a community-sourced list of organizations offering incentives to contribute on Hacktoberfest Swag.

Only meaningful contributions will count toward the total 4 required. Take your time and show common courtesy with maintainers to ensure your pull requests get merged. More on this in Let's Avoid Turning it into Spamtoberfest below.

How you can Participate in Hacktoberfest

It's important to note that Hacktoberfest is for making any quality contribution to open-source projects. No one said it has to be code!

Everyone is capable of putting something forward:

  • Authors
  • Artists
  • Software Developers
  • Technical Writers
  • Translators

I'm not going to explicitly list repositories for contributing code because that's easy enough to find. All repositories listed on the following links have opted-in to Hacktoberfest.

  • GitLab (All repositories with the topic hacktoberfest on GitLab.)
  • GitHub (All repositories with the topic hacktoberfest on GitHub.)

Below are projects I recommend if you don't know how to code but still want to contribute to open-source (or Creative Commons) projects. It only includes projects that have manually opted-in to Hacktoberfest.

You shouldn't need to know any programming languages or HTML to contribute to them. You will be expected to know how to commit your work with Git, though, which we'll cover later.

Art

Projects that need art or animations:

Awesome Lists

Community-maintained lists of resources:

Books

Free eBooks maintained with a docs-as-code approach:

Configuration

Projects that revolve around configuration files. A contribution could just be appending an entry to a JSON file:

Documentation

Projects where you just have to type in plain English. Programming and technical knowledge will help, but there's no need for a specialized skill.

This only includes repositories that maintain documentation in a format that would be simple for most users, like Markdown.

Translations

Projects that need text translated from English to other languages.

Projects that use crowd-translations platforms like Weblate aren't included here, since the translator doesn't create the pull request. Unfortunately, Hacktoberfest only considers whoever opened the pull request, not the authors of the changes.

Please make sure that you only contribute human-reviewed translations – so either translated by a human, or machine-translated but verified by a human. Again, quality is important.

Miscellaneous

Projects that are one of a kind:

Let's Avoid Turning it into Spamtoberfest

Unfortunately, Hacktoberfest has developed a bit of a bad reputation among some projects due to spam. Sometimes contributors can be a bit eager to complete Hacktoberfest and miss the point. ^-^'

From 2020, if a user makes 2 pull requests that get assigned a label with the word spam or invalid in it, the contributor will be banned from Hacktoberfest indefinitely, including future events.

Mindustry handles this the best in my opinion with the Hacktoberfest Hall of Shame.

From 2021, Hacktoberfest is doing more to crack down on spam by excluding projects that encourage pull requests with no value.

image-8
The goal of giving back to open-source gets undermined if most contributions just go to "Complete Hacktoberfest!" repositories.

How to make valuable Hacktoberfest contributions

  • You have a month to make the 4 pull requests. Use it! They're more likely to get merged if you make fewer good quality pull requests.
  • Don't assume every pull request you make will be merged before Hacktoberfest is over. Try to do more than 4 if you can!

Practice common courtesy

Open-source maintainers have a life too. They don't always have time to review all pull requests, especially towards the end of Hacktoberfest.

Don't make maintainers feel bad, don't rush them, and don't demand attention. Just work on something else if they're busy.

How to Commit Work and Open a Pull Request

Now that you know how to be a helpful Hacktoberfest participant, and you've learned about some projects you'll be able to contribute too, the only thing left is to actually learn how to contribute.

GitHub and GitLab both provide ways to simplify contributing for small changes. We're not going to use them because it'll be simpler to show a single set of instructions that will work everywhere rather than rely on platform-specific features.

Before you continue, pick a repository that you want to contribute to. If you're multilingual then tldr-pages will be easiest, otherwise consider Free Programming Books.

I'm going to use Free Programming Books in my examples.

How to install Git

First, you should install Git which is a version control system. This is the tool that projects are using to manage changes.

Windows users can download it from the git-scm website. Linux users can install it using their preferred package manager.

Once you have Git installed, verify it's installed correctly with git --version.

Now configure your name and email address. The name doesn't matter, but you should specify the same email address you're using for Hacktoberfest.

git config --global user.name "Your Name"
git config --global user.email "your@email.org"

Note that the email address you specify here will be considered public information once your pull request has been merged. Anyone can view the details of a commit which includes the author details.

For example, my email address is in the output when I do git log on one of my commits.

commit 9647912b202a57474b4cd0ce796126c462c1ecc0 (HEAD -> added-react-book, develop/added-react-book)
Author: Seth Falco <seth@falco.fun>
Date:   Tue Oct 5 14:04:25 2021 +0200

    added a react book from digitalocean

If this is a problem, both GitHub and GitLab provide a feature to hide your email address by giving you a disposable one. You can enable the feature and use that email address in git config instead.

How to fork and clone a repository

Next, you'll want to fork the repository. You won't be allowed to push changes directly to the repository, so instead you'll make a fork which is a copy of the project that's under your control.

image-10
The "Fork" button is at the top-right of the repository page.

Next, clone the repository locally. This pulls a copy of everything in the repository to your machine so you can start working on it.

We'll do this in the terminal. If you're on Windows you can use Command Prompt or PowerShell.

Go to an appropriate location on your file system like your Downloads or Documents directory, then execute this following:

  • Clone the repository you want to work on.
  • Enter the directory in the terminal.
  • Link the repository with the fork on your account.
git clone https://github.com/EbookFoundation/free-programming-books.git
cd free-programming-books
git remote add develop https://github.com/{YOUR_USERNAME}/free-programming-books.md

How to work with the project

Now that you've cloned the repository locally, you can start working with it. With most repositories, it's best to open it up in a code editor like Visual Studio Code, but you can technically work with any text editor including Notepad.

Open the directory containing the repository you cloned in your editor. By default, it's named after the repository name, for example I now have a folder named free-programming-books.

Now you can make changes:

  • If you're not sure what to do, check if there's anything specific they need by looking under the "Issues" tab on the repository.
  • Alternatively, make whatever meaningful change you want.

With Free Programming Books, it's a repository for maintaining a list of free eBooks, so we can add more resources to it.

DigitalOcean has some great books in the community section of their website, so we can just add one or more of them to the repository. I've picked out How To Code in React.js for this example.

I can go to the respective section in the project which is the books/free-programming-books-langs.md file, and add the resource under the React section of the document.

The line I added looks like this:

* [How To Code in React.js](https://www.digitalocean.com/community/books/how-to-code-in-react-js-ebook) - Joe Morgan
* [Resource Title](URL to Resource) - Author Name

How to commit your work

Now that you've made a change, you'll want to actually commit and push your work back up.

You've only made the change locally so far – now we want to send a pull request. This basically means you'll send a request asking the maintainer of the repository to include your changes in their repository.

In your terminal, we'll execute the following which will:

  • Create a new branch.
  • Tell Git you want to stage all changes to be saved.
  • Commit the change with a message describing what you did.
  • Push the changes to your fork.
git checkout -b added-react-book
git add .
git commit -m "added a react book from digitalocean"
git push develop added-react-book

This should hopefully produce output like the following:

Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 1.07 KiB | 1.07 MiB/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
remote: 
remote: Create a pull request for 'added-react-book' on GitHub by visiting:
remote:      https://github.com/SethFalco/free-programming-books/pull/new/added-react-book
remote: 
To github.com:SethFalco/free-programming-books.git
 * [new branch]        added-react-book -> added-react-book
Clicking https://github.com/SethFalco/free-programming-books/pull/new/added-react-book will take you to the pull request page.

How to create a pull request

Both GitHub and GitLab will drop a link in the output of the command above that will take you to open a pull request.

If you click that link (you may need to hold CTRL), it'll take you to a page where you can provide more information and submit your pull request.

image-11

Just fill in the details requested and click "Create pull request". All that's left is to wait for the maintainers to review it.

Clean up the code

As soon as you've finished a pull request, you should leave your branch and go back to the primary branch of the repository.

Execute the following commands in your terminal:

  • Check if the primary branch is main or master.
  • Switch to the primary branch of the repository.
  • Update your local copy to be in sync with the repository.
git branch
git checkout main
git pull
Check the output of git branch to determine if you should use main or master.

Restart from the "How to work with the project" step to make more changes.

Conclusion

I hope this gives more information about Hacktoberfest, and that you feel more confident participating with the open-source community even if you don't write software.

Best of luck with your pull requests!