In A Contributor’s Story series, our major open source contributors and community members give us insight into the projects they are working on, the successes and challenges they face when developing, and best practices for getting started in open source. For today’s blog post, we have Fatima Zahra Chriha, a LabGraph contributor working on issues and code efficiency through the MLH Fellowship. Let’s learn from them how we can start contributing to LabGraph.
“I am so grateful to Meta and MLH for the chance to work on an incredible project such as LabGraph. I received help from the contributors of Labgraph, the project maintainer and my pod leader. Today I can proudly say that I was able to contribute to the improvement of Labgraph!”
Originally from Morocco, I am a junior studying Computer Science and Mathematics at Felician University, and I will be joining Amazon as a Software Engineering Intern for Summer 2022. Currently, I am an MLH Fellow contributing to Meta’s open source LabGraph project, and I’m also part of the new partnership between Girls Who Code, Meta, and DojaCat where I’m working on designing Instagram effects for DojaCat and Coachella.
What excites me most about working on open source projects is to be able to look at a project and pinpoint a feature and say “I made that!” I find it fascinating to be able to contribute to a huge scale project that solves real-world problems. In addition, the open source community is extremely supportive and talented, which helps me grow as a developer.
I am working on LabGraph, a Python framework for rapidly prototyping experimental systems for real-time streaming applications.
The first time I heard about this project was when I was assigned a project in the Fellowship. To be honest, reading the description of LabGraph intimidated me at first because it is mainly geared towards researchers. However, with the help of my maintainer Jimmy, a LabGraph contributor, and my Fellowship teammate, I was able to familiarize myself with the project.
The first step was to read the documentation and grasp the architecture behind LabGraph’s logic. Next, I started to understand more about what my task entailed and asked my maintainer more clarifying questions about it, which helped me deconstruct the problem into smaller pieces. Meeting with the previous LabGraph contributor as well as my teammate was extremely important to bounce ideas around, which helped put me on the right track.
The first roadblock to getting started with LabGraph was understanding the code base as it is a large-scale and complex project. To overcome this, I created an overview diagram of the system, which allowed me to see its inner workings from a bird’s eye view while digesting one portion at a time. Another challenge I faced was when I was assigned a task that used tools I wasn’t already comfortable with. As a result, I had to not only understand the scope of the project, but the tools themselves in order to become a core contributor. This pushed me to learn new technical skills and implement them on the spot, which is a great way to learn any new skill in my opinion.
Definitely the MLH Fellows! They are the most valuable resource out there. Everyone is willing to jump on a quick debugging session with you and I think that’s super valuable.
Another resource was the LabGraph docs, which were extremely helpful in understanding the codebase. And finally, StackOverflow was a very useful resource while working on this project.
I have a pull-request opened [since merged] where I designed the UI for real-time messaging and the logic behind real-time data rendering. I am currently working on connecting the stream of data coming from the backend with the frontend. I also designed a solution to integrate Network Socket with LabGraph that allows new devices to automatically be usable in LabGraph.
This experience was enlightening—I learned how to contribute to a bigger scale project in a field that I am not familiar with. The open source community definitely exceeded my expectations by always offering help, especially the MLH Fellows. And one of the important things I learned in this project is to never shy away from asking for help because most likely there’s always someone who is willing to offer it.
One of the best takeaways from working on this project is learning how to communicate my progress with everyone. This is especially important in a remote environment; it's easy to be invisible, and no one will know what you’re working on, which hinders one’s progress. That’s why the best thing is to always be engaged, always ask questions and share the details of the solution you are designing, discuss if you are facing any blockers, have opened a PR, etc.
Furthermore, by working on LabGraph I was prompted to leave my comfort zone and learn new technologies in order to provide value to the project. This proved to me that having strong technical knowledge paired with a curiosity to learn new things will lead me to success in the tech field.
The advice I would like to give to future contributors is to never be afraid to ask questions. There is always someone out there willing to help whether it is fellow contributors, the maintainer or your pod leader.
Make sure to document your contribution, especially with open source projects. Always assume that someone will build on top of what you’ve built, so try to make their job easy. Finally, before you jump on a bigger scale issue, familiarize yourself with the codebase by knocking off a smaller PR. This not only helps you hit the ground running, but also it gives a boost of confidence.
We would like to thank Fatima for taking time to share their experiences with us. It was very interesting to learn about the process of contributing to open source and we would like to thank Fatima for their continuous contributions to the Meta Open Source ecosystem. If you’re interested to learn more about Fatima’s work, follow them on LinkedIn.
Open source at Meta is about more than just code. It's also about facilitating environments where collaborators from all backgrounds and experiences can come together to discuss ideas, foster innovation and work on projects together.
This blog is a part of A Contributor’s Story series where we hear from various contributors about their experiences contributing to the open source projects under the Meta Open Source ecosystem, how to get started, the challenges and successes faced when developing, and what excites them about open source. Look out for more blogs from A Contributor’s Story series where we learn about various other open source projects and how to start contributing to them.