There's a balance to be found. Despite Log4Shell, the JVM ecosystem with Maven Central doesn’t suffer as much as npm. And Java, Kotlin, etc. are juicy targets, with all the enterprise software and big banks moving gazillion-trillion fiat moneys every day, so I’m sure the whole Java supply chain gets targeted quite a bit.
I don’t think reinventing the wheel or embedding all dependencies is a good solution either. I even disagree with Prime here. We need automated patch version bumps to protect ourselves against devastating zero-day exploits when they really matter. Of course, this shouldn’t go to prod with zero human supervision.
I use tools like Renovate and Dependabot as part of my pipeline, along with proper code and dependency scanners. I also actually review what’s going on, let updates “soak” in properly isolated dev and QA environments, and use observability tools. Slowly cooked, proper development might get you hated or even fired from startups and Big Tech, but it’s how you get stable software while mitigating risks as much as possible (nothing is perfect).
That said, I agree that “left-pad” is not the right granularity for dependencies. The whole JavaScript development culture is dangerous; it’s impossible to track that many dependencies. We need a manageable ecosystem of packages with some grown-ups looking after the supply chain. The Go ecosystem isn’t as mature (or boring) as Java, and certainly not as stable as C, but I think it’s still a bit better than JS. Even Nostr Go codebases, which tends to be more chaotic / startup-ish / hobbyist in nature, usually avoids excessive dependencies and needless CVEs. Heck, even in PHP (the hobbyist language of the century) dependencies are more coarse-grained and manageable than in JS.