Antora

Documentation Sites for Software Teams

Dan AllenOpenDevise

A static site generator for docs

antora git to site
jamstack
Antora Markup
= AsciiDoc

The *M* in JAM stands for *Markup*.
In Antora, the markup is AsciiDoc.
Antora uses Asciidoctor.js to process the AsciiDoc.

== Why AsciiDoc?

AsciiDoc is lightweight, yet semantically rich.
And it can be easily extended to add more functionality.

If you want to write documentation using lightweight markup,
AsciiDoc is the way to go!
Authoring

AsciiDoc

Publishing

Antora

screenshot couchbase docs
https://docs.couchbase.com
screenshot rudder docs
https://docs.rudder.io
screenshot mulesoft
https://docs.mulesoft.com

Vision 🔭

[docs] as {code}

Docs are integral

docs teams
curb appeal
Documentation is the “curb appeal” of software
thumbs up thumbs down
93% 0% 20% 40% 60% 80% 100% Problems encountered in open source Source: opensourcesurvey.org Incomplete or confusing documentation Unresponsiveness Dismissive responses Conflict Unexplained rejection Unwelcoming language or content

[docs] as {code}

To produce documentation by sharing conventions, processes, and tools from software development.

Features 📸

Distributed
content

Standard
structure

Multi-repo static site generator

antora git to site
antora pipeline 1
playbook.yml
site:
  title: Couchbase Docs
  url: https://docs.couchbase.com
  start_page: home::index.adoc
content:
  branches: release/*
  sources:
  - url: .
    branches: HEAD
    start_path: home
  - url: https://github.com/couchbase/couchbase-operator.git
    start_path: docs/user
  - url: https://github.com/couchbase/docs-server.git
...
antora pipeline 2

Standard Project Structure

docs project structure

Component
repositories

Version
branches

Versions stored in branches

git branching
antora.yml
name: server
version: '6.0'
title: Couchbase Server
start_page: introduction:intro.adoc
nav:
- modules/ROOT/nav.adoc
couchbase version selector

Source-to-source
references

Ubiquitous
preview

resource id anatomy
page id anatomy
xref macro org
xref examples
resource examples
  • Content
  • UI

Dedicated
UI project

Shared
UI bundle

  • Developed independently
  • Common style across products
  • Fully customizable
playbook.yml
...
ui:
  bundle:
    url: https://github.com/couchbase/docs-ui/.../ui-bundle.zip
screenshot default
screenshot couchbase docs
screenshot rudder docs
screenshot mulesoft

Dev-friendly
tools

DevOps
practices

page.adoc
= Topic Title

Content is written in plain text.
No XML or HTML is required.

== Subject A

.Screenshot
image::screenshot.png[]

== Subject B

TIP: AsciiDoc supports various content types.
nav.adoc
* xref:overview.adoc[Overview]
* xref:whats-new.adoc[What's New]
* Install
 ** xref:install:requirements.adoc[Requirements]
 ** xref:install:index.adoc[Install Application]
* Run
 ** xref:run:index.adoc[Run Application]
 ** xref:run:cli-reference.adoc[CLI Reference]
pipeline steps text only
antora ci cd pipeline
antora ci cd pipeline

Demo 🍿

Wrap-Up

Antora integrates documentation production into an existing agile development workflow.

Thank You!

antora.org

Slides & Transcript: gitlab.com/opendevise/talks/docs-sites-for-software-teams/tree/devoxxuk-2019