tl;dr
WooCommerce Admin’s code is going to be incorporated into a restructured monolithic WooCommerce repository where it will be maintained going forward. The current feature plugin and repository for WooCommerce Admin will be deprecated.
Background
Three years ago, merchants and developers got their first glimpses of the new JavaScript-powered merchant experience that was coming to WooCommerce with the alpha release of WooCommerce Admin. This new experience was built as a feature plugin and marked the beginning of a technological transition for WooCommerce Core. This transition parallels the one happening in the broader WordPress ecosystem that was catalyzed by the arrival of React in WordPress core.
As we mentioned in a previous post, WooCommerce Admin’s features have become increasingly interwoven into the merchant experience in WooCommerce, both via the core plugin and the growing number of extensions that use the features it exposes. In short, WooCommerce Core and WooCommerce Admin have become inextricable because both are necessary for running a WooCommerce store.
With that in mind, we have begun the process of bringing the code for WooCommerce Admin into a redesigned, monolithic repository where its development will continue alongside WooCommerce Core. This post is meant to provide a high-level overview of what that unification will look like, to share a bit of the rationale behind this decision, and to capture important feedback and input from you before the unification takes place.
What is changing?
While we are aiming to execute this unification with as little disruption as possible, there will be noticeable changes that could impact your work in various ways, depending on how you use WooCommerce and WooCommerce Admin.
A redesigned file architecture in the WooCommerce Core repository
If you use the raw code for WooCommerce Core or WooCommerce Admin as a development reference, or if you contribute work to either of these repositories, there will be changes to the organization of files in these projects, and you may need to acclimate to the new structure in order to retain your productivity.
Adoption of shared developer tooling and workflows
Because they have historically been built and maintained separately, WooCommerce Core and WooCommerce Admin each have their unique sets of developer tools and workflows for things like build processes, testing, and releases. As these two projects unify, the teams who maintain both projects will be working to standardize the tooling and development workflows used across the entire core codebase. For some developers who build with WooCommerce or its bundled packages, this will mean becoming familiar with tools that you may not have used much yet.
Streamlined code review and issue triage
As part of the unification, there will be additional focus put into supporting the code review process through automation and streamlining Pull Request checks to make sure that developers can efficiently work on parts of the code that matter most to them. We’ll also be working to reconcile two separate processes for issue triage and finding ways to improve those processes through automation. We plan to transfer existing issues from the WooCommerce Admin repository to the WooCommerce Core repository, but folks who want to file new issues will need to open them in the Core repository going forward.
Deprecation of the feature plugin and repository
As mentioned above, with the integration of the code from WooCommerce Admin into the Core repository, we will be deprecating the existing feature plugin for WooCommerce Admin and archiving its repository. For developers who contribute to WooCommerce Admin or who use its features, this change means that ongoing maintenance will simply be happening in a different repository. For folks who use the feature plugin to take advantage of new and experimental features, this benefit is something that you’ll access via feature flags rather than installing an additional plugin.
Why are we doing this now?
There are a number of outcomes that we are working to achieve by unifying the repositories for WooCommerce Core and WooCommerce Admin.
- The development and maintenance of WooCommerce Admin and WooCommerce Core should reflect the seamless experience we want merchants and customers to have when they use WooCommerce. These projects constitute a singular user experience and it naturally follows that development of the experience should be free from technological boundaries.
- Developing more collaboratively will improve platform stability. Given the increased interdependence of both projects, working from a shared code base will help reduce duplicated solutions and help identify potential incompatibilities before they are shipped and adopted.
- Shared infrastructure and tooling will make it easier to build and extend the platform. Adopting shared tools and standardizing the way we use them doesn’t just make it simpler for developers to contribute to both projects. It also provides more congruous guidance around best practices for building other things with Woo.
- Feature flagging will provide a smoother pathway for vetting and encouraging the adoption of new features and platform improvements. By eschewing a heavy-handed plugin-level approach in favor of a more granular one, we can provide merchants and developers greater control when they want to try new features, and we can accelerate adoption of battle-tested improvements without forcing folks to live with features they don’t want.
- Eliminating unnecessary or redundant work frees up more engineers to focus on improving the platform rather than routine operational tasks. Maintaining separate plugins effectively multiplies many of the administrative steps that each plugin must be subjected to during its release cycle. By reducing the complexity of the release process, we can reclaim some of that time and energy and redirect it into more impactful engineering efforts.
Next Steps
The tentative next steps for the unification are below. The timeline still has some fluidity and may change based on feedback we receive.
- There will be a code freeze for WooCommerce 5.9 today, October 14, 2021.
- After that freeze, we plan to merge a number of Pull Requests that restructure the
woocommerce/woocommerce
repository, configure automation, and make sure everything is working in time to begin the release process for WooCommerce 6.0, which is currently slated for release on December 14, 2021. - This restructuring will happen over several steps, each of which will ensure it leaves the repository in a functional state, to help prevent disruptions to ongoing work.
- During this transition, we’ll be putting together additional documentation about automation and new tooling.
- Once the core repository is restructured and the corresponding support processes have been put into operation, we will migrate the code from WooCommerce Admin into its new home in the WooCommerce Core repository.
- As mentioned above, we also plan to transfer existing issues for WooCommerce Admin to the WooCommerce Core repository. We plan to migrate Pull Requests as well, but this step is more complex and will require a combination of automation and manual work.
- To help preserve the historical timeline of development, we also plan to migrate the entire commit history of WooCommerce Admin and intend to update any references to issues or Pull Requests in commit messages to their absolute URLs.
Request for Comments, Questions, and Concerns
As is the case with any undertaking of this scope, there are many moving parts and many factors to consider. One of those factors is the feedback that we receive from folks in the WooCommerce community who are reading this. Please leave us a note in the comments below or reach out to us in the #developers
channel of the WooCommerce Community Slack and let us know what questions and concerns you have about the merge, the deprecation of the feature plugin, or even the broader unification effort overall.
We are eager to hear from you, and we want to make sure you feel supported as WooCommerce and WooCommerce Admin continue to converge.
Leave a Reply