You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

Documentation Contributor Guide

This guide describes how to create documentation for the O-RAN Software Community (O-RAN-SC) component. platform. O-RAN -SC repositories create a variety of content depending on the nature of the project. For example, projects delivering a component may have different types of content from a project that creates libraries for a software development kit. The content from each project may be used together as a reference for that project and/or be used in documents are tailored to a specific user audience and task they are performing.

Much of the content in this document is derived from similar documentation processes used in other Linux Foundation Projects including ONAP, OPNFV and Open Daylight.

O-RAN-SC documentation is stored in git repositories, changes are managed with gerrit reviews, and published documents generated when there is a change in any source used to build the documentation.

Authors create source for documents in reStructured Text (RST) that is and published on doc.oran-osc.org(not ready yet). The O-RAN-OSC wiki and other web sites can reference these rendered documents directly, allowing projects to easily maintain current release documentation.

Tools for Creating Documentation in RST

Editing Tools

Ubuntu

  1. ReText: Ubuntu Software Store or follow the instructions on the project’s Github page; ReText has a live preview feature
  2. Atom with the RST-Preview Package
  3. Notepadqq
  4. gedit

All Platforms

  1. ReST Editor for Eclipse

  2. Visual Studio Code with the vscode-restructuredtext extension

VIM

reStructuredText syntax highlighting mode

VST (Vim reStructuredText) plugin for Vim7 with folding.

VOoM plugin for Vim that emulates two-pane outliner with support for reStructuredText (since version 4.0b2).

Riv: Take notes in rst Vim plugin to take notes in reStructured text.

  1. Emacs with rst-mode turned on

  2. PyCharm

  3. Atom with RST plugins

Web-based Editors

  1. NoTex - it can handle complete projects. You can upload your files and edit stuff.
  2. Online reStructuredText Editor - It does not support all reST constructs (like the .. codeblock:: directive),

Screen Capture and Edit

Ubuntu

Shutter: Ubuntu Software Store or from PPA instructions on the project’s websiteMac

Mac

Greenshot: Mac App Store ($1.99)

1.2.3. Windows

Greenshot (free)

Component Docs Guide

In the past, standard documentation methods included ad-hoc Word documents, PDFs, poorly organized wikis, and other, often closed, tools like Adobe FrameMaker. The rise of DevOps, Agile, and Continuous Integration, however, created a paradigm shift for those who care about documentation because:

1. Documentation must be tightly coupled with code/product releases. In many cases, particularly with open-source products, many different versions of the same code can be installed in various production environments. DevOps personnel must have access to the correct version of documentation.

2. Resources are often tight, volunteers scarce. With a large software base like OSC, a small team of technical writers, even if they are also developers, cannot keep up with a constantly changing, large code base. Therefore, those closest to the code should document it as best they can, and let professional writers edit for style, grammar, and consistency.

Plain-text formatting syntaxes, such as reStructuredText (RST), are a good choice for documentation because:

  1. They are editor agnostic
  2. The source is nearly as easy to read as the rendered text
  3. Documentation can be treated exactly as source code is treated
  4. Shallow learning curve

The Documentation team chose reStructuredText largely because of Sphinx, a Python-based documentation build system, which uses reStructuredText natively. In a code base as large as OSC’, cross-referencing between component documentation was deemed critical. Sphinx and reStructuredText have built-in functionality that makes collating and cross-referencing component documentation easier.

The Sphinx version is defined in `documentation/etc/requirements.txt`.

RST vs the Wiki - Which Docs Go Where

Frequently, developers ask where documentation should be created. Should they always use reStructuredText/Sphinx? Not necessarily. Is the wiki appropriate for anything at all? Yes.

It’s really up to the development team. Here is a simple rule:

The more tightly coupled the documentation is to a particular version of the code, the more likely it is that it should be stored with the code in reStructuredText.

Two examples on opposite ends of the spectrum:

Example 1: API documentation is often stored literally as code in the form of formatted comment sections. This would be an ideal choice for reStructuredText stored in a docs repo.

Example 2: Meeting notes, release plans – the wiki would be a better choice for this.

The Docs team encourages component teams to store as much documentation as reStructuredText as possible because:

  • The Docs team can more easily edit component documentation for grammar, spelling, clarity, and consistency

  • A consistent formatting syntax across components will allow the doc team more flexibility in producing different kinds of output

  • The documentation can easily be reorganized

  • Wiki articles tend to grow stale over time as the people who write them change positions or projects

RST Tools and Resources

For detailed information ReStructuredText and how to best use the format, see:

  1. RST Primer
  2. RST Quick Reference
  3. RST Directives
  4. RST Cheatsheet

A list of RST tools is available on the Tools for Creating Documentation in RST page. Sphinx is also a good tool on Linux system


Directory Structure 

Each project have a docs folder as follow:

Required Files

  1. installation-guides.rst contains how to install O-RAN SC component

  2. release-notes.rst contains the release notes for the component

  3. developer-guide.rst contains information that a developer needs to know in order to work on the component

    1. this should be very technical, aimed at people who want to help develop the components
    2. this should be how the component does what it does, not a requirements document of what the component should do
    3. this should contain what language(s) and frameworks are used, with versions
    4. this should contain how to obtain the code, where to look at work items (Jira tickets), how to get started developing
  4. api-docs.rst contains details on the component’s API

  5. user-guide.rst contains information on how to use and configure the component; most components will not have a user guide
  1. if the guide contains sections on third-party tools, is it clearly stated why the OSC platform is using those tools? are there instructions on how to install and configure each tool/toolset?
  2. does the guide state who the target users are? for example, modeler/data scientist, OSC platform admin, marketplace user, design studio end user, etc
  3. if there are instructions, they are clear, correct, and fit for purpose
  4. does the guide contain information more suited for a different guide?
  5. a user guide should be how to use the component or system; it should not be a requirements document
  6. a user guide should contain configuration, administration, management, using, and troubleshooting sections for the feature

Note: It is not mandatory to have all files in your repository, please select the files you need.

Templates

Templates are available in the documentation project under doc/doc-templates. You can clone the documentation project or download from here. People who wish to contribute OSC docs please free free to download templates. Feedback are welcome.

Current list of templates:

  1. api-docs.rst 
  2. developer-guides.rst
  3. installation-guides.rst
  4. release-notes.rst
  5. user-guides.rst

The templates themselves also contain guidance on what topics to include in the contents. Please read the contents of the templates!

Writing Guidelines

Following these writing guidelines will keep OSC documentation consistent and readable. Only a few areas are covered below, as we don’t want to make it too complex. You can’t go wrong keeping things simple and clear.

Don’t get too hung up on using correct style. We’d rather have you submit good information that doesn’t conform to this guide than no information at all. OSC’ Documentation project team will be happy to help you with the prose.

General Guidelines for All Documents

  1. Use standard American English and spelling
  2. Use consistent terminology
  3. Write in the active voice, using present simple tense when possible
  4. Write objective, professional content
  5. Keep sentences and paragraphs short and clear
  6. Use a spell checker

Abbreviations and Acronyms

Write out the term the first time it appears in the document, immediately followed by the acronym or abbreviation in parentheses, i.e. ReStructuredText (RST). Then use the acronym in the rest of the document. In diagrams, if space allows, write out the full term. Use “an” before an acronym that begins with a vowel sound when spoken aloud; use “a” before an acronym that begins with a consonant sound when spoken aloud. Examples: an RST file, a PMML file.

GUI Elements

In general, write menu names as they appear in the UI. For example, if a menu or item name is all caps, then write it all caps in the document.

Headings (Titles)

  1. Use brief, but specific, informative titles
  2. Use capitalization; do not end with a period or colon
  3. Use a gerund to begin section titles if it makes sense. Examples: Configuring, Managing, Starting
  4. Use descriptive titles for tables and figures titles; do not number tables or figures; do not (in general) add titles for screen shots

Use the following to create the Document title:

= with overline/underline

Use the following symbols to create headings:

Section 1: * with overline/underline

Section 1.1: - with underline

Section 1.1.1: + with underline

Section 1.1.1.1: ^ with underline

Consider rewriting the content if your document needs more than 4 levels of headings.

Non-Numbered Headings in RST

Below is an example of how to denote headings of various levels in RST.

See the Section Headers Example - No Automatic Numbering for how this renders in HTML.


=================
H1 Document Title
=================

***************
Section 1 Title
***************

Section 1.1 Title
-----------------

Section 1.1.1 Title
+++++++++++++++++++

Section 1.1.1.1 Title
^^^^^^^^^^^^^^^^^^^^^

Section 1.1.1.1 Title2
^^^^^^^^^^^^^^^^^^^^^^

Another Section at the 1.1.1 Level
++++++++++++++++++++++++++++++++++

How the Header is Underlined Makes all the Difference
+++++++++++++++++++++++++++++++++++++++++++++++++++++

Section 1.2 Title
-----------------

Section 1.2.1 Title
+++++++++++++++++++

Section 1.2.2 Title
+++++++++++++++++++

***************
Section 2 Title
***************

***************
Section 3 Title
***************

Automatically Numbered Headings in RST

RST supports automatic numbering of sections. Place the sectnum directive at the top of your page. See the 1   Section Headers Example - Automatic Numbering for how this renders in HTML. Note that RST considers the Document Title to be the first Header and will number it!

=================
H1 Document Title
=================

.. sectnum::
***************
Section 1 Title
***************

Section 1.1 Title
-----------------

Section 1.1.1 Title
+++++++++++++++++++

Section 1.1.1.1 Title
^^^^^^^^^^^^^^^^^^^^^

Section 1.1.1.1 Title2
^^^^^^^^^^^^^^^^^^^^^^

Another Section at the 1.1.1 Level
++++++++++++++++++++++++++++++++++

How the Header is Underlined Makes all the Difference
+++++++++++++++++++++++++++++++++++++++++++++++++++++

Section 1.2 Title
-----------------

Section 1.2.1 Title
+++++++++++++++++++

Section 1.2.2 Title
+++++++++++++++++++

***************
Section 2 Title
***************

***************
Section 3 Title
***************

If your guide has enough content, consider breaking it up into chapters, with one chapter per RST file. You will need to list each page in your index.rst. See Developer Guide with Automatically Numbered Sections for an example.

Task(s)

  1. Start task titles with an action word. Examples: Create, Add, Validate, Update.
  2. Use [Optional] at the beginning of an optional step.
  3. Provide information on the expected outcome of a step, especially when it is not obvious.
  4. Break down end-to-end tasks into manageable chunks.

Including Design Diagrams and Images

The developer-guide.rst template contains information and examples on how to incorporate design diagrams in your guide.

developer_guide_template.rst

Having Questions

If you have any questions on documentation, please send e-mail to Weichen Ni <niweichen@chinamobile.com>


  • No labels