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 Mahmoud Ali, a Mapillary contributor working on issues and code efficiency through the MLH Fellowship. Let’s learn from them how we can start contributing to Mapillary.
“I had the opportunity to work with and learn directly from Meta's senior-level developers. Working on RapiD exposed me to the mapping community and taught me something new every day!”
I'm a senior computer science student at Cairo University in Egypt. Besides MLH and school, I work as a part time freelancer.
It’s fascinating how people put in the time and effort for a job for which they are not directly compensated. It provides me with means to develop my abilities on production-level codebases, while also seeing my work as something that makes the lives of daily software users simpler.
I am currently working on Mapillary, a project that offers map data at scale from street-level imagery.
The maintainers for the project, Benjamin and Christopher [Beddow], were kind enough to set introductory level issues and scavenger hunts to make our first interaction with the codebase as seamless and engaging as possible. Apart from that, we regularly had meetings to discuss any blockers and were always willing to explain important topics even if they didn’t directly relate to the project.
The project I'm working on is a complex one. I came across a lot of concepts I wasn't familiar with. However, Benjamin was always there for me and helped me understand those concepts, no matter how simple or complex they were.
I'm almost done with the main focus of my contribution. I’m working on fixing a bug after which I will clean up the code and add tests to accommodate for the new layer I'm adding.
I learned a lot about applying the basics of functional programming. I saw examples of how to decouple my code in order to create functions with no side effects, how to use Git and how to use D3.js to create complex UIs. Apart from that, I also learned about how to contribute to open source projects and how to structure my pull requests to make it easy for reviewers to assess my contribution.
The open source community is so welcoming and friendly. You will most likely get answers for your questions and even guidance if you ask the right people.
It might seem overwhelming at first, but it gets easier with time. Over time, you get used to the architecture and design decisions and you start appreciating them. Start with an easy task on the project no matter how good you are with the technologies that are used in the project. Try to get feedback as soon as possible so that you know you're on the right track.
We would like to thank Mahmoud 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 Mahmoud for their continuous contributions to the Meta Open Source ecosystem. If you’re interested to learn more about Mahmoud’s work, follow them on GitHub.
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.
To learn more about Meta Open Source, visit our open source site, subscribe to our YouTube channel, or follow us on Twitter and Facebook.
TAGS
Sign up for monthly updates from Meta for Developers.