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.