Rationale

GitLab follows modular code principles. Modules must have clear boundaries, single responsibility, and minimal coupling.

Requirements

  1. Each module must have a single, well-defined responsibility
  2. Module dependencies must point inward (Dependency Inversion)
  3. Cross-module communication must use defined interfaces
  4. No circular dependencies between modules
  5. Module internals must not be exposed to other modules

Module Structure

module/
├── src/
│   ├── main/
│   │   ├── api/          ← Public interfaces only
│   │   └── internal/     ← Implementation details
│   └── test/
└── README.md

Modularity Rules

Rule Description
SRP Each module has one reason to change
ISP Interface Segregation — small, focused interfaces
DIP Depend on abstractions, not concretions
CCP Common Closure Principle — changes affect one module
CRP Common Reuse Principle — modules reused together

References