Problem/Motivation
#1863512: Move default views into their respective module config directories wants to move views that are owned by other modules to their respective extension directories. For example, views.view.taxonomy_term.yml should be provided the taxonomy module and not views. Also if the taxonomy module is disabled then this view should be removed. At the moment views does this in the view storage controller. This is because the listAll() method on Config's FileStorage still returns disabled module's config. This means that disabled modules configuration is bleeding in the running site!
This issue somewhat related to: #1199946: Disabled modules are broken beyond repair
Proposed resolution
At DrupalCampLondon @swentel, @damiankloip and I discussed this issue at length. The solution we came up with is:
- We need to introduce the concept of configuration owner into the configuration system
- We can then use this to create directories within the config directory for each enabled owner
- If we inject the module list into the config storage controller that we can then ignore directories of disabled modules.
This will also solve:
- #1831776: removing manifest files from uninstalled modules as manifests are owned by the entity type implementor and therefore will be cleaned up when the its config directory is removed.
- https://twitter.com/swentel/status/297483860436979712 (and this is only get worse as more things become ConfigEntities.
the screenshot is just a small part, the whole directory is ~1500 files, so yes, I think I will like that (@berdir)
Remaining tasks
- Inject the module list into the config storage controller that we can ignore directories of disabled modules.
- This patch also exposes an existing issue with manifest synchronisation on module disable. However this is an existing issue.
API changes
@todo