This article describes the basics of open source and Outreachy. You can look at our past GSoC projects under GSoC Projects.
"Source code" is the part of a software that most computer users don't ever see; it's the code computer programmers can manipulate to change how a piece of software—a "program" or "application"—works. Programmers who have access to a computer program's source code can improve that program by adding features to it or fixing parts that don't always work correctly. A phrase heard commonly in the world of software development is "Don't reinvent the wheel!". The phrase literally means that if some task has been done before in an optimal manner, it makes no sense to replicate it. Sadly, in our world, there are often times when one has to build a basic component from ground up, even though it has been implemented by several others.
Why so? Licensing issues. Every organisation likes to keep its code hidden away from the outside world because writing code costs resources.
However, software development has come a long way. Several organisations now feel that opening the doors of their repositories to the world can be helpful - both to the onlookers and to the organisation itself. Volunteers from all over the world can now contribute to the codebase to make it more stable, optimal, and sometimes even point out major vulnerabilities that would've otherwise been embarrassing to the organisation. By design, open source software licenses promote collaboration and sharing because they permit other people to make modifications to source code and incorporate those changes into their own projects. They encourage computer programmers to access, view, and modify open source software whenever they like, as long as they let others do the same when they share their work.
One common misconception that has existed since the beginning of open source software is the idea that free and open source software means that the software is free in price. The term 'free' in free open source software refers to freedom, not monetary cost. Though most free open source software is indeed free in price, the term 'free' is referring to the freedom to use the software and source code as you please, as long as you attribute copyright to the person (or group) that created the software and the software stays free and open source when it is distributed to others.
Why Should I do Open Source?
There is a lot to gain by doing open source, especially as a student who is in his 1st or 2nd year of programming. Here are some,
- First Exposure to Real-World software - yes you heard it right, you will actually be contributing to projects like Firefox, Scipy, Apache etc. that affect millions of people around the world. Real-world software isn't your 100 line scripts, but tens of thousands of lines of structured modular code with extensive testing infrastructure and documentation.
- A New Family - Open source communities are very friendly to contributors and they soon become your new family with the IRC (Internet Relay Chat, explained later) being your home. You might actually meet some of them in person in the future.
- Excellent Internship Programs - Open source is powered by two excellent student programs, GSoC (Google Summer of Code) and Outreachy. All students are eligible for them, and boy, they make you rich.
- Respected Worldwide - Open source contribution is respected worldwide and it might just help you get your first job!
- Programming Skills - Needless to say, open source will definitely make you a better programmer, and a little paranoid too (you will feel like screaming at someone who writes badly formatted code)
What are the Pre-requisites?
Well not much, quite unlike what you must be thinking. The key idea is that you learn on the go.
- One Programming Language - This is absolutely necessary. Make sure you have completed the Programming 101 guide atleast.
- Linux Skills - Unfortunately, setting up many software is a lot harder on Windows as compared to a Linux distribution. It's time to dual boot! Have a look at our Dual Booting guide followed by Basic Terminal Commands. Note - This might not be necessary and it's more of a personal choice. Always have a look at the documentation of the open source project to look at supported OS and how easy the setup procedure is.
- Version Control Tool - It's a good idea to be familiar with Git and Github before you begin your open source journey. Version control is complicated and needs a lot of patience to understand. Make sure you learn basic Git before approaching any open source organization. Have a look at our Git guide.
- Patience and Enthusiasm - Yes, the most crucial element. Open source can be a living hell in the first few weeks. It's important to remain calm, seek help, read up documentations. Once you get through your first bug, it's only upwards. Don't worry, the whole organization is generally backing you!
- IRC (Internet Relay Chat) - A minor but necessary step. Make sure you have an account on an IRC client. IRCCloud is a excellent IRC client as it works on HTTP, stores 2 hours of conversation after you go offline and a beautiful interface.
How do I begin?
You begin by selecting an organization. Meet Udeshi (with suggestions by Kalpesh Krishna) has written a long and detailed blogpost on selecting your open source organization. Make sure you have a good look at it. How to Select A GSoC Organization?. Au contraire the title, this is not particular to GSoC. It is a good idea to be associated with an open source organization irrespective of your interest in participating in GSoC. If you are in a hurry, look at the "TL;DR" section at the bottom. You can look at our community's past GSoC organizations along with some recommendations, look at GSoC Projects.
Ranveer Aggarwal has written an extra Quora article to take you over the basics of working towards a GSoC selection once you have chosen an organization. Most of it applies to beginning open source in general. GSoC 101.
GSoC & Outreachy
Open source can get a lot more rewarding through programs like GSoC (Google Summer of Code) and Gnome Outreachy. More importantly, these give students a great chance to contribute significantly to open source organizations and perhaps become the future module owners / maintainers / mentors for the organization. If you are a student and want to do open source, this is the best way to do it, since they pay you significantly and give you a chance to finally do siginificant open source contribution.