The Problem
Modules need to share some common code—value objects, interfaces, and utilities. But sharing too much creates hidden coupling.
The Solution
Create a small, carefully curated shared kernel that contains only the most fundamental, stable abstractions.
Guidelines
Keep It Small
The shared kernel should be minimal. If it grows large, it becomes a source of coupling.
Keep It Stable
Changes to the shared kernel affect all modules. Treat changes with care.
Keep It Abstract
Include interfaces and value objects, not concrete implementations.