Open Source - Benefits, How to Get Involved and My Experience

Benefits of Open Source

Open source quite literally made the world wide web possible. It is not an understatement that "open source is the bedrock of most of the technology that we use today."

It is difficult to imagine the cyber world and the internet itself without Open Source. Almost 50% of the software developers use Linux-based operating systems. 96% of the top one million web servers are running on Linux. 60% of the world’s websites run on Apache and NginX, the two most famous open-source web servers.

There are many reasons why open source is widely accepted. However, the community aspect of open source is the most important reason for its growth as a movement. The idea that anyone in the community can give suggestions and propose ideas that through the involvement of the community as a whole turn into an actual product or a feature is something that helps drive innovation.

Here are the benefits of open source in the following domains:

  1. Education - We all can agree on one thing and that is that college syllabi are outdated. As far as colleges in India are concerned that is true. They don’t aid the student in achieving industry-level expertise. Most of the students are not even job ready by the end of their college and many students teach themselves in this respect. Internships are a great way to level your skills but recently it has become very difficult to get good internships. There are so many scams in the name of unpaid internships and whatnot. Moreover, this course hell and tutorial are something that many students are stuck with thereby slowing down their learning path. This is where open source shines a lot. It has a very bright future in terms of education.

    Open source enables a constructionist approach to learning, where you learn by doing. Moreover, you learn in public. Interacting with other developers and maintainers, getting feedback on your contributions and working with huge codebases that are being used by hundreds or thousands of consumers and watching your contributions create an impact helps an individual grow as a developer. Open source is not only going to be a great platform for learning but providing industry-level expertise. This continuous collaboration and the spirit of learning and improving on each other’s ideas drive innovation since part of the open-source foundation is building on one another’s achievements.

    In my opinion, this first point, alone, summarises the benefits of open source as a whole. However, I would elaborate a little bit more.

  2. Communication - Open source is not only about contributing fixes and features to a project. Working in a team, sharing and explaining your ideas and suggestions to tens or even hundreds of other people, getting feedback on your ideas as well as contributions, giving feedback on other's ideas and suggestions, meeting developers from around the world and learning in public are some factors that help in developing an individual's communication skills.

  3. Hiring - Open source streamlines and simplifies the hiring process. One doesn't need to update his resume from time to time. A recruiter can have a look at a candidate's GitHub repository and looking at their involvement, decide whether to move forward with them or not. Another perk is remote jobs. It is easier to get remote jobs that pay well. This is good when you are living in a country like India where software developers are underpaid. Money should not be the motivating factor but for some people it is. In that case, open-source is very beneficial.

How To Get Involved

It is fairly easy to get involved in open source. However, many people think that they are not good enough and hence keep putting off contributing to a later point when they will be good enough to contribute. This is not how open source works. One of the aspects of open source is learning in public. With that mentality, no one is ever going to be good enough to contribute. It is a valid case that one might get intimidated by huge codebases or sometimes when people are starting, they try to get into something too complex for them to understand and hence they quit.

I'll list out some guidelines on how to get involved into open-source:

GitHub Explore

  • Visit github.com and go to the explore page and click on the trending tab. It will list out all the trending open-source GitHub repositories. Now select the language in which you would like to contribute from the language filters.

  • Open any repository that you would like to contribute to. Now read the contributing guide and set up the project locally or use Gitpod. Now run the application, go through the codebase and the running project to get an understanding of how everything works.

  • Go to the issues section of that repository. Filter the issues by "good-first-issues" or "beginner" or similar tags that are meant for beginners. Look through the issues and select any that you would like to contribute. Tell the maintainers that you would like to work on the issue and ask them to assign it to you by leaving a comment on the issue.

  • When you are assigned the issue, you can start contributing and raise a pull request when you have made the changes. If they leave any comments and feedback, make sure to resolve it and push the code again. After a little back and forth conversation, once the reviewers find your code to be ready to merge they will merge. Hurray! You made your first contribution.

  • You check out the Topics section and find repositories based on topics like Javascript, Angular, NextJS etc. There are also the rest of the process will be same.

Guidelines to Follow

  • Remember to be respectful and don't tag specific maintainers when you comment on a PR or an issue because it only increases the notifications. The maintainers will be notified and get back to you as soon as possible.

  • If they have a platform like Discord or Slack, you should join them. Introduce yourself in the intro channels. It will help you to interact with other contributors and maintainers of the project. Ask questions and answer other people's questions. Get involved in discussions and don't be shy.

  • Always ask questions and discuss in public channels and refrain from DMs. People are not judgmental and the open-source community is very supportive and will help you even if you ask 'stupid questions'. The questions might seem stupid to you but they may help clarify the doubts of tens of others if you ask in public.

  • Don't get stuck in the good-first-issue hell otherwise, you will never improve. Once you have made two or three good first issues, move on to bigger issues. Beginner issues are there only for beginners or if you want to get an understanding of the codebase.

Where To Start

There are hundreds of communities and open-source projects to start with. However, if you still cannot find good open-source communities EddieHub and WeMakeDevs are your go-to organisations. EddieHub's open-source project, LinkFree, is a very good project for a beginner to contribute to.

  1. EddieHub

  2. WeMakeDevs

My Personal Experience

I started open-source contribution recently but I have been wanting to do it for a long time. I used to get intimidated by large code bases. I thought to myself that I was not good enough. Hence, I would keep thinking that "I would do it after I get better at web development". The result was that I ended up doing nothing and wasting a few months that I could have invested in it.

It's only been two weeks since I started open-source. Joining the EddieHub community helped me open up my mind. Interacting with other contributors and maintainers and answering and asking queries in public has helped me improve as a web developer. That's only two weeks of open-source. It gave me confidence and now I look forward to contributing to bigger projects like ReactJS or NextJS. I found that the community is supportive and helpful. This is the short experience that I had whilst as an open-source contributor.

One of the things I regret is not starting it sooner. I would say that if you want to start open-source then you should also start small and keep improving at a consistent pace rather than jumping directly into something too complex for you.