Overview
To further streamline the software development lifecycle for WooCommerce and to help ensure a steady frequency of small, stable releases, the WooCommerce core team is taking steps to make the release process smoother, more reliable, and more predictable with the help of various types of of automation. This post is meant to provide a high-level overview of what types of processes we’re working on automating and why, along with a few resources for further information if you are interested in following along with our automation efforts.
How do releases currently work?
As many folks may know, WooCommerce core transitioned to a monthly release frequency around a year ago. At this cadence, the core team aims to release a new version of WooCommerce every second Tuesday of each month, however, the release process starts well before that Tuesday and involves quite a few moving parts. Each release is led by a rotating cross-functional team of Automatticians who each shoulder a particular piece of the release. They handle everything from testing to deploying packages and from updating docs to wrangling marketing efforts.
In practice, releases happen nearly every week as part of a larger four-week cycle that begins almost as soon as the previous release has been finalized. This is because there are beta versions and release candidates that go through many of the same steps that final releases must go through. For each release, the release team follows a week-by-week checklist of tasks that must be completed in order for the release to happen smoothly. These tasks exist in a wide array of contexts and include things like drafting internal communications, creating blog posts, double-checking Pull Requests, cherry-picking commits, building packages, and lots of other things. Many of these steps have historically needed to be done manually or required human interaction of some kind, which makes them time-consuming and susceptible to human error.
The benefits of automating releases
Streamlining processes and tasks not only helps reduce the risk of human error but also reduces the overall friction in WooCommerce’s development lifecycle. This reduced friction compounds over time, resulting in more resources and more cognitive bandwidth for engineers to focus on improving WooCommerce instead of releasing it. Moreover, the smoother we can make the release process, the easier it is to maintain a predictable frequency of small, stable releases long term.
What are we working to automate?
There are several dozen individual steps involved in the WooCommerce release process, and not all of them are steps we can automate. For now, the core team is exploring different ways to automate many of the tedious or repetitive tasks that involve interacting with tools and software platforms such as GitHub and WordPress.org. This includes things like:
- Creating milestones for new releases and assigning the appropriate milestone to pull requests when they are merged
- Creating release branches on pull request freeze dates
- Generating packages and notifying teams when packages are ready for testing
- Applying appropriate labels to pull requests that introduce things like database migrations, template changes, or action/filter hooks
In addition to automating administrative tasks, we’re putting increased effort into automating the testing process for WooCommerce core via continuous integration (CI). This effort includes work that is currently being done to identify and write tests for Critical Flows in WooCommerce, as well as the development of several packages designed to aide in end-to-end testing.
Finally, for processes involving written communication, many of which benefit from having an actual human being driving them, such as writing blog posts, making internal announcements, facilitating retrospectives, and other similar tasks, we’re working to build out templates that help ensure these types of communications have a predictable, easy-to-follow format that doesn’t vary from one release to the next.
Experimenting, learning, and iterating as we go
For folks who are interested in work that is currently in progress around automation, there are a few ways to stay informed. You can take a look at some of the GitHub workflows happening in the WooCommerce core repository. There, you’ll find various build processes and administrative workflows being tested and tuned. You can also take a look at some of the current work happening around automated testing and end-to-end testing tools.
The journey WooCommerce is taking toward a more automated future is one that will likely be filled with unforeseen challenges. As we experiment and navigate these challenges, we’re committed to sharing our solutions and insights with the developer community and are likewise eager to hear about challenges you encounter with releasing your extensions and themes. Moreover, we are also keen to hear about any suggestions you have for tooling that would help you build things more efficiently. Drop us a line in the comments below or join us in the #developers
channel of the WooCommerce Community Slack.
Leave a Reply