The process we aim to take for sbt 1.0 is to disassemble sbt into smaller modules and layers. To be clear, sbt 0.13’s codebase already does consist of numerous subprojects.
Layers are more coarse-grained sets of subproject(s) that can be used independently. Another purpose of the modularization is to distinguish between public API and internal implementation. Reducing the surface area of the sbt code base has several benefits:
The following is a conceptual diagram of the layers:
We’ll discuss the details in the next page.