At present, WikibaseRepo depends on WikibaseLib and WikibaseView, and WikibaseClient depends on WikibaseLib. All of these depend on other composer modules, which do not depend on MediaWiki.
We have long planned and failed to get rid of lib by moving code to "clean" components. The problem is that this would require all code that is used by both repo and client to not depend on MediaWiki.
Also, with for federation, a repo will often be a client to other repos; and in practice, a wiki that is a Wikibase repo will also at least be it's own client, so data can be used from wikitext. For this reason, we are introducing an optional dependency of repo on client.
For the future, a better split would be useful:
- WikibaseDataAccess - read-only storage layer services; depends on MediaWiki.
- WikibaseDataUsage - Lua interface, parser functions, sidebar integration, etc; depends on MediaWiki.
- WikibaseView - all the entity UI stuff; depends on MediaWiki.
- WikibaseStorage - storage layer services; depends on WikibaseDataAccess and MediaWiki.
- WikibaseRepo - special pages, etc; depends on WikibaseStorage and WikibaseView and WikibaseDataAccess and MediaWiki. Depends on WikibaseDataUsage in so far as the local wiki acts as a client to itself.