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 contributors face when developing, and best practices for getting started in open source. For today’s blog post, we have Omar 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.
“MLH has been everything I expected and more. This was my first experience contributing to open-source, let alone on a large Meta project that has thousands of daily users!”
Hi! My name is Omar Ali and I'm a senior engineering student from Cairo, Egypt. For as long as I can remember I have been intrigued by software. It wasn't until two years ago that I discovered my passion for software development. This was also the time that I started taking self-learning seriously as I don't come from a conventional CS academic background and my undergrad studies are in electrical engineering. I'm interested in full-stack web development with a major lean towards the backend, data science, and learning in general! In addition to learning, I also love teaching software concepts and technologies!
Solving real-world problems and understanding how everything works under the hood are two of the main reasons that I'm extremely passionate about open source contributions. I want to become an engineer of software, not just a user of it. Over the course of my not-so-long journey of implementing projects and learning new software concepts and technologies, I've been impressed by how competent and elegant technologies can be. This is what drives me to be a part of the process of building those technologies to further enable other developers and to ease their development experiences. Additionally, being an open-source citizen enables me to give back by contributing to the technologies that I use frequently. Also, open source contribution satisfies my life-long passion for learning, implementing, and sharing my knowledge with others. I can't forget the sense of community that open source naturally brings to the table. It's a great networking experience to meet lots of like-minded people from around the globe.
I was assigned this project to work on during my second week of the MLH fellowship. Prior to that, I had no idea of its existence so it was a blessing really that I got to work on it!
Working on a new SDK from scratch was no easy task; it was my first time developing a Python SDK, let alone an SDK that handles geospatial data. This introduced me to a new realm of software development: Geographic Information System (GIS). I got to learn about how huge mapping systems are built, how geospatial data is represented in different forms such as GeoJSON, WKTs, and shape formats. Also, I got a glimpse of how computer vision is employed to detect different features within street-level imagery, and how to retrieve those detections as bulk data that can be used in different scopes of analysis. On the technical side, I learned (and used) new design patterns such as the Adapter pattern, which I used to build a custom client to wrap up the Python requests library, the Pipeline pattern, which we used for proper filtering of the response data, and a driver-controller pattern, which we employed as the main design of the SDK. I got a deep understanding of how HTTP requests are performed and was introduced to sessions, which I facilitated to build the client interface with better performing API requests. I learned how to publish a Python SDK on PyPi.org! Additionally, I became extremely fluent in Python because not only I learned all those new concepts but also got to fully implement them.
Some of the resources I found useful were:
As of this moment, we're reaching the end of the development of an MVP for the SDK, with only 2 out of 12 of the main requirements remaining in addition to unit tests and documentation.
I learned about the intuition behind Mapillary and how useful it can be to users from a myriad backgrounds. Also, the development process was really organized, which gave me the chance to focus on the actual work and learning I have to do to get from point A to point Z. I was introduced to so many concepts and design patterns which I employed while building the project as well.
The project introduced me to GIS, geospatial data representation, and how large-scale mapping systems are built as a whole. It was informative in so many ways and it enabled me to strengthen my technical understanding of Python and backend development. Additionally, working with Christopher Beddow and Saif Ul Islam,the main collaborators on the SDK, gave me the opportunity to learn a lot from them. They are extremely technically-capable engineers and they had great insights that influenced the development of the project.
Firstly, read the documentation and try to grasp the intuition behind how things are built the way they are and why some decisions were made. Secondly, all contributions are appreciated! No matter how small or big they may be, being an open source citizen is a great opportunity to immerse in a community of like-minded people to learn and share knowledge!
We would like to thank Omar 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 Omar for their continuous contributions to the Meta Open Source ecosystem. If you’re interested to learn more about Omar’s work, follow them on LinkedIn and 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.