Contributing to open source might seem daunting, but you can start your tech journey during Hacktoberfest 2022.
October is here, and for all the open-source enthusiasts, it opens another Hacktoberfest chapter.
The idea of Hacktoberfest is to encourage everyone, especially beginners, to contribute to projects that are dear to their hearts. Initially, it was mostly associated with developers, but in principle, all contributors – designers, technical writers, analysts, etc. – are welcome.
They are welcome to contribute to improving tests, documentation, configuration, or anything else that can be sent as a pull request - everything counts. This is how the members of the open source community encourage new tech enthusiasts and help them make their first step into tech.
What is Hacktoberfest?
Hacktoberfest is an annual online event celebrating the open source movement. This year, registration starts on September 26. To participate, you need to send at least four open-sourced pull requests on GitHub or Gitlab between October 1st and October 31st, and those pull requests need to be accepted by the repository owners.
The first 40,000 participants who complete Hacktoberfest can receive one of two prizes: a tree planted in their name or the Hacktoberfest 2022 t-shirt.
Why you should participate in Hacktoberfest open-source projects
Of course, Hacktoberfest is not about receiving a free t-shirt. The main idea is to help new contributors get more involved and make the open-source movement a stronger force. It helps to discover exciting projects in the tech space, learn new things, and also connect to other open source enthusiasts worldwide.
Even though it might sound as if Hacktoberfest only caters to developers, everyone can take part in it! Designers, writers, and tech advocates can contribute too. This year, Hacktoberfest organizers offer some tips on how low-code or non-code contributors can participate in the event.
At FerretDB, we love the idea of celebrating open source. As more and more companies switch to proprietary licenses disguised as open-source, celebrating open-source presents another opportunity to demonstrate its immense benefits. Read more on the dangers that these licenses pose to open-source.
Besides being an opportunity to take baby steps into the tech world, contributors can hone their skills as they contribute to the interesting open-source projects that appeal to them.
7 steps to start contributing to open source
1. Set up your GitHub account (if you don't already have one)
Quite a lot of open-source projects (including FerretDB) are hosted on GitHub. So, a GitHub account might be helpful or even crucial if you want to start contributing to open-source. GitHub has detailed instructions for account creation.
An important note here is that a free GitHub account will be more than enough. You don’t need any paid features to become an open-source contributor.
Most likely, you might need an IDE or a code editor. At FerretDB, different engineers have their own preferences, but for your first steps in the open-source world, Visual Studio Code is a good place to start. It supports all the popular formats and programming languages; it has handy integration with GitHub and other valuable tools, and, of course, it’s free.
In addition, Hacktoberfest's website has a nice list of resources for beginners. Check them out for further information.
2. Find the right project for Hacktoberfest open-source contributions
Even though plenty of communities are open and friendly, not all the projects and issues would be suitable for first-time contributors. It’s essential to find some “low-hanging fruit” that will give you inspiration for future contributions.
On GitHub, it might make sense to look for “good-first-issue” labels. Usually, issues that are marked with such a label don’t require special knowledge about the project.
There is one more tradition here, in October, some open source projects mark their issues with the “hacktoberfest” label, and such issues are often suitable for first-time contributors.
3. Select a good first issue and read the contribution guidelines
You found some projects with good first issues. What’s next? It is essential to check that you understand the issue and how to implement it.
Before jumping into implementation, it might make sense to take a look at the README document and CONTRIBUTING guidelines of the repository. Quite often, the projects follow some good practices that help contributors, and such practices are described in these documents.
Also, many projects offer chats where contributors can ask any questions.
At FerretDB, we use Slack for our contributors and community, and we also offer weekly Open Office Hours calls. Don’t hesitate to join us! You can find details in our README.
By the way, the contributing guidelines or documentation might be the most suitable for first-time contributors! Do you see a typo, a mistake, or something that doesn't look clear? Such contributions could be as tiny as a one-line change. Help the project owners with such improvements, and they will be grateful!
4. Fork and clone an open-source repository
Most of the time, in order to make a contribution, you need to fork a repository. Then you can clone your fork on your local environment, implement the changes, and test all the necessary things locally.
We recommend that FerretDB contributors get familiar with the “Setting up the environment” documentation.
5. Ask questions or create an issue
If something is unclear about the issue you want to work on, there are several options available to ask questions. We have already mentioned chats and calls, but GitHub itself also offers some communication tools. First of all, there is a possibility to leave comments on issues. Quite often, contributors discuss potential implementations or unclear aspects there.
Also, on GitHub, there is a relatively new feature called Discussions where anyone can ask questions about the project.
If you notice a bug or have a feature suggestion, the best course of action is to create a new issue. By the way, reporting issues is also a valuable contribution to open-source projects!
6. Push your changes to a remote repository
When your changes are implemented and tested, you are ready to push them to your remote repository.
You can do it through your editor or with any git client. For example, GitHub offers documentation on how to do it with GitHub Desktop. And, of course, after the changes are committed, they also need to be pushed.
At FerretDB, we prefer to commit and push as often as possible. Usually, we don’t wait for a feature to be fully implemented, a tiny valuable piece of code can be pushed to a remote branch, so the changes won’t be lost even if the local environment gets broken.
7. Make your first Pull Request
So, your changes are ready and pushed to your fork? It’s time to create your first pull request! As usual, GitHub has a detailed guide for it. Various projects might follow some practices to help contributors have their changes accepted as quickly as possible.
At FerretDB, we use various GitHub actions to check if the code satisfies the standards and if tests pass. We described the full process in our contributing guide. The reviewers of your code might have some additional questions or suggestions. This is totally normal for most of the pull requests.
As soon as the questions are clarified, and improvements (if any) are made, the code owners will merge your pull request, and with that, your change is considered accepted. Congratulations!
Start your open-source contribution with FerretDB
At FerretDB, we welcome all the open source contributors! From feature implementations to fixing typos in our documentation - we value everything!
Whether it’s for Hacktoberfest or otherwise, you are welcome to take a look at FerretDB projects and find something that interests you. To simplify the process, we prepared the contributing guidelines to help you find something to work on, set up the development environment, prepare a pull request and pass code review.
Are you looking forward to submitting your first pull request to FerretDB? Start contributing to FerretDB today.