Drupal Commerce 2.x: 2019 year in review
Last year was a very productive for Drupal Commerce. We saw continued growth in overall usage, community contribution, and core feature availability. We’ve got big plans for 2020 but first wanted to pause to reflect on what we accomplished in 2019.
A year of growth
We started last year with 7,000 reported installs. Since then, we’ve gained another 3,000 - a 40% increase! The number of community members on Drupal Slack (in the #commerce channel) grew from 1,000 to 1,560. The number of listed payment gateways, a metric we use to track expansion to markets around the globe, grew from 90 to 138 with more on the way.
|Drupal Slack members||550||1,000||1,560|
A year of contribution
Throughout 2019, 194 people contributed to Drupal Commerce and its dependencies (Address, Entity, Profile, State Machine) compared to 164 in 2018. If we include the ecosystem modules (Recurring, Shipping, Pricelist, and hundreds of others) that number doubles.
In total, 331 people have contributed to Commerce and its dependencies since the release of Commerce 2.0 in 2017. The Drop is always moving, and so are we.
A year of releases
Commerce project releases took us from 2.11 to 2.16 last year. The 2.12 release introduced a new InlineForm API, improved email handling, and registration after checkout. The 2.13 release added support for duplicating Commerce entities from the UI (e.g. duplicating product variations to speed up data entry). The 2.14 release added a brand new address book to core, including support in both the checkout / account management interfaces and the back-end order management interface.
The 2.15 release added support for collecting, validating, and verifying EU tax numbers. It also included a new number pattern submodule for generating sequential order and invoice numbers. We ended the year strong with a 2.16 release that added cart expiration functionality, promotion start and end times (in addition to dates), and a variety of Views integration improvements.
The address book effort was one of our most consequential initiatives since the 2.0 release. It had a large spillover effect, improving several other areas of the platform. Most notably, it allowed us to focus on the Profile module for a while, during which time we tagged 5 release candidates and ultimately a full 1.0 release. Those improvements will be shared by both Commerce and non-Commerce users alike.
We continued to improve Commerce Pricelist, bringing it to the release candidate stage with support for exporting prices (allowing export-modify-import) and a new per-variation UI.We also tagged two beta releases for Commerce Recurring, introducing free trial support and fixing most known bugs. We are continuing to expand its user interface capabilities while preparing it for a release candidate.
We are grateful for Acro Media’s continued investment in Commerce Migrate, which saw over a 100 commits and got its first release candidate. Similarly, we appreciate the work of Andy Giles from Blue Oak Interactive and other community members to bring us a stable release of Commerce USPS with ongoing improvements.
A year of exciting new modules
We didn’t just work on existing modules, we also started a few new ones!
- Commerce Invoice lets you generate invoices from placed orders and allows invoicing multiple orders at once. It also features PDF export with full support for translations (one PDF per language).
- Commerce Product Tax provides a UI for selecting applicable tax rates on a product variation. This is useful for products that are tax-exempt or taxed at reduced rates, which previously required developing a custom tax resolver.
- Commerce Store Override provides per-store overrides of Commerce content (i.e. products and product variations). This allows each store to have its own product title, category, etc.
This work was all client funded and directed by real world use cases. Thanks to agencies like Factorial and Ny Media and users like Matsmart for their willingness to fund open source software development for the benefit of the Drupal community.
We decided to shift Commerce from a monthly to a quarterly release schedule, meaning there will be a Commerce release once every 3 months. This cadence better matches the mature state of the codebase and reflects a slight shift in our own focus toward essential contributed modules that need attention.
For example, we are currently improving Commerce Shipping to bring it to a release candidate this quarter. We are also making good progress on a Commerce API module, which will extend Drupal’s existing JSON:API capabilities with eCommerce-specific endpoints and customizations. Our vision for this year includes making Commerce a highly capable solution for decoupled (or headless) eCommerce, so expect to hear even more from us on that front as the year progresses.
The Commerce ecosystem is a combined effort of a thousand people. Everyone who has asked or answered a question on Drupal Slack, helped build a Commerce website, submitted a bug report, or written a patch has helped make Commerce a reality in 2019.
While it would be hard to mention everyone, we would like to at least mention those who have helped fix issues in Commerce and its dependencies. We are especially proud of our long tail of contributors - 143 people each helped fix one issue, which may seem insignificant but collectively makes a big difference.
The Centarro team (bojanz, czigor, jsacksick, lisastreter, mglaman, rszrama)
agoradesign, eiriksm, joachim, tstoeckler
|andyg5000, bradjones1, chrisrockwell, kristiaanvandeneynde, mitrpaka, Marios Anagnostopoulos, Morbus Iff, nlz, Neograph734, Niklan, nitin.ahire, Pancho, pavlo.dovhan, zaporylie
|a.dmitriiev, alexpott, amateescu, AndyD328, Berdir, carstenG, chishah92, DeaOm, drugan, facine, henrikar, i-trokhanenko, iuana, johnhuang0808, jwwj, Maithri Shetty, mpp, nno, simgui8, Sophie.SK, sergei_semipiadniy, zenimagine
|AardWolf, Aerzas, Alex Bukach, Bobík, Bram Linssen, BramDriesen, ChandeepKhosa, Deeksha B, Eric_A, FiNeX, Gode.Agarunov, Hubbs, Ivan Berezhnov, Jeff Veit, John Pitcairn, Kingdutch, Krzysztof Domański, LammensJ, Lukas von Blarer, Martijn de Wit, MegaChriz, MorinLuc0, New Zeal, NickWilde, NicolasGraph, Ronak.addweb, SAVEL, Sarahphp1, Simon Georges, Sut3kh, TwiiK, Upchuk, Waldoswndrwrld, WalkingDexter, Wim Leers, Yasser Samman, abhaysaraf, aheredia, aleix, alex.ksis, alphawebgroup, amjad1233, andrewbelcher, andriansyah, andypost, anpolimus, archnode, arnested, arunkumark, axel.rutz, beeyayjay, bmcclure, carlxjs, caseylau, chrisolof, citlacom, cornifex, daggerhart, daveiano, dion-jensen, dnebrich, dobe, drasgardian, edsoncarlos, edwardaa, effulgentsia, el7cosmos, ericchew, eyilmaz, firfin, foxtrotcharlie, franco cazzaro, gmem, guttenbergovitz, harings_rob, heddn, hstandaert, idebr, idimopoulos, ilchovuchkov, imclean, iyyappan.govind, jacobbell84, jcandan, jeroenbegyn, jidrone, jigish.addweb, jnrfred, joehuggans, johnjw59, johnpicozzi, jonathanshaw, josephdpurcell, jurgenhaas, jwilson3, kaythay, littlepixiez, maaty388, malte.koelle, mangy.fox, manuel.adan, marthinal, mattjones86, michiellucas, mirom, morenstrat, mradcliffe, mrconnerton, mvonfrie, myha, ndf, neetu morwani, newbie_01, olofbokedal, petar.gnjidic, piggito, purvitagupta, rakesh.gectcr, rhovland, rovo, rpayanm, rthornton, s.messaris, shabana.navas, sorabh.v6, steveoliver, super_romeo, szeidler, tbradbury, thalles, thejacer87, trebormc, tuutti, vacho, valic, validoll, vasike, vectorbross, xSDx, yasmeensalah, yoeriotpr, zengenuity, zserno||1|