Rationale for creating separate binary package katex and libjs-katex -------------------------------------------------------------------- We usually use Provides instead of splitting to multiple binary packages when we can remove the Depends on the interpreter. For example node-clipboard provides libjs-clipboard.js. This works when the node package does not ship a user facing significant executable. User facing executable as separate binary was recognized as a valid reason by CTTE guideline in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=934948#54 (relevant section quoted below). "User-facing executable programs associated with a library should usually be packaged in a non-library binary package whose name reflects the program (for example tappy, flatpak, parted) or collection of related programs (for example kmod, libsecret-tools, libglib2.0-bin), rather than being bundled in the same binary package as the runtime library." In case of this particular package, katex binary also provide a command line interface via katex command. So we cannot drop the depends on nodejs (rc bug, nodejs is not an optional component but the interpreter needed to run the katex program). Avoiding unnecessary dependency on interpreters was achieved in all previous instances by removing the dependency on the interpreter for pure libraries. We expect whichever user facing program depending on the library to set Depends on the interpreter. For example gitlab depending on nodejs is enough for node-clipboard to satisfy dependency on nodejs. In this case katex itself is a user facing program not tied to nodejs development (it is used for maths typesetting). So we cannot reasonably expect a user wanting to use katex will have nodejs installed already. Would someone want to use libjs-katex without nodejs installed? Yes: Pandoc can produce output which uses katex rendered with the Javascript runtime of web browsers, not on server side Javascript runtime like Node.js.