The Drupal 9 Dilemma
We are ready to embrace Drupal 9 but there are still uncertainty about whether to upgrade to Drupal 8 & be prepared for Drupal 9 or continue using Drupal 7.
Drupal 8 is complete rewrite from the previous versions that have been released so far. It is mainly created with MVC and OOP architecture on mind and most of the parts of Drupal 8 is built with OOP. This allows it to interface with many other plugins and scripts without having to write separate code specifically for Drupal 8. Drupal 8 borrows most of its features like:
- handling routing
- Service container
- http foundation
- http kernel
- class loader
- dependency injection and others
from Symfony to reduce code duplication.
Figure 1 Drupal 8 flow
For dependency management, we can now use composer along with Drupal 8. This allows it to go beyond its ecosystem and leverage code from outside. Among the others, Drupal 8 also borrows code from EasyRDF, Doctrine, Twig and Guzzle.
Drupal 8 APIs for developers
Drupal 8 Implements PSR-4 standard for package-based PHP namespace autoloading by the PHP Framework Interoperability Group. If you want to upgrade existing Drupal 7 site to Drupal 8, you will need to use and comply to PSR-4 standards. Drupal 8 follows YAML based configurations and PHP annotations. This makes it fairly easy to interpret and understand.
Developers can learn more about Drupal 8 and take insights on https://www.drupal.org/docs/develop
What’s for me
Drupal 8 is flexible and simple to use with enriched admin interface which is getting updated every day by the Drupal community. This makes it usable in lots of use cases and configurations – stand alone, headless/decoupled and multisite set ups. You can run multiple Drupal 8 sites on a shared-hosting or VPS or even on node based cloud architecture like Kubernetes.
Content admins can post content to multiple or a few selected sites by just installing a few contributed modules. Modules are like attachable parts. Use those you want, remove the others. With Layout builder, content / site admin can customize the appearance of a single page or all the pages of a content type (i.e. A blog post, a tour package etc.)
The latest development in Drupal 8 is as follow:
- Layout builder is now stable. It can be used in production environment.
- JSON:API support is stable.
- Further improvements in Media library.
- Revisionable menus & taxonomy terms.
- Support for Twig 2
Latest release in 8.7.x requires at least PHP 7.0.8
Drupal 8 will be developed and released till June 2020 (Figure 3 Drupal version support & Drupal 9 development timeline). The final expected Drupal 8 version is Drupal 8.8 and from there, Drupal 9 will take over.
Figure 2 Train to Drupal 9
For a short span of time, Drupal 8 will be supported for security issues post 8.8 release and not further development is expected. All the resources and energy will be channelized towards developing and enhancing Drupal 9. All the prior version of Drupal 8 will receive security fixes and support only.
Drupal 7 and Drupal 8 will be supported by Drupal community until November 2021.
Drupal 9 will be developed continuously from where Drupal 8 was left. This allows upgrading to Drupal 9 without rebuilding a Drupal 8 site from scratch with Drupal 9. The last release in Drupal 8.x branch will be compatible to Drupal 9 without effecting any APIs or features built for Drupal 8.
- An upgrade from Drupal 8.
- Fully compatible with Drupal 8.
- Six-month release cycle.
- More libraries integrations.
- Leverage Symfony 4.
Figure 3 Drupal version support & Drupal 9 development timeline
The major efforts will be directed towards removing the deprecated codes and updating third party dependencies to make Drupal 8 ready for Drupal 9. This also requires backward compatibility for all the modules – custom and contributed, developed for Drupal 8
Figure 4 Drupal 9 API
Upgrade from Drupal 8
Upgrading from Drupal 8 to Drupal 9 will be a matter of running update.php as long as your do not use deprecated APIs or third-party dependencies.
Upgrade from Drupal 7
Drupal 7 will be supported by Drupal community till November, 2020 and extended support by vendors will be available till 2024.
If you want to upgrade to Drupal 9, you will still need to take the route through Drupal 8. There are modules and resources available on Drupal.org that can help you to migrate your existing Drupal 7 site to Drupal 8.