Our Software Dependency Problem
My own background includes a decade of working with Google’s internal source code system, which treats software dependencies as a first-class concept, and also developing support for dependencies in the Go programming language. In today’s software development world, a dependency is additional code that you want to call from your program. As dependency managers make individual packages easier to download and install, the lower fixed costs make smaller packages economical to publish and reuse. Adding a package as a dependency outsources the work of developing that code—designing, writing, testing, debugging, and maintaining—to someone else on the internet, someone you often don’t know. Dependency managers have scaled this open-source code reuse model down: now, developers can share code at the granularity of individual functions of tens of lines.
Source: research.swtch.com