Microwise Development (MWD) — Core Definition v0.1

The key words MUST, MUST NOT and SHOULD are to be interpreted as described in RFC 2119.

Definition

Microwise Development (MWD) builds software as small packages, each in its own repository, that depend on each other only through published, versioned releases. It was designed for working with AI coding agents, including several agents working in parallel. Each part can be developed, measured, replaced or retired on its own, and changes move between parts one release at a time.

Origin

First drafted by Sisung Kim (crimson206) in 2024 to make codebases easier for AI coding tools to work on, by keeping modules small (micro-level modules). First published on 2024-07-03 (github.com/crimson206/micro-wise-development). This page (v0.1) is the canonical definition.

Core rules

Principles

  1. Changes reach consumers only as new releases. A change MUST NOT reach a consumer except as a new release; each consumer moves only when it changes its own declared version or lockfile.
  2. Each repository records its own reasons. A repository SHOULD state in its own commits why it changed, including why it took a given version; the version pin is the link between histories.
  3. A package is small and single-purpose. A package SHOULD be small enough for one owner to hold its whole scope and SHOULD do one thing; when it outgrows that, it SHOULD be split.
  4. Deploy only what was released. A deployment MUST use a published release pinned to an exact version, never a working tree.
  5. One active owner per repository. At any time, a repository MUST have exactly one owner making changes in it.

Version stairs

Releases form a staircase: each version is a step, and every consumer stands on the step that its own declaration and lockfile resolve to. This is the mechanism that connects packages in MWD.

Terms