The Drupal Drop: 8.4 Preview

Thu, 28/09/2017 - 09:32

So without further ado, let’s take a closer look at what’s been fixed, improved and where we need to add a few notches to our virtual toolbelt.

First, The Need-to-know

  • Symfony, the PHP framework upon which Drupal 8 is built, has been updated to 3.2.8.
  • As a result of the Symfony update, the minimum required version of Drush is now 8.1.12.
  • jQuery and jQuery UI have been updated to 3.0 and 1.12 respectively. This may have undesired knock-on effects with modules and themes that rely on deprecated functions.
  • By default, files with no known usages will no longer be automatically deleted. Manual removal is now required. This can reverted to its previous behavior under the new Media configuration.
  • Lastly, Drupal’s core themes will no longer support Internet Explorer 9 and 10 (finally!) and existing workarounds will be removed in 8.5.0.

The Module Shuffle

Drupal’s core development team continues to deliver on a variety of fronts. A deluge of modules have been promoted from experimental status to either stable or beta releases, adding substantial functionality.

Datetime Range (Stable) – Enables creation of a field type capable of capturing end-dates. Important when developing modules and features that rely on dates to be displayed coherently (e.g. a timeline or calendar). Integration with the core Views module has unfortunately been pushed to 8.5.0. Future support for field validation and REST endpoints is planned.

Layout Discovery (Stable) – Register theme or module layouts using this new API and introduce support for per region attributes (necessary for features like drag-and-drop UIs). Contributed favorites Panels and Display Suite are already utilising features provided by this module. Five common layouts have been included with the dependant Field Layout module. (Looking forward to integrating this into our own theme, Janitor.)

Media (Stable) – This former contributed module introduces a new entity type allowing for various forms of rich media-objects (local files, YouTube videos, Tweets, Instagram photos etc.) to be referenced within the Drupal ecosystem. REST support to be included in future releases.

Inline Form Errors (Stable) – Prepares a summary of validation errors at the top of a form and places individual errors next to the guilty form element, greatly improving user experience.

Migrate (Beta) – Provides an important bridge for migrating not only previous versions of Drupal (6 and 7) but data structures foreign to our favourite content framework. It’s almost ready for primetime, but some critical bugs remain unresolved.

Workflows (Beta) – Provides states for content (For example: Draft, Archived and Published). This module may be stable in time for 8.4.0 release.

Content Moderation (Beta) – Nearing completion, this module extends Workflows by allowing direct integration with content.

Field Layout (Alpha) – While providing useful functionality for site builders to rearrange fields on various entities to regions (both form and display), it has seen little improvement since it’s introduction and may be removed if not made stable by the release of 8.5.0.

Settings Tray (Alpha) – A milestone for release in 8.5.0, this module enables block configuration without the need to navigate to administration pages.

Place Blocks (Alpha – Deprecated) – This module will be removed in future versions of Drupal with functionality being integrated directly into the core Blocks module. It allows users to place blocks on any page and region without having to navigate to the block administration page.

Last, but not least

Quality-of-life improvements:

  • The “Save and keep (un)published” button has been reverted to the Drupal 7 “Publish” checkbox and “Save” button due to feedback from users that the former method was confusing.
  • Views that depend on fields contained within deleted content types will now only be disabled when that content type is removed (before, the view was deleted, along with the content type).
  • The “Comments” and “Recent log messages” administration pages have been converted to views, allowing for further customisation. 
  • Useful meta information about nodes is now available to all themes, not just the default Seven administration theme.
  • Timezones are now grouped by region.
  • Sorting of configuration exports now included.

Airbnb Javascript (ES6) styleguide adopted for Drupal core and contrib modules. Other noteable projects using these standards include: Facebook’s React, reddit, Evernote. (open source FTW!)

Performance and scalability improvements: 

  • Internal page cache now distinct from render cache.
  • In-progress form cache time now customisable, instead of being a default of six hours.
  • Rendering of status messages is now skipped if no message is needed, resulting in a 10% performance boost on smaller sites.
  • Drupal installer theme optimisations, improving both install times and automated tests.

Automated testing improvements and updates: 

  • PHPUnit updated to 4.8.35.
  • WebTestBase tests converted to BrowserTestBase. 
  • Updated method for testing deprecated code.

REST and API-first improvements:

  • Dynamic Page Cache utilised to improve Authenticated REST API performance by 15%.
  • Entities now POST at expected URLs (e.g. /node, /taxonomy/term etc.).
  • Dedicated resource provisioned for password resets.
  • New normalised fields: time, path alias. 

*Please note, this article was written based on the release candidate for 8.4.0 and is subject to change. A full changelog will be published on Drupal.org next week.

Need Assistance with Digital Strategy?

Rogerwilco’s team of strategists, business analysts and data scientists is here to help.