Now that T353458: Make core classes follow PSR-4 is mostly done, it opens a lot of possibilities on dependency analysis on component level and improving modularity of core. Here is a simple example:
Here is the list of direct cyclic dependencies between top level components of mediawiki: P88801 (it's 440 edges, meaning 220 of them)
To prioritize breaking such cyclic dependencies, we can easily start by top asymmetric ones (basically, you give weight to the graph edge based on number of classes that have dependencies in that component). Now a clear todo list is emerging: P88835
For example, the second line says MediaWiki\Specials classes have 48 different dependencies to MediaWiki\Exception but the other way around is only one case: MediaWiki\Exception\UserNotLoggedIn is having a dependency to MediaWiki\Specials\Helpers\LoginHelper::getValidErrorMessages(). I can easily imagine this static method being moved to a class in MediaWiki\Exception\ component breaking this cyclic dependency between top level modules of mediawiki core.
Similarly, the cyclic dependency of User and Page (line three) can be easily broken by deprecating and removing four methods in User (::probablyCan, ::definitelyCan, ::authorizeRead, ::authorizeWrite). Most other cases are rather straightforward to fix