Open-Source Development

You are here and why should you care?
First things first- Open Source Software is a computer software whose source code is made publicly available for modification and enhancements. It is released under various licenses like BSD, MIT etc. [Suggested Read - What is Open Source (OSS) ]
Maybe you are a programmer trying to learn and apply new things but what if I tell you, you can apply your coding skill to solve a real world problem right now. Let's take an example- you can update a new feature in firefox browser, you can solve a bug in the ubuntu OS, and millions of people would be using your feature or the fix. You would be writing "prodution ready code". And that's very important "feature" for a programmer. Open Source Programming has a basketfull of perks like you will be meeting with some of the great programmers, better design concepts, reading other people's code will improve the style of writing the code, why and where is documentation important and countless more.
Let's get Amazed
Open source development is the future of software. It's great for users like you and me because open source software is usually free (not always) and often safer to use because malicious code is less likely to be implemented.
In fact, many proprietary businesses are jumping on the train. For example, Microsoft recently decided to open source their .NET Framework. Quite a surprise, if you ask me! So the question remains: what benefits are there to contributing open source? As it turns out, the motives rarely involve money.
The beauty of an open source project is that anyone can contribute code. Of course measures are put in place to prevent abuse (submitted code needs to be approved by a project leader) but if the code works, it doesn't matter who wrote it.
As such, many intermediate programmers will seek out open source projects that they find interesting and look for areas where they can make a difference.
For example, many projects use a bug tracker to keep track of issues that need resolving. These issues range from trivial to complex, so while the experts work on fixing a deeply critical bug, novices can tackle the trivial stuff.
The benefits are three-fold: 1) it's a more efficient use of time since multiple bugs can be fixed in parallel, 2) the experts stay engaged because they don't have to waste effort dealing with trivial-but-time-consuming fixes, and 3) novices gain valuable experience at no risk to anybody.
In fact, if you're a newbie programmer with at least one year of solid programming education (even if it's self-taught learning), contributing to an open source project can be one way to learn programming faster.And at some point in an open source developer's career, the "gain experience" phase turns into a "portfolio of skills" phase. If you're ever in need of a job, this portfolio won't replace a traditional resume or CV, but it can be a great supplement.
When companies think of open source, these days they think "business agility," a quality they increasingly value above all others in the fast-changing marketplace. The ability to create new applications quickly, reliably and economically is drawing businesses big and small to open source and emboldening them to use it for ever-larger projects, IT practitioners say.

How to get started with Open Source Development
-
Get familiar with any GIT or Version control and IRC and Mailing-Lists.
GIT provides access control and several collaboration features, such as a wikis and basic task management tools for every project. [Suggested Video -> GitHub Basics in 20Min]
IRC (Internet Relay Chat) is used by most of the open-source project where you can chat with mentors or other programmers working on the same project or issue.
Mailing-List is quite simple; they are also used for the same purpose as IRC but for more specific cases and when some contributor wants to share some information with all the contributors out there. You need to subscribe to an organization's mailing list and afterwards you will get all the updates and info's about that project in mail and vice-versa.
-
Choose a Language and Project that interests you.
The first and the foremost thing is choose a programming language of your choice. Once you are done with selecting a programming language, search for a project you might be interested.
Open Hatch is just for beginners like you. The search page of Open Hatch filters out bugs based on
- Languages
- Projects
Mozilla too has a wide range of projects filter based on programming language.
-
Filter out a Bug
This maybe one of the most trickiest part. You need to filter out a beginner-friendly bug that you think you could give justice to and is not already assigned to too many people. There will be many tags given to a issues and you gotta need your eyes open.
-
Set Up the Development Environment
Most of the time, you would need to setup the dev-environment. It will depend on the project type. They generally give the setup guide. But then if something like this come across your path, you need to be careful and patient. I'm saying this because this is why I moved out of windows and settled with Linux. But then new things challenge most of us. You will be expected to use terminal most of the times while setting up the Dev-Environment. And then in the process you would need to install many of the dependencies and if somewhere something goes wrong, your Dev-Environment will not work properly. I've worked on GNU-Mailman for some time and believe me; it's frustrating yet challenging and gives an aesthetic pleasure when you are done with the first process. It took me days to setup the Dev-Environment and most of time you need to ask the problems on IRC and mailing lists on that project.
-
Contribute
Now comes the best part. The part where you get to learn a great deal of things. By now you must be done with Project Selection, Dev-Env Setup, and Bug selection. Now get to know about the bug, ask on IRC or other forums. Work upon that bug, this may be easy or extremely challenging. Work everyday, bit by bit and once you are done, submit a pull request on GIT (And you must follow the work-flow of that organization. If you don't know what I'm referring to, you must search for it or ask for it on IRC or mailing list. It's just a set of protocol every contributor need to follow). It may get accepted or if there is a problem with the fix, mentor would guide you further on how to proceed further. Even if you are having a tough time coding out the fix for the bug, you could do some documentation work on that project. By now you must have come across documentation and how great that is. That is what helps out a new programmer with understanding the code in a new project. And when your first PR(pull request) gets accepted, it's a whole new feeling. Dopamine will take over your blood. And that's the time when you feel invincible and won't stop.
-
Give back to the Community
By now, you must be an experienced open-source developer. It's time to give back to the community, not because most of people do it but because it gave you so much to learn and experiment. Now, there are many ways you could give back to the community.
- Evangelize
- Report Bugs
- Mentor
- Host a meet up
- Improve security
It will be unfair for me to write about open-source development without mentioning dgpLUG and GSOC [Google Summer of Code].
- dgpLUG is a Linux Users' Group Of Durgapur. They provide summer training for newbies like us to enter the world of open-source development. And they are really good. It's free, less time consuming yet rewarding. If you are even thinking of entering the world of open-source development, I would highly suggest that you do the summer training at dgpLug. For this year it's already started but you can still join in midway and ask for help. Believe me it's more than worth exploring. I know great many of programmers who started with dgpLUG and now contributing like a ninja. And afterall who doesn't wants to be a ninja?
- And now, Gsoc is an initiative by Google to promote Open-Source development. Every year several open-source organizations apply for gsoc and developers can contribute to the accepted organizations. And if you get selected as a developer and could finish the task in stipulated time (usually 1Month), you will get a stipened of close to 1.5 Lakh INR.
Want to move on to next stage?
[Suggested Reads and Videos]
- Get started with OpenSource [10Min Must Read]
- Here is how you should prepare for Google Summer of Code [5Min Read]
- List of Open Source organizations that participated in GSOC this year [5Min Read]
- Friendly Open Source projects should reserve specific issues for newbies [10Min Read]
- OpenHatch provides tools for new contributors [10Min Read]
p.s - This article is a curation of different sources regarding Open Source Contributions. Thankyou hackerearth, medium, summerofcode and all the other sources for the information regarding Open Source Contributions and relevant topics.