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
- #3021803: Document and add tests for service autowiring
- #3021900: Bring new features from Symfony 3/4/5/6/7 into our container
Guzzle / Symfony HttpClient
Keeping Guzzle.
- #3047294: Switch to symfony/http-client
- #3039047: Adopt php-http/guzzle6-adapter 2.x to get PSR-18 support without losing Guzzle's async support
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
| Comment | File | Size | Author |
|---|---|---|---|
| #8 | dependency_releases.png | 179.47 KB | xjm |
Comments
Comment #2
catchComment #3
catchComment #4
gábor hojtsyComment #5
xjmComment #6
xjmComment #7
xjmI 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.
Comment #8
xjmI 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.
Comment #9
xjmComment #10
xjmComment #11
catchComment #12
xjmMaking the title a bit more specific.
Comment #14
xjmComment #15
xjmComment #16
xjmComment #17
andypostegulias/EmailValidator needs new issue maybe for SF
Comment #18
andypostjquery-form plugin have no releases last 2.5 year, so maybe it needs replacement https://github.com/jquery-form/form/releases
Comment #20
nod_Comment #22
alexpottThe 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.
Comment #23
xjmI 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.
Comment #24
xjmReally this issue is a partial duplicate of its parent; any objections to closing this one D9-specific content has been moved to the parent?
Comment #25
xjmI 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.