If you are reading this blog, then you probably know about GSoC already.
If not, then Google Summer of Code, abbreviated as GSoC is a 10 week global summer program administrated by Google which mainly focuses on bringing student developers into the field of Open Source and work on something useful.
The main aim of this program remains the same, i.e. promoting Open Source. It is a kind of mentorship program where Open Source Organizations come forward with their project ideas. Students are then allowed to make proposals on any of those ideas or propose a new one. Accepted students work closely with their mentors and learn about best practices in Software Development.
It is a win-win situation for everyone. Students get a chance to learn from their mentors and earn real world exposure. Sometimes, the syllabus taught in Colleges may be obsolete preventing students to learn about the current tech stack prevailing in the market. Open Source programs like GSoC try to bridge that gap. Organizations also get some good contributors to make their project better.
- You can access, modify and resue it freely.
- Its source code can be inspected, modified and enhanced by anyone in the world. Open Source is one of the best things in software industry as Open Source technologies die hard. And what I believe is, Open Source is the easiest way to learn and grow.
"Okay, I understand that I should contribute to Open Source. I too want to, but how? That codebase is already big and a lot of contributors with more experience than me are working. Then why will they need me? Also, I don't know exactly what is happening in the code?" - If you too have some similar feelings, then you are not alone. Almost everyone got intimated.
To everyone already indulge in it, whenever I ask these questions, reply remains same, "Just get started". No matter if you understand it clearly or not, if you have relevant experience, just start. You will learn as time passes. Be consistent and try to learn.
At first, you should know what the software is trying to do. Try to follow instructions, setup the project locally and play with it. Almost every Open Source organization documents how newcomers can help them. Go through that documentation and try to follow the same.
You may stuck at points, but it is fine. Ask your doubts in community. You can find communication channel too easily, it may be a mailing list, or any other messaging service.
There is no harm in solving beginner friendly issues first, doing 2–3 lines changes will work too. Once you feel good, you can move forward to other issues.
OpenWISP is a software platform designed to ease and automate the management of networks, with a special focus on wireless networks, mainly used in public wifi, mesh networks, community networks and IoT scenarios.
OpenWISP is built with Django, using its features like modularity and extendability. It's lot easier to customise it for your use case.
My main reason for choosing is my familiarity with Django. Also, OpenWISP deals with something that I am keen to learn, i.e. Networks. Although I was not able to understand anything while starting but OpenWISP community helps me with each step.
OpenWISP is a good choice for anyone interested in Computer Networks.
GSoC timeline is announced at year end. You can check eligibility, and if you are they you can apply. Accepted organizations are announced usually in February. But, you need not to wait for this. You can start contributing now. Have a look at GSoC archive where you can have a list of previously selected GSoC organizations. Although, your focus should be to learn and contribute. Organizations may have some more rules to take part in GSoC with them, for which you should communicate with the community.
Missed GSoC, you need not to worry. There are a lot of other opportunities too.
At last, remember "Open Source is for Everyone" and "Open Source is about Collaboration, not Competition."
I contribute in OpenWISP in August, when I was sitting idle waiting for next semester to start. As I learned Git just a month or two ago, and that was the only prerequisite I heard of, I decided to contribute. Luckily, I found an easy issue related to formatting. Although it was an issue easy it took a week for the PR to get ready for merge. Here, I learned about flake8 and other formatters for the first time.
Getting my first PR merged, was no less than an achievement for me. After that, I start looking for an issue that I understand and try to solve it.
I learned a lot more things in the journey. Docker, decorators, RST syntax, continuos intergration are some of them.