> Why not utilize submodule for this? It seems easier to implement and more > flexible.
Because submodules are difficult to work with, when wanting to perform an atomic change to several related libraries - i e few developers reach the level of skill needed to perform such a change correctly, and even for those that do, it's a tangled mess that is best kept at arms length. The outcome is usually that libraries end up bigger than the "natural" boundaries of the problems they solve (the std lib is an excellent example of this), just to not have to deal with said mess, which in turn makes it more difficult to manage change and adaptation. See also <https://github.com/status-im/nimbus-build-system/> where we do exactly that - it's neither "easy" nor "flexible", by any definitions of those words ;)