Navigate back to the homepage

How to find, and make your first contribution to an open source project.

Haja Andriamaro
October 14th, 2019 · 4 min read
unsplash-logoHero credit: Will Porada

The right time is now

I clearly remember that during the last Q&A session of covering Javascrip at Lamdda School, I asked only one question to my instructor @Gab:

When do you think we would be ready to start to contribute to an open source project?

And guess what was his answer? … One word:

Now !

Here is the thing. Most of us will start our learning journey with huge bagage that can stick around for(ever?) a long time. And that bagage is called imposter syndrom. It can be more or less heavy depending on your background and where you are in your journey, but it is definitly something that you want to get rid of as soon as possible.

So, even if his answer kept me skeptical at the time, I now know that his answer was what any great teacher knowing this fact, would have given us.

Yes, NOW is the time, because this imposter syndrome can persist and will keep preventing you to do what you are actually capable of doing. Which are: Solving problems, enhancing stuff, Asking questions and helps … !

If “when is now”, then where do I start?

OK, I hear you, that’s great but where/how do I start? I dont think there is only one way of getting started. But to me, the base line is just to stop overthinking it. There are several possible paths that you can explore and/or combine to get started. Here I am going to share the process that lead me to my first contribution to an external project.

Step one: Start building

No, you dont need to go for the biggest, most popular open source project. You also don’t need to be the brightest coder out there. If i did it, so do you! Just start by kicking off that side project you always wanted to start. Or by making stretch on your existing ones (push the limits of your todo_list app?). Or build something that you would use yourself … Basically anything that keep pushing you to level up your coding skills by building stuff.

By doing/staring something, you will most probably struggle, if not, then you are not pushing your game hard enough.

Then, often time, when you struggle on something, you end up searching solutions/answers on Google. You must know it by now that there are no struggles you are facing, that no one else have already faced before you. This search can lead you to two outcomes:

  1. You found something on stackoverflow, in an article, a blog post .. and you just inject/adapt the solution to your code. As long as you understand the solution, it is still progress.
  2. You found an off the shelves package, that provide the solution, partially or entirely (I will write an article about npm packages on beginners).

Step two: Spot issues, possible enhancements

If you end-up with the first path, keep going until the next struggle (It should come soon enough :), you are making progress in any case.

If you end-up using an external package, this is where it could get interresting. Indeed, there is a big chance that you see stuff that can be improved or customized to your specific needs. Even better, you spot a bug …

In my case, I just wanted to fix the mobile rendering of the code-box in the Theme I am currently using for my Gatsby (this) blog.

Alternatively, if you like the solution/package you are using but you cant find anything to fixe or improve, you can go and check the solution repo on Git hub. Most open source project will have a section for issues listing. Issues can even have a labels so you can easily spot the severity/priority of each of them.

Repo issues

In my case again, the issue I have spotted (and fixed locally) was already listed in the issue list, and it was labeled as Help needed. So i was quite happy about that, and even more because they were not able to make progress on it for a while.

Take ownership

Step three: Fork, Clone, Code

Once you have identified something that you think is worth fixing/improving/customizing, take ownership of it.

Fork the repo so you have it copied (and linked) on your own git repo. Than, clone the forked repo to your local machine

1git clone https://github.com/Organisation/repo.git

Open the folder with VS Code or your favorite code editor. Than, create a branch for your fixe

1git checkout -b branch-name-for-fixe

Investigate, and code …

Step four: Open a Pull Request (PR)

Once you are done with the fixes/enhancements locally, and tested it, then Commit your work (this should be done along the way). Finally push your code to the remote.

1git add .
2git commit -m "clear message describing your commit intends and completed steps"
3git push origin branch-name-for-fixe

The above steps will automatically create a message on your git repo (web), suggesting you to Compare and Pull Request

Compare and Pull Request

Click on the green button. Then you will have to verify/confirm the repos referenced in your PR. Make sure that the base master point to the original repo on the left hand side. And your head repository (your Fork) compare to your branch on the right hand side.

Also make sure that you describe with as much details as possible your fixes (source, solution, test, …). You may also see a message asking you to read the Contribution guideline. In fact, this is the first thing you should be doing before even creating the PR.

Pull Request details

Then finally, click on the green button at the bottom of the page called Create Pull Request

And thats it ! The project owner(s) will receive a notification about your Pull Request (PR). Based on how busy they are and how big is your PR, it could be more or less fast for them to get back to you, and eventually merge your work to the master. In any case check that your PR is listed in the Pull Request section of the repo. You can even open a discussion with the project owners if needed, some will be more reactive than others to answer, but it worth trying.

Now, go and make something worth your time, you own this!

Open Pull Request

More articles

How to link your Google domain to your Netlify site.

Google has a great domain purchase platform, but site deployment on Netlify is unbeatable.

October 13th, 2019 · 2 min read

My portfolio and projects.

A list of my current porfolio and sides project.

October 13th, 2019 · 2 min read
© 2021 Haja Andriamaro
Link to $https://twitter.com/haja_andriamLink to $https://github.com/Haja-andriLink to $https://www.linkedin.com/in/haja-andriamaro/