isaacs/node-mkdirp

Suprised and confused

Raynos opened this issue · 2 comments

Running npm install mkdirp -S has worked stably for years until recently.

The original implementation of mkdirp that I know & love is straightforward, a single file, easy to read and obvouis what it does.

Now the new version is spread out over multiple files and doing all kinds of funky stuff thats hard to follow and hard to read.

Also its major version bump breaks callback support.

Honestly I would have expected the mkdirp package to be effectively frozen.

The fact that there is a new major version with completely rewritten code and a new API but is using the same package name on npm is suprisiing and confusing to me.

I would expect a change this big to just be a new package name on npm without trampling over the existing package name.

Major version bumps can include breaking changes.

The state of JavaScript and node.js have advanced a lot in the years since mkdirp was written.

  • test coverage is much easier to track and focus on individual files
  • promises are a native part of the language
  • recursive mkdir is (mostly) implemented in node's c++ layer, and needs logic to fork based on node version and custom fs impl overrides.
  • Windows was never properly supported in mkdirp, resulting in lots of bugs that were very hard to fix without a rewrite.

By asking this module to be "frozen", you're asking it to fade away unmaintained, which is what was happening. I'd prefer that "mkdirp" refer to a module that makes directories, rather than a module that used to.

I can appreciate that you're surprised and unhappy that your expectation was violated. It turns out that expectation (that I not maintain code I use to exacting standards of test coverage, modern support, and high performance) was incorrect.

These well thought out reasons. I respect that.