The “Contributor’s Story” series is intended to provide a face and voice to our major open source contributors and community members, an overview of the projects they are working on, and the successes and challenges contributors face when developing.
For this blog post, we spoke with Aanand Kainth, a VISSL contributor working on designing and implementing an event storage mechanism through the Major League Hacking (MLH) Fellowship.
“I’d like to be able to apply my skills to new domains and learn about writing coupled business logic.”
VISSL is a computer VIsion library for state-of-the-art Self-Supervised Learning research with PyTorch. VISSL aims to accelerate the research cycle in self-supervised learning: from designing a new self-supervised task to evaluating the learned representations. Here are a few of Aanand’s thoughts throughout the process of contributing to VISSL for the first time.
Tell us a little bit about yourself and your current experience in the MLH Fellowship.
As someone who grew up in the Silicon Valley, it has always been my dream to work with software. A few weeks after COVID-19 closed out the option of a summer internship, I noticed the MLH Fellowship on a Dev.to advertisement, and I applied the very same day. And that's how I ended up spending my 2020 summer working on VISSL and BentoML through the Fellowship.
Where did you first learn about open source? How did you get started using/contributing?
I learnt about open source because I grew up using it so often! My parents introduced me to GIMP instead of Photoshop, and once upon a time, I wrote my essays in LibreOffice. When I started writing my own code in IDEs like IntelliJ, and found that I could fix any issues I encountered myself, it wasn't long before I started doing that in a lot of what I used
Describe the project you are currently working on.
I've been working on Facebook Research's VISSL, a library for state-of-the-art self supervised learning methods. Our larger project this winter and spring have been designing and implementing an event storage mechanism so that it is easier to run autopsies on and monitor models using many different tools like Tensorboard and HiPlot without littering the VISSL codebase with if-else clauses.
How did you initially go about tackling the issue?
We (my partner-fellow Grace and I) worked with our amazing mentor (Priya) on designing an architecture to which all logging backends in VISSL would store their data within. We then implemented various event writers for Tensorboard, JSON files, and standard output.
What roadblocks or problems have you faced thus far in your contribution?
The VISSL codebase is a very complex beast, and both Grace and I were new to self- supervised learning. It has been challenging to wrap our heads around what responsibilities various components have, to the end that we can detangle them and make them clearer.
What is the current status of development?
We have opened a pull request for the issue, and we hope to wrap it up within the next week.
What have you learned about the project, development, or open source thus far?
These few months have been very enlightening, especially for me to understand where I have a difficult time navigating unfamiliar code bases and picking up strategies to keep working even if I don't know exactly how some pieces fit together.
I have also gotten substantial practice taking advantage of advanced Git tooling, to rewrite histories, fix 3 way conflicts, etc. with a lot of guidance from the maintainers and mentors from VISSL.
What advice would you give future contributors to the open source project?
The best advice I can give future contributors is to READ. That was probably the most effective way that I had to familiarize myself with how various tools, or even VISSL itself worked. Read code, read articles, listen to mentors, and share what you learn.