Drupal 8 has made significant improvements in standardizing its upgrade path. Gone are the days where an upgrade would require a full site rebuild and migration. While some upgrades are more significant than others, the overall standardization of the upgrade process is welcome.
With minor upgrades beginning with Drupal 8, no functionality will be removed from the core. Any changes to core API’s or functions will be “deprecated” and will be slated for removal during the next major upgrade.
Major upgrades will clear out all of the deprecated functionality that has accumulated in order to start off with a clean slate. With the standardization onto the Symphony framework, there is no plan to rebuild the Drupal core like as was done from versions 6 -> 7 and 7 -> 8.
Great! So upgrading my sites in Drupal 8 should be easy!? Right!???
Answer: Not so much!
The big takeaway is that the Drupal 8 updates made to standardize the upgrade process will make staying up-to-date much easier. That being said, there are still complications with the minor version upgrades. Drupal 8 continues to be in very active development — the community is working hard to integrate critical functionality, such as Media and Workflow, into the Drupal core.
With these core improvements comes a new dilemma: How do I upgrade my website that was built utilizing contributed functionality because the core functionality was not ready at the time? It might sound simple to do, but there are many improvements and alterations made to functionality when it is being integrated into the core. This requires an upgrade path to be built in order to move forward with updating the version of Drupal 8 you are running.
The good news is that Drupal 8 will not release a new core upgrade without an upgrade path for migrating the contributed functionality to the core. The bad news is that this won’t cover customizations or other contributed add-on functionality. This is where the real work comes in and where planning is required.
Here are some high-level questions that will help you plan your core upgrade path:
- What contributed modules that I am using have been moved into the core?
- Which of the patches that I am using has been committed to the core?
- Are there additional dependencies that need to be updated due to core API updates or changes?
- Do I have any custom code that is utilizing deprecated core functions or modules?
Things here can get a little bit more complex based on how your website is built. For example, if you are utilizing features for configuration management you will need to also consider:
- Are my features dependent on configuration from core/contrib that has been updated or removed?
- Do my features contain configuration related to a deprecated module?
While the new upgrade plan for Drupal provides a much clearer path forward, it still requires effort to stay up to date. For many clients, separating a large upgrade into several, smaller chunks is desirable because it is more manageable and allows them to spread the cost of upgrading their entire site over several quarters or years.