DependencyTrack / dependency-track

Dependency-Track is an intelligent Component Analysis platform that allows organizations to identify and reduce risk in the software supply chain.
https://dependencytrack.org/
Apache License 2.0
2.6k stars 547 forks source link

Proposal: Migrate docs from Jekyll to MkDocs + Material for MkDocs #1842

Open nscuro opened 2 years ago

nscuro commented 2 years ago

Current Behavior:

We currently use Jekyll to build our documentation.

Jekyll is a generic static site generator and was never really intended for technical documentation, but for websites and blogs.

Although the template being used provides some basic features (syntax highlighting, search), I feel like it looks a bit dated and is missing some features that'd make both writing and reading our docs more appealing.

Jekyll is also painful to setup locally (requires Ruby, Ruby Gems, Bundler, building of native extensions).

Proposed Behavior

What I'm proposing is the following:

MkDocs is written in Python and can be installed with pip, doesn't need native extensions and is made for writing technical documentation. Like Jekyll, it lets us write in Markdown (which can be extended in multiple ways) and can be deployed to GitHub pages and supports custom domains.

Linking to internal pages is less painful than with Jekyll, and it has a great built-in search UX. It auto-generates table-of-contents for each page, which makes discovery and navigation a lot easier. Creating links to specific sections of a page is also very easy, which makes referring to our docs in Slack or GitHub issues a bit more practical.

Material for MkDocs provides a more modern look, ships with loads of advanced features and is highly customizable.

Because so many things are built-in, we won't have to deal with many scripts or stylesheets anymore.

For reference, here are some examples I found that also use this stack:

nscuro commented 2 years ago

Threw a quick POC together and migrated a few pages here: https://nscuro.github.io/dependency-track/4.6.0-SNAPSHOT/

Docs are automatically deployed using GitHub Actions: https://github.com/nscuro/dependency-track/blob/mkdocs/.github/workflows/deploy-docs.yml

Using mike, we can serve multiple versions of the documentation: https://github.com/nscuro/dependency-track/tree/gh-pages