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 consists of numerous subprojects.
Layers are more course-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 have several benefits:
The following is a conceptual diagram of the layers:
We’ll discuss the details in the next page.