Contributing to open source was something I always dreamt of. I love the community and the open way it works. The opportunity came when one of my friends, an YC alumni and a Ruby on Rails contributor, told me about this program, Google Summer of Code.
Open source is a great way to gain experience in software development. In this guide, we’ll provide you with resources and instructions for creating your own open source project. This guide uses an example application as our learning exercise. After this tutorial, you will have created your own open source Python widget library to help you learn how to contribute to open source projects.
I have made many mistakes in my career and some of them were that I never stuck long enough to learn a programming language well. I have dabbled with Java, Scala, Python, Matlab and R. I had to really stop and make a conscious decision to code only in Python.
Doing this will enable you to focus your energy on one thing and get better at it. Eventually what ever you learn in one language can be easy transferred to the other. So Just stick to one language.
I chose Python as its is the de-facto language for data science and machine learning (I might be a bit biased here!). Since my Masters was in Data Mining, It was a no brainer to choose Python. As a Data Engineer at IBM, I used to script a lot. Python seemed like a tool that could bridge my scripting expertise and machine learning.
If you’ve done all the above to your satisfaction, the only thing left that you can do would be to choose an idea to work upon and perfect your proposal. Most organizations have a list of ideas that are usually safe bets to be projects the organization would be interested in getting developed. I would suggest you reserve the final month before the application window starts for perfecting the proposal the best you can. There are a lot of good articles online about the necessities with a proposal. Make sure to include every detail you can for implementing your idea. Missing details or specifics indicate a lack of deeper understanding. Communicate appropriately with your potential mentor, and submit the draft as soon as possible, so that your mentor has more than enough time to review and give any suggestions. Make the changes, and submit.
Writing the Proposal
Make sure to write a very detailed document on what you want to do. I have added my proposal in the footnotes (I am sure you can find several GSoC proposals online).
This is the time you could ask your mentor for a feedback and refine your proposal. Make sure you do a very good job of it. I remembering being up till 0100 hrs working on the proposal. Add relevant code, flowchart and account for stuff like when there are bugs in your code.
If every thing goes well you will get something like below:
Once you know the organizations you are interested in working with, start contributing to the projects there. If you do this right, even contributing without the assured spot in GSoC would probably feel good, even empowering when you notice your pull requests being merged. This step is also very important for demonstrating your ability to sufficiently perform in the program beyond reasonable doubt. The chances of your proposal being accepted would logically get much better if the potential mentor has sufficient belief in your abilities. Also, do not forget to maintain good communication. November of the year before your target year for the program is generally the best time to start contributing, to ensure that you have both enough time to get acquainted with the potentially large codebase and all the plugins/libraries in use, and time to actually make meaningful contributions as you improve your knowledge.
My GSoC Journey
I realized that my battle had just begin. I needed to pass 3 phases, one after every month. All I needed to do was work harder. I stopped going out on weekends, slept late and was super proactive. I always asked my mentor how I was doing. This gave me a feedback check and I worked accordingly.
I also realized that everything I had accounted for in my proposal was experienced by me. Every problem I thought might occur, occurred.
I learnt a lot.
I had a chance to present my work to core committers at IBM. This was really gratifying.
My mentor was awesome!. He was always ready to help (even on weekends!). I would highly recommend every student to participate in GSoC.
You can reach out to me on twitter @krishnkalyan3.
Start looking at large mature repositories on Github, and keep exploring the interface there. Get familiar with what all the different terms mean. If you find repositories that fit your interests, look at the structuring of the code, the various issues, even a few individual code contributions. You’ll find conventions and code-styling that you might have previously not even be aware of. Then, try to make meaningful contributions(small pull requests are fine, to begin with). This is just getting to understand how open source communities operate at scale, and teaches a lot!
Go through the organizations from previous years. A lot of them participate every year. Find a few that you like, and explore the projects there. You can also find out if they will be participating the following year. How to do that might differ with the organization, but it would generally be feasible to just ask someone over the mailing list/IRC channel of the project/org.
Improve software you rely on
Lots of open source contributors start by being users of software they contribute to. When you find a bug in an open source software you use, you may want to look at the source to see if you can patch it yourself. If that’s the case, then contributing the patch back is the best way to ensure that your friends (and yourself when you update to the next release) will be able to benefit from it.
Outreachy is a diversity initiative that provides paid, remote internships to people subject to systemic bias and impacted by underrepresentation in the technical industry where they are living.
Outreachy internships are:
💵 Paid – $6,000 USD total internship stipend
🌍 Remote – both interns and mentors work remotely
🕰 3 months – internships run May to August, or December to March
Outreachy interns work with experienced mentors from open source communities. Outreachy internship projects may include programming, user experience, documentation, graphical design, data science, marketing, user advocacy, or community event planning.
Meet people who are interested in similar things
Open source projects with warm, welcoming communities keep people coming back for years. Many people form lifelong friendships through their participation in open source, whether it’s running into each other at conferences or late night online chats about burritos.
It is a 12-week internship for aspiring technologists. Programs pair fun, educational curriculum with practical experience that you can put on your resume right away. It’s collaborative, remote, and happens under the guidance of mentors.
As an MLH Fellow on the Open Source Track, you’ll contribute to the type of Open Source projects that every company depends on. You’ll experience what it’s like to work on a real software engineering team first-hand.
All students, as well as non-student professionals, can apply to the MLH Fellowship. If required, a need-based stipend of up to $5000 is available depending on your time commitment, the country you reside in, your living conditions, and whether you are able to afford basic necessities like food, shelter, and childcare.
It provides support for open source projects to improve their documentation and gives professional technical writers an opportunity to gain experience in open source.
You will work closely with an open-source community, solving real problems with high-quality documentation. Learn about open source and new technologies. Add will more skills to your resume. It can be a plus for you if you are already into technical writing.
💵 Paid – 2400 – 6600$ USD total internship stipend
🌍 Remote – both interns and mentors work remotely
Once you have figured out a programming to stick to, start lurking around in the mailing list of projects you might be interested in.You should also introduce yourself in the mailing list.
Read source code / JIRAS / (Pull Requests) PR
Begin by working on easy issues like bugs and improving documentation (This is how I got started with open source)
Mailing a committer individually
Working on too many tasks at once
Contributing to too many open source projects (Unfortunately I have made this mistake!)
When you get your first LGTM, you will be on cloud 9.
Choose your open source organization for GSOC carefully.
For example some projects like scikit-learn gets a lot of student application (and chances are that a PhD. student might beat you to it!).
Its would also a good idea to apply to any projects under the ASF or R-Project since usually these organizations get a lot of slots for GSoC.
This guide is written on the premise of contributing to a small project; either a community fork or a pet project from an experienced member of the open source community.