The What, How and Why of the Open Source Community in Programming

Agrim Chopra
Sep 7, 2020 · 9 min read
Image for post
Image for post

It is astounding to see how the concept of Open Source programming is so underrated and misinterpreted in the current date. While it is given due respect and appreciation from developers who have been in the field for a long time, most of the beginners in the field have no idea about what opportunities it might hold for them. And not that it is anybody’s fault, that is simply because it seems much more tempting to look for internships online that would pay you a good amount as soon as you start. While that is something extremely important and worth your time, ignoring the concept and importance of Open Source at the same time can be a setback to any person’s career. Hence before I start, I would like to point out that I am in full support of going for internships, and have been in a few myself too. The reason for me writing this article is that I was exposed to the open-source world a few months back, and have been working on it ever since. And to put into words the amount I have learnt from it in this small period of time is really difficult, but I’ll try my best. So first of all, for the people reading this and wondering what I’m talking about, let’s just get a quick intro to what an open-source software really is.

What is Open Source

Open Source software is not something very different than what a lot of us use every day. In fact, you would be surprised if you go online and try to find a list of all popular open-source softwares right now. Mozilla Firefox, Ubuntu, WordPress, VLC media player and so many more. So what differentiates them for other softwares due to which they qualify as “open-source”, while other popular ones do not?

It’s simply that they have some pre-defined characteristics which define the term we have been talking about until now. Next question: What are these?

  1. It is free. That’s probably the most evident part of an open-source software. An open-source software would be free to everyone, whether it be the developer, the user or the owner. It would not charge you anything for any service that it offers. If it does, it loses the right to call itself that. Have you ever wondered why all the softwares I mentioned above give you such great services for free? You have the answer now.

So this was a basic overview of what open-source actually means. After seeing all this, it is evident that an end user would not notice any difference between a software which is open-source and one which is not, except the fact that the first one is more likely to be free.

Who would contribute, and why?

This is a question which I’m sure a lot of you will have in your minds at the moment. Until now, we have come to know that these softwares are completely free. Of course, on knowing this it would initially seem like the developers making this are not receiving any payment for their work. Then why would someone want to devote their precious time into this? And what are the opportunities I mentioned in the beginning of this post?

First of all, open-source pays. And it pays a lot. There are various ways people are earning money through open source, and if someone keeps working on it, he/she will surely be able to earn too. But before I talk about the money aspect further, I would like to point out a few other benefits, which I believe are much more important than just money:

Knowledge, Experience: Of course, the evergreen points of getting knowledge out of work, and that always helps. But that is not all. In my personal opinion, contributing to open-source is the best way for a beginner to start getting experience. Why? Because of the fact that the internships one would look for, or just simple paid projects would mostly be under corporates, looking to get a whole lot of work and value out of you. And even though I have got extremely supportive managers and seniors in every internship I have been in, getting into one of them is not an easy task. Due to a large amount of aspirants, you would often be up against people having months, if not years of experience already on them. Hence, getting to work on a real-world project becomes difficult. Open-source provides the perfect platform to counter this. In this community, no matter how less work you put in, you are always an asset. Hence, the pressure is way low than an internship and learning experience can be much better. Due to this, it becomes the most effective way to gain more and more experience and get to work on an ever-expanding number of real-world projects.

Value: One of the most important factors of working in this domain. The amount of value you get will be amazing. This value can be from companies, individuals, owners of these project, and the programming community in general. Having a good open-source profile is always a big plus.

Professional Network: This is something I have experienced myself a lot. When you work on projects online, you collaborate with a lot of people. And this collaboration, of course, includes a lot of communication. During this communication, it is obvious that a lot of professional links are formed. And hence, I have got people from London and Amsterdam in my active LinkedIn connections. Of course, you never know when your professional network may end up helping you to an extent you can’t even imagine.

Opportunities: This point is closely related to the second point in this list(value). Specifically, value from companies. A lot of companies, including industry leaders like Google pay a lot of attention to open-source. So much so that one of their most prestigious programs for students, GSoC(Google Summer of Code) is completely open-source based. You can only get in if you have a good open-source profile, and then the project you work on is also open-source. This shows the importance of this domain in the industry at the moment. And the GSoC is not alone in this list, there are hundreds of prestigious internships out there looking for people with good open-source skills. Outreachy, MLH, Linux Foundation are just some examples. The reliance of these companies on open-source is just a reflection of the amount of value it has out there in the world.

And of course,

You get paid. The thinking that open source cannot pay you is completely wrong. Once you reach a good level, there’s a high chance that you are going to get hefty amounts from various sources for your work. How? Internships, Sponsors, Payment by companies: there are endless ways. A large number of people have worked really hard to make a system that ensures that people do not refrain from giving their time here just because it does not offer money. It does. Even the internships I talked about just now? They pay very good amounts to their interns, and a stipend of $6000 for 3 months by Outreachy is just one example.

Okay, I’m convinced. How do I start?

This is the question that I was confused with too, and was consistently doubting the ways I was following until I made my first contribution. But the thing is: you just need to follow the most straight forward method you can think of. However, before I jump to that, should we not know what all skills are required before we see how to do it?

The answer is nothing. Until now whatever I said makes it feel like you need to be good at programming to contribute to a project. Because of course, softwares are made up of code. But the catch here is: softwares are not made up of JUST the code. There are various aspects to a single software being launched into the market. The design, content, the documentation for using it, even reporting bugs is an essential part of a software. Do any of these require coding? No. You just do whatever you are already good at, and contribute to the project that needs you. That’s all.

However, considering everything I have said in this article is heavily about programming, it would be extremely unfair to ignore that aspect here. Though jumping into open source, in general, does not require building some new skill as such, jumping in as a programmer does have some requirements. Let’s list them out:

  1. Git: Git is officially the way of handling your software. It is not a language with which softwares are made, it is simply a tool that helps you keep your code in check. Using the power of git, you can create checkpoints in your code or make branches, which essentially means work on your code while keeping the previous version intact to ensure you can revert back if needed. Essentially, it is the version control system for your software, and as we see in the next point, git is extremely important not for developing the software, but for collaborating with others while doing it. And considering collaboration is the most important thing while doing open-source, git gets a similar status.

That’s all. Most people aiming to start out as programmers already know some programming language, so the only new skills needed are git and Github. However, the good thing is: learning them is extremely easy, and cannot take more than 2 days, if not just one. Find a good tutorial on YouTube, and you’re good to go.

Now, about the procedure for starting. The only difficult part in the whole procedure is finding a software you can contribute to. As a beginner, it might take you some time to actually find the one which requires the skill set you possess(in terms of the programming language, of course). The best way to do that is just to keep looking. You can do that manually, or you can look for codebases having issues with the tag “good first issue” on Github (my suggestion: look for a package called “good-first-issue” on Github, that got me to my first software too). That will surely get you to the right place. Okay, you find your software. What next? Well, that’s all. You just make a copy of the code on your system, make the changes you want to make, and put the code back on the website. How to do that? That is where git and Github come in. Once you have learned them, doing these steps will be a breeze. And then congrats, you have made your first contribution and are now an open-source developer!

Concluding

Great. So that was all the things that I wanted to share with you today. Signing off, hoping this article helped you understand why 40 million people are working on 28 million projects for “free” every day (and probably encouraged you to become one of them).

The Startup

Medium's largest active publication, followed by +752K people. Follow to join our community.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store