I would consider this in the compiler category as it translates code to HTML/ Latex.
The classical confinement is needed to call optional binaries installed on the host for e.g.:
- bibtex handling (needs perl, bibtex, texlive-base)
- python handling (needs file filter)
while one could pack everything in the snap and use strict confinement, it would blow up the snap size far beyond the current 4.7 MB - penalizing those who do not need the optional functionality.
While doxygen does indeed perform the translation and could be considered a compiler, it isn’t clear that its needs are the same as a compiler. For example, compilers often need access to headers in /usr/include from the host that are not available in the snap’s runtime environment (since /usr/include comes from the base snap, not the host).
In the case of doxygen, it seems that it would not only be possible, but desirable for it to ship its own bibtex, texlive-base, python modules, graphviz, plantuml and anything else it needs to function. In addition to not requiring classic, this will make your snap much more robust and verifiable since you don’t have to worry about existence/versions of the tools doxygen needs.
You seem to have considered this since you later state in your rationale for classic that you want classic to avoid a larger snap size. This is not a supported use case for classic in part because the philosophy of snaps is to have them ship everything they need so that they may run everywhere. Due note that while the snap size will be larger, snaps are compressed and therefore will have a smaller on disk footprint. While the initial download size will be the full (compressed) snap, subsequent downloads are delivered as smaller snap deltas.