i will say that elm has a very, very nice dependency management system i've seen. one command to get everything into a project-local directory, with version ranges specified in the project config. and enforced semantic versioning -- you must actually bump the major version if you change the api