edX’s monolithic Ecommerce Service was meant to be a full-featured product catalog, discounting, and order management service and has grown in complexity for many years until it has become very hard to maintain, let alone evolve. In that time, more and better hosted services have become available for solving many of these problems, and complex use cases have evolved that make flexibility vital for Open edX operators, including edx.org.
We are building a new system that should be flexible and adaptable enough to support any ecommerce product of choice. By uncoupling openedx from a specific ecommerce product, we will enable more contributors and deployments, and remove edX as a blocker for others’ ecommerce.
At the center of the new system is the Commerce Coordinator, a highly modular Django web service written in Python. Coordinator will provide a framework for configuring ecommerce capabilities. Individual Django apps will act as plugins to implement specific functionality, for example a webhook for a payment service provider to call when a purchase is successful, that plugin can then signal one that performs the fulfillment in the LMS. The core of the Coordinator will allow commerce workflows to be tailored by combining plugins and routing signals, and will eventually include tools for validating configurations and tracing signal flows.
We have completed some upfront design and proof-of-concept work and are now bringing it to the community for awareness, review, and support. The next steps will be to flesh out the Coordinator Core while we begin building decoupling Coordinator Plugins to bridge legacy ecommerce. During this process, edX will also begin building plugins to bridge our ecommerce vendor of choice.
We intend to officially deprecate legacy ecommerce by April 1st 2022. When the legacy ecommerce service has been fully decoupled from the platform, it will be removed from openedx or transferred to a new maintainer. Please comment on the deprecation ticket by April 30th 2022 if you would be interested in taking over maintenance.
The community can support this development effort in three main ways:
- Help with Core improvements, particularly signal validation and signal traceability
- Write Plugins to decouple legacy ecommerce
- Write “minimum viable” Plugins for development environment
Please reach out if you are interested in collaborating on any of these.
Coordinator will be rapidly evolving and may need some time to stabilize before being included in named releases. Once stabilized, the core should require relatively few changes, and anyone can write their own plugins to suit their needs and sideload them as desired.
Tight and transparent communication with the community will be critical to success. To keep the community informed of our progress, edX will provide monthly updates to Discourse.