If you develop on Windows, it is very easy to accidentally do: var Q = require("Q");
for the package named "q". Similarly for modules, one could do: var x = require("./LiB/UtiL/X"); for the module which is checked in to source control as "lib/util/x" (and appears in Windows explorer lowercased as well). The problem is, both of these work on Windows, since in Windows filenames are case-insensitive. But when sharing code across platforms, your code will break everywhere else. I don't know how many people develop on Windows and then push to *nix hosting (e.g. Heroku or Nodejitsu), but it's probably significant. This is a moderately hard problem to debug, as you have to SSH into your *nix box and run your program to find out why the server's suddenly down by running your program manually. Or in the library case, you have to wait for someone to use your library on *nix, AND be nice enough to not give up in disgust when they get "cannot find module 'Q'". ---- I think the best solution would be to make module names case-sensitive on Windows. I know it's a change to the module system, but this problem has bit us several times.