How to make Julia game mods composable?

Preamble: Julia has many tools for game development from geometric algebra to physics simulation and AI and so on. It may also solve the two-culture problem of game designers and game developers. However, getting to that stage remains a big challenge, we could focus on the low hanging fruit, composability of Julia.

Julia as a language is composable, but what about game mods?

Some games support modding well, or at least accidentally. If you play Minecraft with 100 mods for example, the mechanics you’re interacting with will probably be mod mechanics. There are more civilization modded civs than 10 times the Vanilla civ combined. The list goes on and on. Many mods also modify the core features.
So, I believe I will take the next step and make a game whose very features depend on mods. The only purpose of the game is to set useful mechanisms for coordinating mod developments. My plan is a 4x game, though this applies to other genres. The base game might be best described not by its feature, but the lack thereof. For example, the game has no GUI or AI, but instead an information API that allows mods to add GUI or AI in.
However, this comes with some big problems.

  1. Compatibility. With many independent mods that can change core gameplay mechanics, how do I make them compatible?
  2. Power scaling. Power scaling is very important. Units from one mod shouldn’t come too early or too late, be too strong or too weak, etc… how do I ensure balanced power scaling and not become a power scale arms race or unbalanced mess?
  3. Gameplay depth. How do I make these mechanics interact with others in meaningful ways to increase gameplay depth.
  4. Flexibility. How do I ensure flexibility of the mods to do what they want while remaining composable, such as adding units with new activated abilities and so on?