I've been meditating on the direction of documentation.js going forward. Here's what I've decided on for now:
I'm going to rebuild documentation.js from the ground up, using a frontend that relies heavily on Flow annotations, and only supports export/import following. That means:
- CommonJS import/export will no longer be supported
- JSDoc types will no longer be supported
Additionally, I'm going to build a new output stage, based on Gatsby, batfish, or another prior art.
These changes are bound to be controversial. This means cutting support for many projects that relied on documentation.js's semi-compatibility with JSDoc. But what it ends up being is:
- Supporting full JSDoc in modern JavaScript is a wicked problem. The spec is incomplete, doesn't have parity with Flow or TypeScript, and isn't actively maintained. It's a constantly-blocking upstream with no clear future.
- I could try to, say, adopt the entire JSDoc spec and try to build consensus. Unfortunately, the JavaScript documentation world basically doesn't do consensus. Plus, JSDoc just isn't fun and that's even more time than I have for documentation.js, and from what I've seen, the contributor base won't grow: few people contribute.
- Similarly, supporting CommonJS module visibility is a wicked problem that's cleanly solved by ES6 import/exports.
So, to be clear:
- If you really want to continue the tradition of documentation.js-the-jsdoc-competitor, please fork and maintain a fork! It's an open source project, so my personal move away from that goal doesn't mean the goal is dead: it means the onus is on you, yes, you. Open source is people, and you can be one of those people!
- I really apologize if this catches you by surprise and your project will be pwned by the change. I can, though, say:
- Thank to semver this will never break an existing project
- Old versions will always be available
- As before: open source is people, and I am just one of those people, and you can be one too!