Hey! I am writing this series of blog-posts for GSoC and this is the first one among them and there are many more to come! I’ll try my best to share my experience of this cool summer! (Not really cool though..)
So what is this Google Summer of Code?
Google Summer of Code is a global program focused on introducing students to open source software development. As the name suggest, this programme is hosted by Google in which various open source organisations participate with their exciting projects. And you’re mentored by some of the best people from all over the world in their respective fields. You can check out Google Summer of Code official website here.
How did I got selected?
You will find many guides about how to get selected for gsoc, of course better than this one. But I am sharing some stuff from my experience that I think is important.
- First one, choose the organisation only if you are interested.
- It’s okay even if you have the rough idea of project. If the idea looks interesting to you, go ahead! You can learn as you go.
- Research is very important! Don’t compromise here in your proposal. It’s the most important part. This shows how much effort you have put in your proposal.
- Your goals should be realistic.
- Have some valuable discussion with your mentor.
- Last one, it’s good to submit only one proposal, as it’s good to have one good proposal rather than having two-three average proposals. And be excited about this!
My story was little bit different though. I was not so sure about my skills. I initially started as “I will try to observe the GSoC procedure by participating, so that I can have an upper hand next year.” And that was not a good idea. As I went ahead with the procedure, put my efforts into it, researched about the project, I was able to realize, that efforts are more important than skills. So, if you’re planning for next GSoC, put all your might into it and Good Luck!
About my organisation and project..
I got selected in CuPy, which is an organisation under NumFOCUS umbrella. CuPy is a NumPy-compatible matrix library accelerated by CUDA. That is it can make use of NVIDIA GPUs to perform computations faster than NumPy.
My project involves implementing a fallback mode for CuPy. That is, it will call functions not yet implemented in CuPy from NumPy and perform necessary data transfers under the hood. It’s really cool! You can take a look here.
Moreover, it’s completely in Python, the language I love! I will get to go deeper in Python internals and see a different side of Python. It’ll be new and great experience.
Community Bonding Period..
This is a period where Google expects that, selected students should formulate a strategy with mentors about the project, get to know the codebase they are working on, setup the repository, interact with the community and so on.
I got to know my mentors Sean Farley and Akifumi Imanishi. They are both great! I had a video meeting with Sean on Google Hangouts. I was very nervous as it was my first meeting and I am not that much good at English. But I think it went well. We got to know each other and talked a bit about project. It was mostly introductory meeting.
In the end of community bonding period, I discussed about how to get started with project with Imanishi-san. He was great! I troubled him with my question for 4-5 hours and he was very supportive. Also we decided about daily reports and blog-posts. We decided to implement fallback_mode
as a sub-module of cupy. And it has to show following type of behavior:
# import numpy
from cupy.fallback_mode import numpy
x = numpy.array([[float('nan'), -1], [float('nan'), 1]]) # cupy.array
result1 = numpy.nanargmin(x, axis=1) # Converts to numpy.array, calls numpy.nanargmin and returns cupy.array
result2 = numpy.nanargmin(x) # Returns primitive int
print(result1) # Output: [1 1]
print(result2) # Output: 1
For the remaining days of community bonding period, I was thinking, googling about possible ways to approach fallback mode and implementing some snippets to get a feel of it.
Now for the title of this blog-post, as of yesterday May, 27 the community bonding period is over and coding period has finally begun! I am really excited for my upcoming journey in Google Summer of Code!