The second phase is to add a dependency manager to the system
Init & configure
Install, Update and upgrade
Build process
DepSolver (SAT)
[_] CI/CD
Design principles
The system must support all different ways of using dependencies (language specific source colators, language specific package manager, third party managers, vendoring, system dependencies)
The dependency system must prevent people from getting the same dependency via multiple ways
Maintenance costs should be borne mostly by those who get the benefit
A project must support being either a dependency provider or consumer transparently
Build definitions must not dictate how or from where a dependency should be obtained
Subprojects must be configured and build in solated sandboxes with narrow and explicit interfaces between them
Try to support for simple cases of mixing build system (general case challenge)
Provide a centralised dependency downloader, but do not mandate its use