[meta] Refactor the installer, (multi)site management, and pre-container bootstrap

Created on 10 October 2014, over 10 years ago
Updated 15 April 2025, 7 days ago

Compared to Drupal 7, a lot of the codebase in Drupal 8 has been transformed into loosely coupled components, receiving their dependencies from a DIC instead of having to pull them from somewhere.

However, everything that comes before that still has a lot of global state, intransparent interdependencies, and nasty arrays: Installer, bootstrap, settings singleton, multisite, DrupalKernel. This makes it unnecessarily difficult to write unit tests.

The solution, as I see it, is to turn all this low-level stuff into loosely coupled components, and to introduce a CoreContainer that will manage the dependencies of these components. See #2272129: [meta] Introduce a low-level DIC to organize low-level services β†’ for an approach from a while ago.
(I am currently working on this locally)

Besides this container, we can also do some preparation steps that do not require the container.
One idea was to turn the $install_state used in drupal_install() into an object.

This issue can act as a parent for the other issues.

πŸ“Œ Task
Status

Postponed: needs info

Version

11.0 πŸ”₯

Component

base system

Created by

πŸ‡©πŸ‡ͺGermany donquixote

Live updates comments and jobs are added and updated live.
  • stale-issue-cleanup

    To track issues in the developing policy for closing stale issues, [Policy, no patch] closing older issues

Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • πŸ‡ΊπŸ‡ΈUnited States smustgrave

    Thank you for creating this issue to improve Drupal.

    We are working to decide if this task is still relevant to a currently supported version of Drupal. There hasn't been any discussion here for over 8 years which suggests that this has either been implemented or is no longer relevant. Your thoughts on this will allow a decision to be made.

    Since we need more information to move forward with this issue, the status is now Postponed (maintainer needs more info). If we don't receive additional information to help with the issue, it may be closed after three months.

    Thanks!

Production build 0.71.5 2024