Documentation Contributor Guide: First draft of new StarlingX guide

I have created the initial draft of a new StarlingX guide called
"Documentation Contributor Guide".  The guide lives alongside
the existing StarlingX contributor guides.  This involved an
update to the contributor folder's "index.rst" file and a new
content file named stx-docs/doc/source/doc_contribute_guide.rst".

Change-Id: I54adedb520869bed462dfee30098404a09dfca8e
Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
This commit is contained in:
Scott Rifenbark 2018-12-03 11:38:30 -08:00
parent 0644cfb828
commit 0019c23725
2 changed files with 448 additions and 1 deletions

View File

@ -0,0 +1,445 @@
===============================
Documentation Contributor Guide
===============================
This guide provides information that allows you to contribute to the
`StarlingX documentation <https://docs.starlingx.io/>`_.
The information focuses on what it takes to materially contribute to the
StarlingX documentation.
Information common to OpenStack workflow, writing styles, and conventions
is not included in this guide.
You can find that type of information in the
`OpenStack Documentation Contributor Guide <https://docs.openstack.org/doc-contrib-guide/index.html>`_.
---------
Locations
---------
StarlingX documentation consists of several types of manuals and is found
in the **stx-docs** and **stx-specs** projects (i.e. repositories).
These projects contain hierarchy that organizes the documentation by topic:
- **Installation Guide**
- Describes how to install StarlingX onto Bare Metal or into a virtual
environment.
This guide is located in **stx-docs/doc/source/installation_guide**.
- **Developer Guide**
- Describes how to build a StarlingX ISO image from the "master" branch.
This guide is located in **stx-docs/doc/source/developer_guide**.
- **Project Specifications**
- Describes specifications, specification templates, and processes
for submitting a specification.
This guide is located in **stx-specs/doc/source**.
- **REST API Reference**
- Describes StarlingX APIs.
The landing page for the API Reference manuals is located in
**stx-docs/doc/source/api-ref**.
The RST files that provide content to the API Reference manuals
are located in **stx-docs/api-ref/source**.
- **Release Notes**
- Provides release-specific information.
This guide is located in **stx-docs/doc/source/releasenotes**.
- **Contribute**
- Provides guides on how to contribute to StarlingX API documentation,
Release Notes, and general documentation.
These guides are located in **stx-docs/doc/source/contributor**.
--------------------
Directory Structures
--------------------
Directory structures vary depending on the type of documentation involved.
Basically, you can think of the structure as one or more RST files per
book.
A simple book consists of a single **index.rst** file.
A more complicated book could consist of an **index.rst** file as the
book's landing page and a set of additional RST files for major sections
of the book.
Following is the structure of the **stx-docs** repository:
::
.
├── api-ref
│   └── source
│   ├── api-ref-blockstorage-v2-cgcs-ext.rst
│   ├── api-ref-compute-v2-cgcs-ext.rst
│   ├── api-ref-image-v2-cgcs-ext.rst
│   ├── api-ref-networking-v2-cgcs-ext.rst
│   ├── conf.py
│   └── index.rst
├── doc
│   └── source
│   ├── api-ref
│   │   └── index.rst
│   ├── conf.py
│   ├── contributor
│   │   ├── api_contribute_guide.rst
│   │   ├── doc_contribute_guide.rst
│   │   ├── index.rst
│   │   └── release_note_contribute_guide.rst
│   ├── developer_guide
│   │   └── index.rst
│   ├── index.rst
│   ├── installation_guide
│   │   ├── controller_storage.rst
│   │   ├── dedicated_storage.rst
│   │   ├── duplex.rst
│   │   ├── index.rst
│   │   ├── installation_libvirt_qemu.rst
│   │   └── simplex.rst
│   └── releasenotes
│   └── index.rst
├── README.rst
├── test-requirements.txt
└── tox.ini
The structure for the API Reference documentation deserves
some extra explanation.
Most RST files for the API Reference content reside in top-level
StarlingX repositories (e.g. **stx-metal**, **stx-config**, and so
forth).
However, four API Reference RST files do not: "Block Storage",
"Compute", "Image", and "Network".
These RST files reside in **stx-docs/api-ref/source** as seen
in the previous tree diagram.
While the **stx-docs/api-ref/source/index.rst** file does exist along
side these other four RST files, it does so only because the Sphinx
process needs that index file to build out the final web documentation
tree.
The actual landing page (content) for the API Reference documents
is in the **stx-docs/doc/source/api-ref/index.rst** file.
Here is the structure of the **stx-specs** project:
::
.
├── doc
│   └── source
│   ├── conf.py
│   ├── index.rst
│   └── specs
│   ├── 2019.03
│   │   ├── approved -> ../../../../specs/2019.03/approved
│   │   ├── implemented -> ../../../../specs/2019.03/implemented
│   │   ├── index.rst
│   │   └── template.rst -> ../../../../specs/2019.03/approved/STX_Example_Spec.rst
│   └── instructions.rst -> ../../../specs/instructions.rst
├── README.rst
├── specs
│   ├── 2019.03
│   │   ├── approved
│   │   │   ├── containerization-2002840-local-docker-registry.rst
│   │   │   ├── containerization-2002843-kubernetes-platform-support.rst
│   │   │   ├── containerization_2003907_docker-image-generation.rst
│   │   │   ├── containerization-2003908-armada-integration.rst
│   │   │   ├── containerization-2003909-helm-chart-overrides.rst
│   │   │   ├── containerization-2003910-system-deployment-of-containerized-openstack-infrastructure.rst
│   │   │   ├── mirror_2003906_enable_external_mirror.rst
│   │   │   ├── multi-os-2003768-refactor-init-config-patches.rst
│   │   │   ├── multi-os-2004039-variable-substitution.rst
│   │   │   ├── standardize-makefiles-for-multi-os.rst
│   │   │   ├── STX_Example_Spec.rst
│   │   │   └── sysinv_2002950-decouple-system-configuration-from-inventory.rst
│   │   └── implemented
│   │   └── _placeholder.rst
│   ├── approved
│   │   └── containerization-2002844-CEPH-persistent-storage-backend-for-Kubernetes.rst
│   ├── instructions.rst
│   └── STX_Example_Spec.rst -> 2019.03/approved/STX_Example_Spec.rst
├── test-requirements.txt
└── tox.ini
The **stx-specs/docs/source/index.rst** file is the main landing page for the
StarlingX specifications page (<https://docs.starlingx.io/specs/index.html>`_).
The **stx-specs/specs/2019.03** area contains the RST files for approved and
implemented specs.
-----------------
Updating a Manual
-----------------
If you need to update an existing manual, you need to find the
appropriate RST source file, make your modifications, test them
(i.e. build the manual), and then submit the changes to Gerrit
for approval.
As an example, suppose you wanted to update the
`Developer Guide <https://docs.starlingx.io/developer_guide/index.html>`_.
The structure for the Developer Guide is as follows:
::
├── doc
│   └── source
│   ├── developer_guide
│   │   └── index.rst
The content for the manual exists in the **index.rst** file.
This file is the landing page and all the content.
Suppose you needed to update a more complicated manual such as the
`Installation Guide <https://docs.starlingx.io/installation_guide/index.html>`_.
That manual's source structure is as follows:
::
├── doc
│   └── source
│   ├── installation_guide
│   │   ├── controller_storage.rst
│   │   ├── dedicated_storage.rst
│   │   ├── duplex.rst
│   │   ├── index.rst
│   │   ├── installation_libvirt_qemu.rst
│   │   └── simplex.rst
The **index.rst** file is the landing page plus the main content for the
Installation Guide.
The remaining five RST files hold additional content for the guide accessed
through links from the landing page.
-----------------
Creating a Manual
-----------------
Creating a new manual for **stx-docs** involves minimally providing the
**index.rst** file.
If the manual is more complex with additional content outside of the
**index.rst** file, you need to provide additional RST files as well.
As an example, consider a new manual that resides in
**stx-docs/doc/source/my-guide**.
Furthermore, suppose this manual's **index.rst** file contained two
links to additional complicated topics: "Topic 1" and
"Topic 2".
The content for the new manual exists in three files:
* stx-docs/doc/source/my-guide/index.rst**
* stx-docs/doc/source/my-guide/topic_1.rst**
* stx-docs/doc/source/my-guide/topic_2.rst**
Following shows the hierarchy:
::
├── doc
│   └── source
│   ├── my_guide
│   │   ├── index.rst
│   │   ├── topic_1.rst
│   │   ├── topic_2.rst
-----------------------
Creating the Index File
-----------------------
The **index.rst** file provides captioning, a brief
description of the document, and the table-of-contents (TOC) structure
with instructions on how to display or hide sub-topics.
The syntax of the **index.rst** file is fixed. Following shows the
sample **index.rst** file for the new guide:
::
========
My Guide
========
The new guide.
- :ref:`Topic 1 <topic_1>`
- :ref:`Topic 2 <topic_2>`
.. toctree::
:hidden:
topic_1
topic_2
Following are explanations for each of the four areas of the
**index.rst** file:
- **Reference title:** Literal title that is used in the rendered
document.
In this case it is "My Guide".
- **Reference summary:** Literal summary of the rendered document.
In this case it is "The new guide."
- **Table-of-Contents tree structure and sub-topic parameters:** The
directive to create a TOC and to specify the embedded topic links
should remain hidden.
If you want sub-topics to be part of the TOC, use the
":maxdepth: x" directive where "x" is the depth you desire for
sub-topics in the TOC.
- **RST source file root name:** The source files to use as content.
In this case, the file references are "topic_1" and "topic_2".
These reference the **topic_1.rst** and **topic_2.rst** files
in the same folder as the **index.rst** file.
----------------------------------------------------
Integrating the New Guide Into the Documentation Set
----------------------------------------------------
The previous section described how you can provide the files
you need to create a new guide.
This section describes how you can get the new guide to be part
of the TOC StarlingX uses when displaying all the documentation
(i.e. `StarlingX Documentation <https://docs.starlingx.io/>`_).
The **stx-docs/doc/source/index.rst** file contains the structure
that defines the StarlingX Documentation landing page.
Inside the file, is a "Sections" area that lists the documents
that appear in the TOC.
Following is the updated file that shows the example guide
included.
The "my_guide/index" line ensures the new guide is included
in the TOC along with the existing guides:
::
--------
Sections
--------
.. toctree::
:maxdepth: 1
installation_guide/index
developer_guide/index
Project Specifications <https://docs.starlingx.io/specs/>
api-ref/index
releasenotes/index
contributor/index
my_guide/index
--------------------------
Building the Documentation
--------------------------
To build the documentation locally in HTML format, use the
following command:
.. code:: sh
$ tox -e docs
The resulting directories and HTML files looks like:
::
stx-docs/doc/
├── build
│   ├── doctrees
│   │   ├── api-ref
│   │   │   └── index.doctree
│   │   ├── contributor
│   │   │   ├── api_contribute_guide.doctree
│   │   │   ├── doc_contribute_guide.doctree
│   │   │   ├── index.doctree
│   │   │   └── release_note_contribute_guide.doctree
│   │   ├── developer_guide
│   │   │   └── index.doctree
│   │   ├── environment.pickle
│   │   ├── index.doctree
│   │   ├── installation_guide
│   │   │   ├── controller_storage.doctree
│   │   │   ├── dedicated_storage.doctree
│   │   │   ├── duplex.doctree
│   │   │   ├── index.doctree
│   │   │   ├── installation_libvirt_qemu.doctree
│   │   │   └── simplex.doctree
│   │   ├── my_guide
│   │   │   ├── index.doctree
│   │   │   ├── topic_1.doctree
│   │   │   ├── topic_2.doctree
│   │   └── releasenotes
│   │   └── index.doctree
│   └── html
│   ├── api-ref
│   │   └── index.html
│   ├── contributor
│   │   ├── api_contribute_guide.html
│   │   ├── doc_contribute_guide.html
│   │   ├── index.html
│   │   └── release_note_contribute_guide.html
│   ├── developer_guide
│   │   └── index.html
│   ├── genindex.html
│   ├── index.html
│   ├── installation_guide
│   │   ├── controller_storage.html
│   │   ├── dedicated_storage.html
│   │   ├── duplex.html
│   │   ├── index.html
│   │   ├── installation_libvirt_qemu.html
│   │   └── simplex.html
│   ├── my_guide
│   │   ├── index.html
│   │   ├── topic_1.html
│   │   ├── topic_2.html
│   ├── objects.inv
│   ├── releasenotes
│   │   └── index.html
│   ├── search.html
│   ├── searchindex.js
│   ├── _sources
│   │   ├── api-ref
│   │   │   └── index.rst.txt
│   │   ├── contributor
│   │   │   ├── api_contribute_guide.rst.txt
│   │   │   ├── doc_contribute_guide.rst.txt
│   │   │   ├── index.rst.txt
│   │   │   └── release_note_contribute_guide.rst.txt
│   │   ├── developer_guide
│   │   │   └── index.rst.txt
│   │   ├── index.rst.txt
│   │   ├── installation_guide
│   │   │   ├── controller_storage.rst.txt
│   │   │   ├── dedicated_storage.rst.txt
│   │   │   ├── duplex.rst.txt
│   │   │   ├── index.rst.txt
│   │   │   ├── installation_libvirt_qemu.rst.txt
│   │   │   └── simplex.rst.txt
│   │   ├── my_guide
│   │   │   ├── index.rst.txt
│   │   │   ├── topic_1.rst.txt
│   │   │   ├── topic_2.rst.txt
│   │   │   ├── topic_3.rst.txt
│   │   │   ├── topic_4.rst.txt
│   │   │   └── topic_5.rst.txt
│   │   └── releasenotes
│   │   └── index.rst.txt
│   └── _static
...
├── Makefile
├── requirements.txt
├── setup.cfg
├── setup.py
----------------------------------
Viewing the Rendered Documentation
----------------------------------
To view the rendered document in a browser, open up
the **index.html** file in your browser.
For the new example guide, the file is
**stx-docs/doc/build/my_guide/index.html**.
**NOTE:** The PDF build uses a different tox environment and is
currently not supported for StarlingX.

View File

@ -7,7 +7,8 @@ Contribute
Please use the following guides when contributing to the StarlingX
documentation. Additional information about contributing to
OpenStack documentation can be found in the
`OpenStack API documentation guide`_.
`OpenStack API documentation guide`_ and the
`OpenStack Documentation Contributor Guide <https://docs.openstack.org/doc-contrib-guide/index.html>`_.
.. _`OpenStack API documentation guide`: https://docs.openstack.org/doc-contrib-guide/api-guides.html
@ -16,3 +17,4 @@ OpenStack documentation can be found in the
api_contribute_guide
release_note_contribute_guide
doc_contribute_guide