In order to know if it is a good idea to migrate to jsdoc, we need to know what things does jsduck do that jsdoc doesn't and if there are alternatives.
=What does jsduck do that we wouldn't be able to do in jsdoc?=
List and alternatives
=Are there other tools that could be used instead of jsdoc?=
---
Features that jsduck provides and why it was chosen listed:
>>! In T138401#3054806, @Krinkle wrote:
> Here's a summary of some of JSDuck's features that I believe made it our choice originally:
>
> * **User-friendly** interface.
> * **Search** feature. (Client-side, serverless)
> * Stable **permalinks** to classes and methods.
> * Support **Markdown** for all text content.
> * Easy discovery through a browsable class hierarchy. (e.g. Sidebar shows "mw.Title" class nested in "mw" singleton)
> * Support for class **inheritance** and **mixins**, and pages include inherited members by default.
> * Support for singletons.
> * Support for private members.
> * Support for static members.
> * Support for **events**.
> * Support for documenting which events are **emitted** by a method. (`@fires`)
> * Support for private classes.
>
> These less-essential features are also quite nice:
> * Interface allows toggling private members and private classes (and hidden by default).
> * Interface shows in which file(s) a class is defined.
> * Each class page show class hierarchy and mixins, in both directions.
> * **Live examples** using `@example` that make for interactive demos in the context of documentation. Especially useful to help understand how UI library works and which widgets to use.
> * Classes organised by group, on the homepage. ("Categories")
> * Easy to **extend** with additional tags. (`@context`, `@see`, `@since`, etc.)
> * Intelligent linking to mentioned classes and methods. ("`Foo bar #baz`")
> * Support for documenting properties of parameters that are objects.
> * Support for documenting properties of returned objects.
> * Support for documenting callback parameters.
> * Support for documenting upstream code with pure comments. ("jsduck.external.js")
> * Support for class aliases.
> * Type **validation** (unknown param or return type produces an error.)
>
> Of course, we've also come across various limitations over time:
> * Event names cannot contain dots. [jsduck #497](https://github.com/senchalabs/jsduck/issues/497) (`wikipage.content` documented as `wikipage_content`)
> * There cannot be a class and singleton with the same case-insensitive name. [jsduck #304](https://github.com/senchalabs/jsduck/issues/304) (`mw.notification` and `mw.Notification` documented as `mw.Notification_`)
> * No concept of "modules", which would allow grouping classes together. As well as allowing methods to be documented as being part of a module without having a global class (e.g. `module.exports`). [jsduck #553](https://github.com/senchalabs/jsduck/issues/553)
> * No longer actively maintained.
> * Written for **Ruby** instead of Node.js.
> * No support for ES6 syntax. T156469. [jsduck #630](https://github.com/senchalabs/jsduck/issues/630)
Timebox: 4hrs