OK. I had been programming in PyQt4 for about three months, and it was becoming quite monotonous. I wanted to do start doing something different. Moreover my other projects weren’t going as good as expected. Still searching for something to do, was it just a co-incidence that GSoC was announced that day? I would rate my programming ability, somewhere just above average and my knowledge of python around intermediate. I also knew a bit of ‘C’ that they had taught in college. I was comfortable till arrays, but when pointers started, umm.. well they pointed me away from C. And as for my knowledge about other programming languages, the less I speak about them, the better.
If I had to have any real shot at GSoC, that was my best opportunity to increase my skillset . I had tried to contribute to open source before for organisations like Orange and Ascend but never reached much after building from source (Quite lucky because those two organisations did not make it to GSoC after all). To begin with mentoring organisations can be broadly classified into OS based and stuff related to maths, CV, ML. Once I tried to write a plugin for Rhythmbox but for some reason I stopped in the middle. As far as Linux goes, though it is my primary OS right now, sincerely speaking I never knew much beyond installing packages and configuring proxy. Also I had just begun with CV and I knew it would take me quite a lot of dedication, for a project related to CV. Seriously not knowing what to do, I just googled “gsoc 2013 python ideas” and the first search result was sympy. I randomly skimmed through the ideas, and found the ones related to the ordinary differential equation solver quite interesting. Not wasting any time, I forked sympy and started looking through the source.
For the first few hours, I couldn’t understand anything and I felt disappointed. Then I introduced myself to the list, and I was advised to solve existing bugs in the ODE module, instead of looking through the entire source. I did nothing after that, since my exams were there (which I screwed up anyway) , and after they were over I looked into the bug tracker and I found a bug which I believed I could solve. Randomly littering the source code of the ODE module with print statements (Yeah, I’m a beginner) , and after spending two hours, I finally understood what was going on. And then I managed to fix the bug . I ran tests and then sent my first Pull Request. Damn, I had forgotten to add new tests for the bug fixed . After adding tests finally https://github.com/sympy/sympy/pull/1803 , it got merged. Woohoo! Nothing can explain that small moment of joy of your first merge. I then played with the source code using random examples, and I managed to find out a couple of bugs myself. I also found support for a few types of first order differential equations missing, and after a lot of work and discussion on my PR’s they got merged.
In between all this, I had to work for my SoC proposal as well. I first proposed a few ideas, but then I was told that they were trivial in a sense and could be implemented in a single Pull Request. I found something called as a Lie Group solver and I spent a week reading about it. After a lot of edits, I submitted my proposal for proof reading to the sympy community. Aaron Meurer the lead developer of sympy, told my proposal to be good. He also told me that Partial Differential Equation support is missing in sympy and I would have to build the infrastructure myself. So I started to work on it. After two weeks, my PR got merged in master https://github.com/sympy/sympy/pull/1970 and now sympy can solve and check the solution of the most basic partial differential equation.
Before I go any further, I would like to thank a few people who helped me reach this far. First of all my parents, who encouraged me to do what I like. Then Jay Rambhia , who introduced me to python, without whom I wouldn’t be doing what I am doing now, Priyans Murarka who kept pushing me on, Manoj Kumar Pandey Sir, my maths professor in semester 2, who gave me the required papers to study about the lie groups solvers, Debajyoti Datta, who gave suggestions to my proposal, the sympy community in general who treated even a rookie like me as a proper professional coder, Sachin Joglekar for his timely help in git. I definitely have more people to thank, but I wouldn’t want this post filled with names of people
I submitted my GSoC Proposal to melange today, and I have kept my expectations low. Overall this sem has been a roller-coaster ride (with many of my expectations , which I wouldn’t want to mention here crashing) and I hope it doesn’t disappoint any further. Also results are on May 27th, two years back I had given BITSAT the same day and got my “dream branch” (Yeah, Mechanical) which I hadn’t expected at all.