Contributing to open-source projects

Dimterion
5 min readOct 14, 2022

--

A function logging the steps to contribute to projects.

Working on solo-projects can be your preferred way of coding but sooner or later there comes the time to cooperate with other developers. And then you need to do some pull requests.

During the Hacktoberfest everyone gets more active with the contributions, and that seems to be a good way to start and try making a few of them. But frankly, any time for it is equally good. The main goal is to practice working on somebody else’s projects and to interact with the others.

Contribution steps

In simple steps (see the image at the top for a shorter version) what you need to do is:

  • Find a project repository of your liking and check the contribution instructions (usually in the Readme).
  • Check the issues section (or submit one yourself if it’s a new one) or see if you can contact someone about it (it’s usually written in the instructions as well). This could be a sort of an optional step sometimes, but a nice way to show your involvement.
  • Fork the repo, then clone it to your device.
  • Create and publish a new branch you’ll be working on (the detailed instructions on this are usually provided in the projects Readme).
  • Make the changes you want to add.
  • Commit and push as usual.
  • Submit your pull request (if something else is needed, it’ll be normally mentioned in the Readme of the project).

After the pull request

Once this is done, your pull request will be reviewed. If everything is fine, it’ll be approved, and the new branch will be merged into the main one. Then you can delete your branch (from the same page with the pull request for example) and (if you want) your forked repo as well. You can also be asked to make some changes/adjustments. Then you work on them normally, commit and push and ask for a review in the same pull request.

There is also this nice guide with the detailed steps for making the contributions (I found the section with the checklist particularly useful).

Overall, the main difference with the solo-projects is that your do a pull-request. I think the communication and reading the instructions are more important at the end, as the rest is pretty straightforward. You just need to make sure that your changes have some value for the project (it can be as simple as a typo correction, but it should provide some improvements regardless, otherwise it serves no purpose). And you have to check that you’re not making the changes somebody else is already working on (hence the importance of the issues checking and communication with the project maintainers).

Repos for the contributions

I did a bit of researching and found some good starting projects for the beginners. Here are a few of them:

Simple ones to start

  • First Contributions: this one could be the simplest first step. You just go through the Readme instructions, and the contribution itself is adding your name to the list. Once it’s done, you have your first contribution and a bit of practice.
  • Contribute To This Project: as I understand, it was inspired by the First Contributions but has a slightly more “contributory”-spirit as here you’ll add a card with a few useful resources about development and your contacts. Apart from that, it’s similar to the previous one. All the instructions are quite straightforward in the Readme.

Simple ones but with the actual contributing

  • Codecademy docs: it’s a collection of documentation with various information on coding and programming languages from Codecademy. They suggest a few ways to contribute in the instructions. Here you have to do some digging to find a new information to add there or to fix typos for example.
  • Contribute to freeCodeCamp: similar to the previous one but from freeCodeCamp this time. Some digging required but, again, this will look more like a real contribution. Detailed instructions are in the Readme.

Other

  • Up for grabs: a list of various projects good for first contributions. You can search and filter them to find something that suits you. It’ll require some time to look for what you like and then to check the particular instructions for contributing, but it also adds some flexibility. There’s also a way to contribute to the project itself and the instructions are here (though, it’ll be slightly more complicated for the beginners).
  • Searching by the repos topics (e.g. Good first issue): you can simply look for a topic of your liking on GitHub and then go through the results. Once again, additional time will be required, but you may get something you personally would like to take part in.

Hacktoberfest

Though it’s a one-month event, the projects taking part in it could be worth checking outside of Hacktoberfest as well.

  • There are plenty of suggestions on the event site, and you can simply go through the instructions.
  • I also found this nice Twitter-thread with several beginners-friendly suggestions.

The outcome

Obviously the main goal of contributing to projects is making them better by the community efforts. However, there’s more to it. It lets you step out of your personal repos, look through the others code, follow the guidelines, do the required changes and (what could be of the most value) communicate with other developers. You also start to understand how Git actually works (apart from just storing your code in your own repos) and what are all the branches for.

Contributions may also be something outside of the coding, like typos corrections or adding more information to the documentation (which is a good way to start). Overall, you can just begin with the easiest approach (for example, the first two repos I mentioned earlier), then find a few relatively small projects that might need help. Or you can do a bit of proof-reading to fix typos or add more information. After that you can move on to something bigger and see if you can contribute there as well.

That’s pretty much all what I had to say about my approach and understanding of the open-source contributions. If that was somewhat useful, I thank thee, kind person.

--

--

Dimterion

Hi. I’m Dmitrii. I'm interested in coding and new technologies and write about it every Friday.