What is Open Sorce and How to Start Contributing

9 minute read

The world today is more democratic for those who want or need to use computers, more precisely those who need to make use of computer programs. But this was not always the case, and in part what made access to the computer world something a little simpler or less expensive was open source or open source software. But what exactly is it?

An open source project is, in short, a project created and maintained by the people who use it.

Let’s say you have an open source football field close to your home: one person will help you mow the lawn, another person will help paint the markings, another person will help you water, someone else will bring the ball and everyone can play! It is a collaborative software growth system.

Contributing to open source can be a rewarding way to learn, teach and build experience on just about any skill you can imagine.

In addition, you can interact with real professionals in the market and consult them to answer your questions, do code analysis and give tips for you to improve.

A bit of history

We can understand a bit more about this concept and its associated benefits by telling the story of the most popular example of open source software.

In the early 1990s, at the University of Helsinki, Finland, Linus Torvald created the Linux operating system from Unix, under the “GNU General Public License”, that provides one of the many designations and parameters for software licenses, created by Richard Stallman of the Free Software Foundation].

From this point, many people around the world downloaded Linux and started working with it. Among the many users, some were programmers, and because they had access to the source code, they analyzed it, learned about it and made modifications to improve it. For approximately three years Torvalds received all the changes and contributions and incorporated several of them into the original version, then released version 1.0 of Linux in 1994.

The GPL, or GNU General Public License, is the type of license predominantly used in open source projects. Among the various aspects contained in the license, the terms state that if any modification to an open source program occurs, the distribution of the changed program must also distribute the source code that has been changed. That is, no one can use open source to produce proprietary code from it.

But the most interesting aspect related to Open Source, is the collaborative performance that is normally associated and that we saw happen in the “birth” of Linux and that lasts until today.

Advantages of Open Source

Although some are controversial and questioned, particularly by those on the opposite pole, that is, those who produce proprietary code, there are some advantages and they end up being almost fundamentals of those who develop open source:

Transparency - to the extent that I have access to the programming behind each program executed, I have the possibility to know exactly everything it does, as well as the guarantee that nothing is happening that I would not allow or would like, for example, collection of personal data, which guarantee my secrecy and privacy.

Information - the technologies and the way things happen in terms of programming, are no longer exclusive to those who programmed and thus knowledge is shared.

Security - due to the fact that the code is public, anyone with the necessary knowledge can contribute to improve and even correct problems and flaws associated with security, which can only be done by the original programmers when they have proprietary code.

Maintenance - keeping the software up to date, as well as providing improvements, are not situations that depend only on the program provider, but possibilities available to many.

Cost - although free of charge is not guaranteed in 100% of cases, the number of programs in this condition is very close to that, which is a favorable point for computer democratization.

Contributing to Open Source Software

Contributing to open source projects is the gateway for you to code on large projects while working with some of the best developers in the world. There are infinite reasons to contribute, such as:


This is can be a rewarding point. You can help developing new features for an application that you use, fix bugs for it and really experience those improvements on a day-to-day basis. Also, as you help other developers, you might get some insights of how to solve problems you’re facing or once you experience a similar problem in the future, you know where to look for information.


If you love to develop, just like me, you will realize this is one of the most fantastic points of contributing to an open source project. Because you are seeing other people’s code and you will need to not only understand, but interact with it. Often the code can be quite old and you have to refactor or change something to get better with what you are doing. And by doing so, you can learn a great deal.


An open source project community can be a wonderful way to meet devs with more experience and baggage than you. This is where you will have the opportunity to experience what it is like to work with the toughest guys on the market, and be able to gather different perspectives to solve common issues.


When you start to contribute to the community you are more seen and consequently you stand out, but I would not advise to contribute thinking about this point, it is just a consequence.


This is especially true for beginners who, in addition to not having much experience, do not have many projects to show. Nothing better than contributing so that you can have real projects in your portfolio and combine the experience of having worked with great names in the field.

There many reasons to contribute, but now the question remains: how to contribute? To make it easier I gathered some steps to start contributing.

Find a project

Certainly you already bumped into many open source projects, these are the cases of programming languages such as PHP, Javascript, Python, Ruby and frameworks such as AngularJS, React, Django, Rails that you have probably used or heard of, besides these there is a wide range of tools and libraries.

There are basically two ways to learn about projects. The first way is to use it. With that, you be motivated to contribute, to help improve the project you have been using. This seems one of the most interesting ways, because by using the project you will get a clear visualization of features and bugs.

The second way is for you to search for projects on the web to contribute. By not having prior knowledge of the use of the project, this can avoid some biases acquired when using it. If you choose this way I, there are some tools you can use to find these projects, such as:

  • CodeTriage - here will find open source projects, you will be able to filter by languages and select projects to receive issue newsletters.
  • YourFirstPR - where you can start contributing to Open Source by finding great starter issues on GitHub and elsewhere.
  • Awesome First PR Opportunities - A curated list of awesome beginner-friendly projects.
  • Up For Grabs - A list of projects which have curated tasks specifically for new contributors. These are a great way to get started with a project, or to help share the load of working on open source projects.
  • IssueHub - Allows you to search for open issues on projects by selecting specific tags.
  • Hacktoberfest - an open event, happening on October, that encourages the growth of open source and contributions to the community. All backgrounds and skill levels are encouraged to join the challenge.

See the project’s guidelines for contributors

Most open source projects are on GitHub and when you access the repository, in addition to the project’s source code you will find the project’s README, which usually provides information on how to contribute in the contributing section. Each project has its own particularities and it is common to everyone to need to fork the project to start working on the code.

Other projects contain a CONTRIBUTING file where relevant information on how to contribute to the project and how to keep it concise. In these cases, the README targets consumers of the project.

The contributing file can also contain guidelines on how to open and claim issues. Also, how to announce a PR is ready for review.

Many projects also provide a channel for communication. So if that’s the case, it is helpful to join it and discuss ideas, or simply to ask questions about a broad topic that does not fit directly on the repo’s issue.

Check the project’s needs

At this point, you found a project that you want to contribute to, and checked the rules to do so. But what needs to be done on the project, or what can be improved? The place where these information is usually present is issues section, which lists features and bugs that other users or the maintainers have detected and are asking for help. In some projects, there are labels identifying issues for those who want to start contributing. After choosing an issue, all you need to do is get your hands dirty.

Write some code and open a PR

Aka. the best part!! At this point, you can perform the task you chose, check if the style of the code you wrote matches the project stile and guidelines, and make sure everything is working fine (at least for the parts you worked on).

When finished, you need to open a PR from your fork / branch to the main repository of the project, to the branch defined in the rules. After opening the PR there may be interactions between the project’s contributors and you to adjust some things. After being approved, it is completed and will probably be available in the next release of the project.

Participating in Open Source projects is one of the best ways to evolve as a professional, create relationships with the community and prove your skills in any job applications. If you are looking to learn more about open source software, I recommend that you check the Open Source Guides website.

And as a fun curiosity, in the First PR website you can check the first pull request made by any GitHub user. How cool is that?