On modern "language package managers": it's better to think of them in terms of what they are—orthogonal version control systems. You start with your main, base-level VCS (most commonly Git these days, and therefore not just a VCS, but a DVCS), and then you have this secondary hack of a version control system layered on top—or rather, interwoven directly into the source tree itself. With these secondary SCMs, you're manually writing the VCS metadata (version strings) using your text editor into a file or files that live right beside your source code (instead of a hidden directory that your project is completely agnostic to, like .git). This only exists because people don't really want to completely buy in to distributed version control after all (they still prefer to defer to the network for things they think "shouldn't be in version control[sic]") and in some instances they also don't think the base-level VCS has a rich enough (i.e. semantic) understanding of the objects it's managing.<p>One of the interesting and unfortunate effects of this is that people don't notice it; because they think of these as package managers first (and as version control systems not at all), it means they're not graded against the standards that a version control system ought to be.<p>(Additionally, if you start talking about disregarding conventional wisdom and checking your dependencies into version control[1][2], people become totally irrational and respond as if you're insisting they stop using package managers. You can keep using your current package manager and <i>still</i> check the dependencies in. The only thing you're changing is that when you run `npm update` or whatever, there's no entry in .gitignore that stops Git from picking up the changes. Again, people begin responding totally irrationally if you suggest that they should just let their primary VCS track the changes, as if you've instead just told them to untether themselves from the ISS and go out on their own. Nothing about "check your dependencies into version control" requires you stop tracking upstream, or anything else—it just means to check your dependencies into version control!)<p>1. <<a href="https://www.forrestthewoods.com/blog/dependencies-belong-in-version-control/" rel="nofollow noreferrer">https://www.forrestthewoods.com/blog/dependencies-belong-in-...</a>><p>2. <<a href="https://news.ycombinator.com/item?id=38425042">https://news.ycombinator.com/item?id=38425042</a>>