Drupal 9 is scheduled to be released on June 03, 2020. This is when the final Drupal 8 minor release 8.9 will also be released. Considering the history of previous Drupal major upgrades, Drupal 9 will relatively be smooth. Thanks to the semantic versioning introduced in Drupal 8. The upgrade to Drupal 9 will just be another minor upgrade with deprecated code removed. Drupal 8 has brought a lot of standardization in the Drupal world, thus allowing Drupal as a project to grow incrementally.
To put it in simple terms, Drupal 9 contains the same code as of 8.9 + deprecated code removed. Here’s a reference image from the Drupal 9 documentation.
That is if you reduce Drupal 9 from the last Drupal 8 version (8.8.x) the rest is just the deprecated code and dependency upgrades.
However, upgrading all the underlying dependencies and removing all deprecated API is a challenging task. Contributors around the world are working hard to get this done especially when the world is facing an epidemic. This is a challenging time for the entire world, yet Drupal contributors have shown their love towards Drupal and are helping it advance to the next release.
This article highlights some of the system requirements, the new dependencies and some of the most commonly used APIs which are going to be removed in 9.0.0.
Let us expedite Drupal’s journey to its 9th version!
Third-party dependency updates
- Upgraded Symfony from 3 to 4.4
- Upgraded Twig from 1 to 2
- Upgraded CKEditor from 4 and 5
- Upgraded PHPUnit from 6 to 7
- Upgraded Guzzle from 6.3 to 6.5.2
- Popper.js updated to version 2.0.6
System requirement updates
- Apache, at least version 2.4.7
- PHP - at least 7.3. (PHP 7.4 also supported)
- Database: MySQL (5.7.8), MariaDB (10.2.7), SQLite (3.26), PostgreSQL (10)
Modules being removed in D9
- Block_place
- Entityreference
- Field_layout -> Replaced by Layout Builder.
- SimpleTest module has been moved to contrib
- Action renamed to action UI
New features in Drupal 9
Drupal 9 will have the same new features as of Drupal 8.9. Thus, Drupal 9.0 will not include new features. But Drupal 9.1 will continue to receive new features as it did for the minor D8 releases.
Breaking APIs
Following is a list of major APIs which were deprecated in Drupal 8 and will be removed in Drupal 9.0.0. That means if your code contains any of these codes, they need to be replaced before upgrading to Drupal 9. This list is not exhaustive and has been curated by scanning Drupal core codebase for deprecated warnings and sorted according to the usage of these APIs in contributed projects as given Drupal 10 Deprecation Status by Acquia.
- drupal_set_message() removed
- Drupal::entityManager() removed
- db_*() functions removed
- drupal_render() removed
- Methods for generating URLs and links deprecated
- File functions removed
- Loading of entities removed
- Functions to view entities are deprecated
- Date formats API changes
Some of the functions and hooks removed (change record)
- Unicode::* methods removed
Following functions removed (change record)
- Functions retrieving extensions info removed
- drupal_get_user_timezone() removed
- SafeMarkup methods are removed
More Changes/Updates
- Drupal core themes no longer extend Classy. Read more
- Drupal core themes, Bartik, Claro, Seven, and Umami no longer depend on Stable.
- New Stable theme for D9, recommended new themes to be built on new D9 stable theme. Old D8 stable to be removed from core and be moved to a contributed project before D10.
- A new administration theme, Claro (targeted for inclusion in Drupal 9.1)
- Drupal 9 won't be able to run updates from 8.7.x or earlier databases anymore, it is necessary for all new updates added to the code base to be tested from a Drupal 8.8.x starting point. Read more
- Changes to how HTML Elements are inserted via AJAX commands. Read more
- ZendFramework/* packages have been updated to their Laminas equivalents. Read more
- PhantonJS based testing removed. Read more
- The jQuery UI asset libraries not in use by Drupal core have been marked deprecated and have been removed from core in Drupal 9.
- Drupal 9 will continue to depend on CKEditor 4 and jQuery 3.4.
- Modules to be compatible with Drupal 8 and 9 at the same time and to support semantic versioning for contributed projects
- jquery.cookie has been replaced with js-cookie version 2.
Conclusion
At this point, 9.0.0-beta2 is released, which means the code for 9.0.0 is stable and is ready for testing by end-users. Now is a good time to test upgrade your existing D8 sites to the latest version of 9. If you have contributed a project in drupal.org, it is also a good time to check your extensions for D9 readiness. There are several tools which can speed up this process of making your extensions compatible with D9.
Have questions about how Drupal 9 will impact your site? We are here to help. Check out our Drupal Services or send us an email at business@qed42.com!
Important References
- Drupal 9 documentation
- Drupal 9 Deprecation Status
- How to prepare your Drupal 7 or 8 sites for Drupal 9
- [META] Release Drupal 9 on June 3 2020
- Search for Deprecated code
- “State of Drupal 9” slideshow by Gábor Hojtsy
If you see any discrepancies in the information provided above, please let us know.
Thanks!Drupal 9 is scheduled to be released on June 03, 2020. This is when the final Drupal 8 minor release 8.9 will also be released. Considering the history of previous Drupal major upgrades, Drupal 9 will relatively be smooth. Thanks to the semantic versioning introduced in Drupal 8. The upgrade to Drupal 9 will just be another minor upgrade with deprecated code removed. Drupal 8 has brought a lot of standardization in the Drupal world, thus allowing Drupal as a project to grow incrementally. To put it in simple terms, Drupal 9 contains the same code as of 8.9 + deprecated code removed. Here’s a reference image from the Drupal 9 documentation.