It seems like every few years we recreate a new version of dependency hell. Old school linux users and coders know this pain well. Why do we keep doing this to ourselves?
First some history; like a lot of developers in their 30's the first time I saw dependency hell was on a linux box. Dependency hell on linux normally manifests due to conflicting library versions. I'm sure there are a ton of Gentoo, RedHat or Debian users that can relate. Spending hours patching or finding the perfect combination of dependencies to appease the RPM or GCC gods. Luckily the community did everything it could to fix this: side-by-side installations of versions and smart package managers all but negated the problem.
It was quite a while before I found another instance of dependency hell. Most of my first programming jobs were on Java systems. For those of you who are not Java programmers we have our own version of dependency hell: Jar Hell. Jar Hell is caused when projects a metric shit ton of dependencies. Package management systems like Gradle and Maven have improved the situation, but every now and again you end up with two version of the same library on the classpath.