The mechanics behind Magento's contributor magic

Commentary: Magento gets ~50% of its code from a thriving community, which is impressive. More impressive is how the company is set up to make this happen.

opensourceistock-479493570boygovideo.jpg

Image: boygovideo, Getty Images/iStockphoto

In a world where so-called open source companies seem scared to actively invite others to use and contribute to their source code, Magento (now owned by Adobe) stands apart. Last year I wrote about how the company's community engineering team has helped to significantly unlock community contributions to Magento's core product code, resulting in upwards of 50 to 60% of all shipping code coming from those not on Magento's payroll. 

Recently, I caught up with Ben Marks, Magento's chief evangelist, to glean more insights that could be helpful to open source entrepreneurs interested in best practices.

SEE: How to build a successful developer career (free PDF) (TechRepublic)

Doing well by contributing much

As a refresher, 60% of the third-party code contributed to Magento comes from non-partner or otherwise unaffiliated developers, while 40% derives from partners. While some of that code is simple bug fixes, Magento's community is also responsible for large-scale contributions such as Multi-Source Inventory, Adobe Stock Integration, and PWA Studio, among others that can be seen at opensource.magento.com

Why is Magento's community so active in contributing to a for-profit company? Because it's not just Magento, Inc. (now Adobe) that profits therefrom. 

In Marks' words, from the earliest days:

Developers were excited about a professional-grade open source, PHP-based commerce app, and it self-assembled.... The [Germans] and Dutch...were heavily represented early on and imbued the nascent community with their orientation to open source, which was all about participation and giving back. Magento's popularity was explosive, money was good, but there was documentation for a PHP app unlike any other. People were forced to spelunk, step-debug, and help each other. I believe that this spirit has been present ever since. 

The mechanics for encouraging contributions required more than goodwill. For years Magento had a thriving ecosystem of users, but nowhere near the level of contributions to the core server as it enjoys today. 

Pitching in, one line of code at a time

This all changed a few years ago with the introduction of the Community Engineering team, which "coordinate[s] and facilitate[s] anyone's ability to contribute to code," Marks said. They do this in a variety of ways, including building the tooling that makes it easier to contribute while also monitoring pull requests to ensure timely responses.

The launch of Community Engineering in 2017 was a "watershed moment," notes Marks, "a chance to prove our intuition that we have one of the most engaged and invested communities in open source." 

Surpassing the 50% mark for NLOC [new lines of code] contributed by our ecosystem (and to a substantial release involving a re-architecture of inventory modeling) demonstrated that we were correct. However, NLOC is a vanity metric (take for example the adage that good developers write code while great/Zen-like developers delete it – code quality is not scalar). What is more interesting to us and more impactful for our ecosystem is the volume of improvements and features we deliver together. We track two main metrics for this: number of pull requests and net new contributors. From 2017 through 2019 inclusive, we show ~2,300, ~6,600, and estimate ~7,200 PRs respectively. For 2019 we show ~30% growth in net new contributors YoY.

In summary, Magento has done two things particularly well: Foster a sense of community and pave the way for that community to meaningfully contribute to and profit from Magento. As Marks put it to me, Magento contributors feel an "increased sense of control that comes from having a seat at the table, being heard, and able to have meaningful impact." Any open source company/community can do the same, if willing to invest as Magento has.

Disclosure: I work for AWS but nothing herein directly or indirectly relates to my work there.

Also see