When multiple projects need to share substantial infrastructure but each has its own product identity, model them as a **commons** (the shared kernel, in its own repo) plus **descendant clones** (full git clones that diverge product-side). Periodic one-way merge from commons → descendants; changes n
When multiple projects need to share substantial infrastructure but each has its own product identity, model them as a **commons** (the shared kernel, in its own repo) plus **descendant clones** (full git clones that diverge product-side). Periodic one-way merge from commons → descendants; changes never flow back. The commons evolves; descendants specialize. Cheaper than a monorepo when the produc