Problem/Motivation

We adopted a lot of third-party PHP dependencies during Drupal 8's cycle, some of them are going better than others.

There are some common issues:

1. Support cycles (and PHP version support) out of sync with core's
2. Our use-case requiring subclassing significant percentages of the dependency's code base.
3. Drift between our subclasses and newer versions of libraries
4. New versions of dependencies dropping features we rely on
5.Difficulty adapting to API changes and similar.

Proposed resolution

In some cases we might want to move away from a component, in other cases we might want to see if we still need to subclass things and move closer to it. The main thing is we should try to avoid drift.

Symfony CMF

#2917331: Decouple from Symfony CMF

Symfony Validator

#3054535: Discuss whether to decouple from Symfony Validator

Event dispatcher

#2237831: Allow module services to specify hooks

Doctrine annotations

#2631202: Doctrine no longer supports SimpleAnnotationReader, incorporate a solution into core

Symfony classloader

#3020296: Remove Symfony's classloader as it does not exist in Symfony 4

Symfony container

Guzzle / Symfony HttpClient

Keeping Guzzle.

Diactoros

We discussed prior to Drupal 8.8.0 whether to remove Diactoros in favor of Guzzle's PSR-7 implementation; however, Guzzle's implementation remains incomplete for our needs. #2492955-13: [meta] PSR-7 support

Following Drupal 9.1 PHP 8 compatibility work and additional information about the Laminas release cycle and PHP version constraints, we are reintroducing #3039047: Adopt php-http/guzzle6-adapter 2.x to get PSR-18 support without losing Guzzle's async support as a goal for Drupal 10, as this will allow us to drop Diactoros in favor of using Guzzle's implementation.

egulias/EmailValidator

#3105181: Remove egulias/EmailValidator

Wikimedia Composer Merge Plugin

#2912387: Stop using wikimedia/composer-merge-plugin

jQuery UI

Move unused components to contrib. Fork components still not deprecated by the 8.8.0 beta deadline. Research possible replacements and target them for either D9 or D10 based on maintainer recommendations.
#3067261: [Plan] Remove jQuery UI components used by Drupal core and replace with a set of supported solutions

JS and CSS polyfills

#3067216: [meta] Deprecate (in 8.8) and remove (in 9.0) polyfills that are no longer needed

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

CommentFileSizeAuthor
#8 dependency_releases.png179.47 KBxjm

Comments

catch created an issue. See original summary.

catch’s picture

Issue summary: View changes
Issue tags: +Drupal 9
catch’s picture

Issue summary: View changes
gábor hojtsy’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes

I added jQuery UI to the list; it's not quite the same as the others since it was added in D7, but it has a lot of similar considerations for BC etc. so let's track them all in one place.

xjm’s picture

Issue summary: View changes
StatusFileSize
new179.47 KB

I added Diactoros. I'm not sure if we have an issue actually discussing it, but we looked into whether we could drop Diactoros as a dependency in favor of Guzzle's PSR-7 implementation and determined Guzzle's probably doesn't meet our needs. It looks like we should probably retain Diactoros.

Also, for context, attaching a chart of the major release support cycle information we have for those dependencies that have scheduled majors.

xjm’s picture

Title: [meta] PHP dependency re-assessments » [meta] PHP (and JS) dependency re-assessments
xjm’s picture

catch’s picture

Issue summary: View changes
xjm’s picture

Title: [meta] PHP (and JS) dependency re-assessments » [meta] PHP (and JS) dependencies to consider decoupling or removing

Making the title a bit more specific.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

xjm’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
xjm’s picture

Issue summary: View changes
andypost’s picture

egulias/EmailValidator needs new issue maybe for SF

andypost’s picture

jquery-form plugin have no releases last 2.5 year, so maybe it needs replacement https://github.com/jquery-form/form/releases

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

nod_’s picture

Issue tags: +JavaScript

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

alexpott’s picture

The PHP 8 compatible versions of the Laminas dependencies look like they are going to be locked to ~8.0.0 which means we're going to need an update them for every PHP 8 minor. See https://github.com/laminas/laminas-diactoros/pull/46#discussion_r516190258 for more information.

I think given this approach we should consider trying to deprecate these dependencies / replace them with other dependencies that don't have constraints that introduce this type of friction.

xjm’s picture

Issue summary: View changes

I had already added #3039047: Adopt php-http/guzzle6-adapter 2.x to get PSR-18 support without losing Guzzle's async support to the parent issue which is a sort-of-duplicate of parts of this, but updating the IS accordingly here as well.

xjm’s picture

Really this issue is a partial duplicate of its parent; any objections to closing this one D9-specific content has been moved to the parent?

xjm’s picture

Status: Active » Fixed

I moved the missing issues from this IS to #3118154: [meta] Deprecate dependencies, libraries, modules, and themes that will be removed from Drupal 10 core by 9.4.0-beta1 -- let's call this one fixed for D9 and use that one for D10.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.