Photo by Max Duzij on Unsplash

Opening up to Open Source Contributions

Ankush Sharma
Nov 2 · 10 min read

A beginner’s guide to contributing to Open Source

Everyone was a beginner once! The toughest part about being a beginner is, well, you can never be absolutely sure about where to start! We try to find ways, accumulate knowledge, build on our peer’s advice and yet take too long to take the first step towards a journey we chose.

Photo by Daniel Mingook Kim on Unsplash

Open Source Softwares are raging and building the IT landscape for many years. With GitHub, bitbucket etc. version control software becoming mainstream, we are finally in an era of the best means to build communities and contribute to a large number of great projects that are leading this disruptive phase. Be it facebook’s React or the Mozilla foundation’s Mozilla browser, Open Source Softwares are changing the way we live, while saving millions for organizations by using the power of community.

As an engineering student specialising in the field of Open Source Softwares and Open Standards, I was completely drawn to contributing to any software I could get my hands on. But, that came with a simple hurdle? How? It took a while before I could understand what contributing actually meant and what should be the process as a beginner I should take.

Now over the 4 years of my B.Tech, I have done over 50 projects in various programming languages, trying to build virtually anything that I could get my hands on. The entire ensemble of projects available on my GitHub profile meant that I was more than prepared to take things one step further. Now the question remained what would be the correct process?


Now I am absolutely 100% certain that if you do start researching about contributing towards open source projects, you would come across some links, some websites and some articles on how to start. But, none of those does tell you in-depth how and why we need contributions from someone else?

First of all, I shall get some terminologies out of our way. A Repository can be considered as a sort of storage site for our projects. We have version control software/websites to help us with those, such as GitHub. A Pull Request is a method of submitting contributions to open-source projects. It occurs when a developer asks for changes committed to an external repository to be considered for inclusion in a project’s main repository after it has been reviewed by the concerned peers of the project. We must know both of these before proceeding ahead.

Next, even before we learn how to contribute. I would like to segregate projects into some types to help you understand what project would suit you the best.

  1. Self Developed: A project that is currently developed and maintained by you.
  2. Small Scale OSS project: A project having typically a single or fewer than 20 members contributing to it.
  3. Medium Scale OSS project: A project having developed a first version build with a community of more than 30 members overlooking its future functioning and path. The community may or may not be maintaining other projects as well.
  4. Large Scale OSS project: A mammoth project with a real product ready, having completed all the steps of the software development life cycle. Maintained by an active community of a large number of members. Other projects which may or may not be related to the project in consideration may also be maintained.
  5. Enterprise Scale OSS Project: Open Source projects maintained by enterprises such as the Linux Foundation, Facebook etc.. They take part in the review process and give general guidelines on contributions and community behaviour.

Phew... Now that we have that out of the way, we should definitely talk about what project should we select first as a beginner and where to find them.

Contributing to Open Source Projects is actually a quite easy process, what’s important is to see if your contribution carries some value, information, change etc.

To code is easy, engineering is what shall separate you from the crowd!

As a beginner, you should only be concerned about the first two categories of projects. The Self-developed and Small scale projects provide an ice-breaking experience for the uninitiated. ( You aren’t Bane, you can’t break the bat yet! Take it slow! )

Now you must be wondering if a project is developed by me then how come is it an open-source project?
Well to answer that I’ll simply let you on a secret. Everything, literally everything you put on the public repository of GitHub is Open Source! You don’t believe me? Try googling it! If you already were stashing all your projects in Github repos, congratulations, you have already begun your journey! The thing with the projects that you develop is that you retain greater control and understanding over them. As a beginner, you would start somewhere familiar and thereon, build the community yourself. We shall get to how to build the community for our own projects and contributing to them in a while.

Now the small scale projects open up the same avenues for you. You would work on an easily understandable project with a closely-knit community to help you better assist with understanding and building that project further.

To find such projects you can visit Up For Grabs (huge shoutout to Ritwik Sharma) or Issuehub.io or Awesome for Beginners etc.

Up-for-Grabs

Make sure you find projects with tags such as “beginner” or “first-pull-request”. They shall help you curate your portfolio of projects to contribute upon. We shall further dive into the process of finding such projects and creating our first pull request later!

So remember, as a beginner, grab these two kinds of projects always!


Now that we know what projects should we chose and also the terminologies associated with creating a pull request, let us move ahead and create our first pull request.

Now each project comes with an issue. Issues are tasks, features, discussions or bugs present under different labels that help determine how to contribute to any project.

If you choose any project through the previously mentioned links then you should definitely check out the issue tab on the corresponding GitHub repositories. Choose an issue that you would like to work upon, talk to the community and then follow the process I’ll just exhibit in a short while.

For a self-developed project, things get a little more interesting. After you reach a point where you like to divide up the tasks and get more people on board, that’s when you create issues. Now creating an issue a really easy job. Go to your created GitHub repository, in the issues section, click on “Add new issue”. On the next screen, enter the title and description of the task you want to be done on the repository. on the right-hand section and click on labels. Add multiple labels if you want. These labels are necessary as they help the GitHub community to find your project and further contribute to it.

Once you are done, just click on “Submit new issue”. Voila, you just started building your community there! People will find out your project and comment on the issues to work upon them. You can decide to add people to your contributor list too!

Adding an issue

Now before I jibber-jabber about any other process, let’s get down to the brass tacks of creating your very own first pull request!

For the ease of every first-timer, I have created a GitHub repository that would specifically cater to your first time pull requests. Let’s see what we have to do to get it done right!

  1. The first step would be to go to the repo you would want to work upon. Visit the link here.
  2. Next, we would need to create a fork of the original repository. A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
  3. After creating a fork, we would need to clone or download it to work upon the project. There are several ways to do that. For the sake of this guide, we won’t dive into those. Refer to this link to clone a repo. On windows, I suggest you use “gitbash”. On Linux, just use the git utility to do the same via terminal.
Forking and cloning a git Repository

4. Open a git bash and type the following command to clone -

git clone https://github.com/yourID/your-repo.git 

5. Change to the repo folder by the following command on your desktop.

cd your-repo

6. Now you need to create a new branch using the checkout command of git.

git checkout -b <branch-name>--e.g--git checkout -b test1

7. Open the Pull-file.md and add your name and GitHub profile link and your name. Next, add your file and commit those changes as follows:

git add Pull-file.mdgit commit -m "Add <your-name> as a Contributor"--e.g--git commit -m "Add Ankush Sharma as a Contributor"

8. Push your addition to the repo.

git push origin <your-branch-name>

9. Since your changes now have been pushed, you are ready to create your first pull request. Head over to your GitHub page. You should see the following. Just click on Compare & pull request button to create your pull request.

Creating a Pull Request 1

10. Finally, click on Create Pull request. Make sure you have the correct base repository and correct head repository set up. The base should be the one you forked from and the head, your own repository. With this, you are finally set with your first pull request!

Creating a pull request 2

So where to go from here now!

Once you have created the pull request. It goes through a review phase. When the owners of the repo approve your pull request, they can then merge it with the project. This completes your process of contributing to any Open Source Project! ( Pssst… this isn’t over yet! )


So there you go, you have successfully completed the process to successfully contribute to any open source project. In addition to that, you now know how to choose projects for your Open Source journey. Once you do start building up your own community for your Self-Developed Project, you should look out for merging requests and keep updating issues as you move ahead.

Merging a request

There is a lot more to contribute as an open-source software developer and indeed it has a lot of potential in pushing this era of technology ahead.

We shall continue exploring more and more about such opportunities and do what we can as a community! I shall be keeping up with the tradition and soon follow up with an article and in-depth analysis on how to effectively build a project, taking the case study of a popular OSS project.

Till then I wish you have had enjoyed this article and will create your own pull requests in the future! Find the link to the repository mentioned in the article for your first PR here! Leave a clap here so that I keep on contributing more and more here as well :D

Hope to see you soon! Till then, keep coding!


About the author —

I am a Computer Science Engineer and software developer at LTI (Larsen and Toubro Infotech), with specialization in Open Source Softwares and Open Standards. I have begun my career as a full stack developer and am an ardent believer in inculcating secure digital practices in the modern education system. I have dabbled in android, Tickstack, Unity and Cloud. I am also a cybersecurity enthusiast and have done extensive training in Network Security and Ethical Hacking. I have played a key role in the incubation of several startups at Entrepreneurship Cell, Dehradun.

I like music and poetry and am constantly trying to learn and perform hip hop and rap! I am a big streaming junkie and a trained boxer as well!

My expertise lies in cybersecurity having undergone rigorous training and certifications in digital security, encryption and Ethical Hacking, and java development. I am a certified spring developer and am in the works to get certified in Redhat Openshift too.

I am a founder of AINC, creating codean organization aimed at developing software and educating all about various programming languages, software, and tools used. I have about two years of teaching experience on subjects like Android development, data structures and Web Design as a student teaching volunteer at UPES, Dehradun. Apart from this, I have successfully done 10 extensive and over 40 short projects over a span of 4 years in my college life and am working with Nets payment solutions to create payment solutions for an easier tomorrow.

To reach out contact me at ankushors789@gmail.com or call at 9990614406.

Find me on Linkedin here.

Visit my Instagram here.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade