|
| 1 | +# Choice of Documetation Site Framework |
| 2 | + |
| 3 | +Author: Bryce Willey |
| 4 | + |
| 5 | +Date: 2025-06-25 |
| 6 | + |
| 7 | +Status: Decided, In progress |
| 8 | + |
| 9 | +While we have various ways of generating and viewing docs locally (manually |
| 10 | +building javadocs, using [enunciate](008-choice-of-rest-docs.md) to view REST |
| 11 | +endpoint docs), there's no easy way to access this information if you don't |
| 12 | +have a local development environment set up (i.e. new developers or folks who |
| 13 | +don't work on this repo much). |
| 14 | + |
| 15 | +We should host this information on a documentation site that is easily findable and |
| 16 | +accessible. The only real choice for where to host it is on GitHub pages, and |
| 17 | +IMO it should be separate from the rest of the [Assembly Line documentation](https://assemblyline.suffolklitlab.org/docs/overview). |
| 18 | +This ADR focuses on how to generate the static HTML that will be hosted on |
| 19 | +GitHub pages. |
| 20 | + |
| 21 | +## Considered Alternatives |
| 22 | + |
| 23 | +* `mvn site` and the maven-site-plugin |
| 24 | +* `docsite`: https://github.com/luiinge/docsite-maven-plugin?tab=readme-ov-file |
| 25 | +* `jekyll`, the default / best supported static site generator for GitHub pages |
| 26 | +* `mkdocs`: https://www.mkdocs.org/ |
| 27 | +* `docusaurus`, what we use for the Document Assembly Line documetation |
| 28 | + |
| 29 | +## Decision Outcome |
| 30 | + |
| 31 | +**mkdocs** |
| 32 | + |
| 33 | +* `+` it Just Works. Out of all of the options tried, needed the least |
| 34 | + customization, and no moving of documetation files. |
| 35 | +* `+` lets us easily add links to other URLs (necessary to include externally |
| 36 | + generated javadocs and Swagger API docs) |
| 37 | +* `+` built on python, so not too much of a lift compared to other choices |
| 38 | +* `-` is a new documetation generator compared to what's already available |
| 39 | +* `-` not the biggest fan of either of the themes, but they're good enough and |
| 40 | + there are [alternate themes available](https://github.com/mkdocs/catalog?tab=readme-ov-file#-theming) |
| 41 | + |
| 42 | +## Pros and Cons of the Alternatives <!-- optional --> |
| 43 | + |
| 44 | +### maven-site-plugin |
| 45 | + |
| 46 | +* `+` already built into maven |
| 47 | +* `-` unintuitive layout and navigation, doesn't emphasize the right things |
| 48 | +* `-` would have to move markdown content to `src/site/markdown`, a very |
| 49 | + confusing place to put documentation when simply browsing the project. |
| 50 | +* `-` cumbersome to use and try to find documentation for (maven has lots of |
| 51 | + documentation, but little of it is immediately usable, or could serve as a good reference) |
| 52 | +* `-` not aesthetically appealing |
| 53 | + |
| 54 | +### docsite |
| 55 | + |
| 56 | +* `+` a better alternative to maven site, can use a maven plugin |
| 57 | +* `-` had conflicting errors with multi-module projects |
| 58 | +* `-` still some wonky-ness when trying to include a docs folder |
| 59 | + |
| 60 | +### jekyll |
| 61 | + |
| 62 | +* `+` the best support when trying do stuff on GitHub pages (prebuilt actions, |
| 63 | + etc.) |
| 64 | +* `-` almost all Jekyll themes don't have good navigation |
| 65 | +* `-` still quite a bit of extra setup to get things set up, without adding a |
| 66 | + lot of extra config and `_layout` dirs, etc. |
| 67 | + |
| 68 | +### Docusaurus |
| 69 | + |
| 70 | +* `+` already used by other Suffolk projects |
| 71 | +* `-` too heavy-weight for this project, still lots of config |
0 commit comments