In 2017 I was fortunate enough to be invited to join the Magento Community Team, a small public-facing team that handles issues and PRs on GitHub lead by Max Yekaterynenko. When you submit a PR or an issue, it is this team that will communicate with you about the submission.
I had previous experience on open source software (OSS) projects from working on Turpentine, a Nexcess product, and one of the most popular extensions for integrating Varnish and Magento 1. Though I’ve been managing the Turpentine repo for over 2 years, I learned much in my first 6 months in the Magento 2 repo.
A day in the life
Let me say to start with, working as a maintainer on any project gives you a unique perspective on the state of the platform, as well as a clearer view of the software’s immediate future and its community.
So far, I’ve processed +55 PRs and interacted with more than 26 contributors. Some of them were new to contributing, whereas others were seasoned pros. This difference in experience really makes for a fascinating challenge. In addition, the types of contributions varied. They ranged from small typos to big-feature requests.
Contributing is easy, thanks to GitHub. Most of the process is explained in the contributing.md file in the repo. This file exists in almost every OSS project on GitHub and includes general guidelines on how to contribute to that project.
To make things even easier, we also provide templates for submitting issues and PRs. These give you almost everything you need to report an issue or submit a pull request. We require the use of the templates because it makes it easier for us to reproduce the problem, so we don’t have to waste time mining for details.
Once we have all we need from you, it’s time to process the code. We:
Determine if this is a bug or a feature request
Make sure it’s in the correct branch
Give the code a read
Run automated and manual tests for quality assurance
After all the travelling this year, I had the chance to gather opinions from lots of contributors and developers. My main takeaways from these conversations is that new collaborative approach has helped the software grow exponentially and helped thousands of users.
From my time as a maintainer of the Magento repo, here’s a few other things I learned:
Not all contributions are the same. While the process is the same for all the submissions, every contribution and even contributor is different. I processed PRs from seasoned developers, first time contributors, and everyone in between. I had to adapt to varying levels of expertise and find the best way to help each individual and their submission.
OSS is hard to maintain. Right now, Magento 2 has more than 500 contributors, 1000+ open issues and 100+ PRs. The project reaches across countless national borders and work cultures. Only by managing expectations and communicating can one hope to succeed.
Maintainers are people, too. From time to time, we must reject submissions from people we know. We don’t enjoy it any more than the person being rejected. It’s important to remember that contributors are welcome to have opinions on the code, but Magento has the last word regarding what’s included and the scope of the submissions.
Partners and companies should be involved in OSS. While Magento might have the resources to continually enhance the software platform, partners bring valuable real-life experience along with the bodies needed to quickly implement solutions to issues they identified during commercial development.
Our community is awesome. Managing a repo is challenging, but I can’t recall a single issue that wasn’t solved after some thoughtful discussion. Different opinions might take time to resolve, but they usually produce the best solutions. Patience is almost always rewarded!
Seriously – it’s awesome. Magento has a Code of Conduct for its contributors and developers, but we rarely need to enforce it. Our community is inclusive and polite, making it easy to work together to make Magento better.