[Backport] Make the module list more deterministic #21423
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Original Pull Request
#21020
I've found that the modules ranking in the
app/etc/config
is not completely deterministic as a module addition will affect the ranking of unrelated modules. This generates a lot of conflicts when starting a Magento project since many modules are likely to be added.Description (*)
I tried the changes proposed in #16120 at first, but the implementation was likely incomplete as I was still able to reproduce the issue. So, I came to the conclusion that we need to sort the sequence of each module AND to put all Magento modules at the top of the list before performing the bubble sorting. There is no impact on the prioritization process itself. However by keeping third-party modules together, we will mitigate the impact of a module addition because it will be naturally added at the end of the list without messing Magento modules ranking. I've also added a specific unit test.
Fixed Issues (if relevant)
Manual testing scenarios (*)
setup:upgrade
.app/etc/config.php
file.setup:upgrade
.app/etc/config.php
file, but the ranking of several unrelated modules is also affected.Contribution checklist (*)