A little over a month ago, a university class fellow of mine, who is one of the community leads of Facebook Developer Circle – Lahore, posted about Facebook’s Open Source Mentorship Program.
I applied for the program with no expectation of getting in because well, little experience and a blank github contribution graph (although it did mention that you don’t need to have any experience or any contribution on github but that’s always kinda hard to believe.) I did get in though. I was overjoyed and absolutely thrilled when I got the acceptance email. Honestly, this was more because it was by the Facebook than because it would be an incomparable learning opportunity.
Facebook Open Source Mentorship program is a 4-week program to teach the mentees about open source and open source at Facebook. Half way through the program, I learned that without a doubt, it is definitely an amazing opportunity to learn a lot while giving back to the open source community at the same time.
I was assigned Martijn Pieters as my mentor who is a Software Engineer at Facebook, one of the top contributors at Stack Overflow and a Python Legend. It was a bit intimidating to work with someone who is so experienced. But he was really friendly and humble from the beginning. He assigned me the project osquery in our first (online) meeting.
About the projects
Osquery is an operating system instrumentation framework that gives you the ability to query and log things like running processes, logged in users, password changes, USB devices, firewall exceptions, listening ports, and more. In simpler terms, it allows you to query and display your OS details as SQL Tables.
As it turned out, it was not very simple to set it up for development (building binaries and everything) on MS Windows. There are a lot of dependencies which take a considerable amount of time in downloading if you don’t have a stable internet connection. It does say that you can build the binaries on Windows but I found out that you have to take extra steps and make changes in the source files to compile it on Windows. I was in the process of setting it up on my system when I had my second meeting with Martijn. He suggested me a couple of more projects, in case I am struggling with this one or not really interested in it. One of these was PyTorch.
PyTorch really caught my eye. Being a beginner and an enthusiast of Machine Learning, this was something that aligned directly with my interests. PyTorch is a python package that provides two high-level features:
- Tensor computation (like numpy) with strong GPU acceleration
- Deep Neural Networks built on a tape-based autograd system
You can read more about it here.
I contributed to torchvision and pytorch packages of PyTorch. Torchvision is a PyTorch package that has datasets loaders and models for common computer vision image and video datasets (MNIST, CIFAR, ImageNet etc.). Pytorch is the main PyTorch package which provides its core features.
I would write more about the tasks I worked on, in a separate blogpost soon (hopefully)!
Not only did I have a very supportive mentor but the PyTorch people were also very community-responsive. They replied to all my silly questions at all hours and always guided me in the right direction, telling me about the best practices and right ways of doing things. Their reviewer responsiveness was surprisingly fast and they were overall massively helpful.
Why work in open source?
Being an engineer at a services-based company, I had no experience of working in the open source before. I never understood how people find the time and energy to work in open source. When I actually worked on it, that’s when I realized that it is completely worth it. Here is why:
Portfolio: Working in the open source is great for your portfolio. Gone are the days, when you had to write on your resume what you have done. If you have worked open source, then you can just give the employer a link to your GitHub (or whatever you use) profile and it will speak for itself.
Contacts: You get to know so many people when you are contributing to an open source project. The people you get to make contacts with and the things you learn from them is really valuable.
Making the world a better place: Yeah sounds fancy but holds true (kinda!). There is nothing comparable to the amount of value you provide to the software community by contributing open source. There are actual people sitting out there who are doing their work more easily because you contributed to an open source framework.
Owing to the abundant amount of services-based companies and the secrecy their clients demand, a lot of people especially in Pakistan, India, Bangladesh etc. do not have the insights into how important it is to contribute to open source software. With a little motivation and right guidance, people of these regions with their very useful skills can be a true asset to the open source community and make it bigger and better.
I have been told that there will be similar programs in the future and I recommend everyone with all sorts of skills, expertise, and experience to look out for them and apply to them. Let me know if you have any questions. I’ll be happy to help in any way I can.