Problem/Motivation
Drupal has a lot of areas where we have added a new feature/API etc. which is capable of replacing something else, but that replacement has never happened, leading to two or more, often confusing, ways to do things, or a general level of unevenness across core where legacy and new ways to do things conflict or don't combine well. This goes across site builder features, PHP, theming, JavaScript, docs.
Opening this issue to collect some of the issues trying to address this. While the individual issues don't necessarily have much in common, at lot of them have common themes at a higher level. Also because I'm in the middle of drafting a blog post about this and need an issue to link to.
This doesn't have to be strictly about when there are two ways of doing things in core, it can also cover when finishing a core feature properly would allow it to replace a contributed modules (entity API for example).
Steps to reproduce
Proposed resolution
Remaining tasks
Issues with a ** are priorities per #3476431: [discussion] Prioritized issues for Drupal Modernization
Site building features/usability
** #111317: Allow users to login using either their username OR their e-mail address There are child issue to work on for this.
** #1537198: Add a Production/Development toggle
#2353867: [META] Expose Title and other base fields in Manage Display
#3365551: Add the notion of a 'configured layout builder block' to solve a number of content-editor and performance pain points
#3063877: Add access control to /filter/tips
#1823450: [Meta] Convert core listings to Views
#3372932: [Meta] High-performance images (nearly) out of the box
#2954834: Add poster image to HTML5 media videos
Done:
** #3347343: Add Views EntityReference filter to support better UX for exposed filters
HTML/CSS
#2880237: Refactor system/base library
#2158943: Add a native dialog element to deprecate the jQuery UI dialog
#3404214: META: Reduce / eliminate “jank” (layout shifts) within Drupal’s admin UI
#1804614: [meta] Consolidate similar twig templates and properly use theme suggestions in core
#3458587: Deprecate preprocess variable cruft in core
#3252084: [meta] Remove support for IE11
#3426579: Update parts of Umami that are falling behind
#3254529: [PLAN] Drupal CSS Modernization Initiative
PHP APIs
** #3396165: [meta] Convert all core plugin types to attribute discovery
#2025629: [meta] Ensure that all #theme/#theme_wrappers hooks provided by core are associated with a sensible, re-usable element #type
#2346347: Finalize API for creating, overriding, and altering code-defined bundle fields
#2875151: [META] Implement Batch API as a service
#1803948: [META] Adopt the symfony mailer component
#3100110: Convert update_calculate_project_update_status() into a class
#2544110: XSS attribute filtering is inconsistent and strips valid attributes
#2350509: Implement auto-route generation for all core entities and convert all of the core entities.
#2808481: Introduce generic entity template with standard preprocess and theme suggestions
Done:
** #3442009: OOP hooks using attributes and event dispatcher
JavaScript
#3238306: [META] Where possible, refactor existing jQuery uses to vanillaJS to reduce jQuery footprint
#3203920: Replace Contextual Links BackboneJS usage with VanillaJS equivalent
#3398525: Add an API for importmaps
#3028968: Create Javascript library for searching/filtering rendered lists on the client.
#3076171: Provide a new library to replace jQuery UI autocomplete
#2158943: Add a native dialog element to deprecate the jQuery UI dialog
Docs and tooling
** #3463660: Document high-level API concepts in an easier format
#3398293: Consolidate local development environment documentation to recommend DDEV
#3439331: [policy] Decide on format of commit message Implementation is in, #3486271: Change format for git commit message for the Drupal Core project..