The NPM Dilemma

NPM seems much less resilient than PIP. If you assume that modules will have bugs and compatibility issues with different operating systems and that this condition will increase over time, then it becomes an increasing problem to configure a package with more and more dependencies. But, whereas Python’s solution sees this problem increase only linear in time with the number of dependencies, NPM seems to create a geometric problem.
Whereas you might encounter a problem with one particular dependency that requires you to hack it once in Python, that same dependency could appear numerous times in the node_modules tree. The reliance upon the recursive requirement system also increases the permanance/persistence of whatever initial configuration settings were established when each package was built regardless of whether it is compatible with other (future) systems rather than making it easy for future users to keep code up-to-date.

Since Node has been developed by people using a Mac and it is only 6–7 years old, this problem has been masked behind the similarity of the development environments and the fact that a linear curve looks much like an exponential curve initially. But, already some node frameworks such as Kraken and Sails are beginning to reveal the cracks in NPM. For the time being these problems have been born by developers who know the ecosystem is new and don’t mind spending the time setting up their own workflow. But, configurability is always a major limit to scaleability.