Cracking Google Summer Of Code
Devansh Agarwal is a 2nd Year Student pursuing CSE at BITS Goa. We caught up with him to understand how he cracked Google Summer of Code.
What’s your GSoC project?
This summer I will be working on a native android application “Mobile Wallet” to make the application consume Mifos’ Open Banking API layer and work on adding support for external payment systems including Mojaloop, Hover, and GSMA mobile money. I shall also be working on improving the user interface of the application, writing tests and on adding other features to migrate the current Mobile Wallet 3.0 to a robust version 4.0.
Who are you working with?
I am currently working as a student developer with The Mifos Initiative, a U.S. based non-profit organization that aims to provide open-source banking service to speed the elimination of poverty by enabling financial service providers to more effectively and efficiently deliver responsible financial services to the world’s 2.5 billion poor and unbanked.
How did you get involved with the Mifos Initiative?
I first got involved in the Mifos community way back in August 2019, when I wasn’t sure of participating in GSoC 2020 program. I just wanted to learn more about Android development, so I searched for open-source organizations on GSoC’s website (btw I think GSoC’s site a pretty decent place to find open source projects of your choice) and forked some of the projects that I liked and began going through their codebase. With time, I got more involved with the Mifos community and eventually started contributing more and more.
How did you start contributing to the Mifos Initiative organization?
-Way back in August when I started going through Mifos Mobile’s codebase (another Android application project under The Mifos Initiative), I couldn’t understand the codebase at all. I had never worked on such a huge codebase earlier and secondly, at that time I didn’t know a lot of the concepts and libraries used in the application’s codebase. So I picked up courses from Udemy and went through online tutorials and developed some applications to learn new things. I tried to copy the architecture on which Mifos Mobile is built upon in my personal projects and tried to learn as much as I could. After spending the latter half of August and the entire month of September doing all this, I had a decent grasp of the codebase and I did my first contribution in October 2019.
How to get started. What is the first step someone must do who aims to clear GSoC?
In my opinion, there’s no defined road for clearing GSoC and it really depends on how much you know about the technologies used in the project for which you are sending a proposal. I, for example, didn’t know a lot about Android development initially so I learnt while contributing to the projects. This surely resulted in a decent number of contributions to the projects from my end, but this is not the only way to clear GSoC. I have seen people with excellent development skills starting contributing as late as in March and still getting selected for GSoC. Without a doubt, these people have to show their skills to the community members by working very hard and making significant contributions to the projects in a short period of time but for them, I think the initial phase of understanding the codebase and getting familiar with it is much easier than people like me who were learning gradually by contributing.
So if you are someone who already has a great knowledge of the technologies used in the projects you are planning to apply for in GSoC then you can surely start late but remember you probably will need to work hard and do decent contributions to develop enough confidence among mentors for you to be considered over a long-time contributor.
And if you are someone who is new to the field in which you are planning to contribute, my only advice will be to start early. Generally, people start around December — January but it never hurts to start early.
One last thing, be consistent and do not give up. People over the years have combinedly worked on the codebase that you are trying to understand, so of course, you won’t understand in the first go. Just stick around for a little bit, try to go module by module or layer by layer, and get an understanding of them first. In the process, you may learn of a lot of new things that may further enhance your understanding of the codebase
What prep did you do for GSoC?
To be honest, I didn’t do any special preparation for GSoC, I just tried to get better and better in Android application development and be active within the community. I tried to get my doubts cleared from other community members and help other contributors as much as I could. For the GSoC application process specifically, I tried to know more and more about the project, its codebase, and the community before drafting a proposal.
What did you do differently which ensured your selection?
I had been a member of Mifos’ community and a contributor for around 6 months before the GSoC’s application actually started. During this period I believe I made a pretty decent number of contributions to their projects and had been constantly active on the community’s Gitter IRC channel.
I tried to be as thorough as I could while preparing my GSoC project proposal and I believe this combined with my decent contributions to their codebase made community members consider me for one the projects that I applied for.
How’s the GSoC experience?
So recently I completed my first round of GSoC’s evaluations and I am almost halfway through my GSoC journey. The projects got announced on May 4th and right after that, the community bonding period started where we got a chance to interact more with the community. I had to learn with a few new things to start working when the coding period began (1st June this year). No doubt the scope of work that I am doing now is much higher than what I used to do when I was working before and did I have my share of blockers along the way but in-all the journey has been amazing and challenging.
Why do you recommend GSoC, and to whom?
As most of us know clearing GSoC awards a pretty good stipend but honestly it isn’t why one should be interested in it. According to me, contributing to open source and working as a GSoC student on a project are one of the best ways to learn more about the things you like. I personally learnt a lot during my journey and after clearing GSoC I believe that the learning factor is more important than the stipend itself. You get a chance to work on amazing projects with people around the world. The exposure and connections that one makes, in my opinion, is huge and surely would help a lot in the future. In fact you become a core member of the community with whom people can discuss ideas, project plans and what not.
According to me, GSoC shouldn’t be considered as a next JEE and I would suggest only those people to consider participating in it who are interested in working on projects. Clearing GSoC just for the sake of the GSoCer tag is not something I would suggest.
I do not know most technologies listed in the GSoC projects. How will I cover them all?
I don’t think that one needs to be a “pro” or should know all the technologies used in the project in order to begin. Surely one should be familiar with some of them but this is enough to begin provided you are starting soon enough to devote sufficient time for both learning new things and for contributing to the project. No one expects you to make 1000 lines(my way of saying a decent PR xD) pull request on the first day. So it’s perfectly fine to be unfamiliar with the codebase and technologies used in the beginning. Try contributing in other ways like documentation changes or small pull requests and continue learning new technologies on the way. Trust me, if you consistently go through the codebase trying to learn new things, you will be able to make a 1000 line pull request.
How should non-Cs branch students prepare for the GSoC and will branch matter here?
The branch doesn’t play any role in GSoC selection. CS students may have a little head start from courses like Object Oriented Programming or DBMS etc. but that’s all for the difference. A person’s branch in college plays no role in GSoC’s selection. Most of the mentors value a student’s contributions, involvement in the community, and project proposal for his/her selection.