This guide describes how to create documentation for the Open Network Automation Platform (ONAP). ONAP projects create a variety of content depending on the nature of the project. For example projects delivering a platform component may have different types of content than 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 that are tailored to a specific user audience and tasks they are performing.
Much of the content in this document is derived from similar documentation processes used in other Linux Foundation Projects including OPNFV and Open Daylight.
When is documentation required?
All ONAP project contributions should have corresponding documentation. This includes all new features and changes to features that impact users.
How do I create ONAP documentation?
ONAP documentation is written in ReStructuredText (an easy-to-read, what-you-see-is-what-you-get, plain text markup syntax). The process for creating ONAP documentation and what documents are required are described in later sections of this Developer Documentation 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:
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.
Resources are often tight, volunteers scarce. With a large software base like ONAP, 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, Markdown, and Textile, are a good choice for documentation because:
They are editor agnostic
The source is nearly as easy to read as the rendered text
Documentation can be treated exactly as source code is (e.g. versioned, diff’ed, associated with commit messages that can be included in rendered docs)
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 ONAP’s, cross-referencing between component documentation was deemed critical. Sphinx and reStructuredText have built-in functionality that makes collating and cross-referencing component documentation easier.
Which documents should go where?
A TSC Vote (2020, Feb. 19) approved the following usage policy:
DEVELOPER WIKI is used for ONAP release, project, subcommitee and development related content, e.g.
project management (meetings, plans, milestones, members, …)
project specific development guides
ongoing activities and discussions
ONAP community event documentation
READ THE DOCS is used for all formal ONAP E2E and component documentation, e.g.
ONAP overview, architecture, API
ONAP developer guides (e.g. Documentation guide)
ONAP user guides (E2E)
ONAP component guides, release notes
ONAP administration/operations guides
ONAP use-case description and usage
ONAP release notes
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.
The doc team encourages component teams to store as much documentation as reStructuredText as possible because:
It is easier to edit component documentation for grammar, spelling, clarity, and consistency.
A consistent formatting syntax across components will allow flexibility in producing different kinds of output.
It is easier to re-organize the documentation.
Wiki articles tend to grow in size and not maintained making it hard to find current information.
All documentation for project repositories should be structured and stored in or below <your_project_repo>/docs/ directory as Restructured Text. ONAP jenkins jobs that verify and merge documentation are triggered by RST file changes in the top level docs directory and below.
All contributions to the ONAP project are done in accordance with the ONAP licensing requirements. Documentation in ONAP is contributed in accordance with the Creative Commons 4.0 license. All documentation files need to be licensed using the text below. The license may be applied in the first lines of all contributed RST files:
.. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 .. Copyright YEAR ONAP or COMPANY or INDIVIDUAL These lines will not be rendered in the html and pdf files.
When there are subsequent, significant contributions to a source file from a different contributor, a new copyright line may be appended after the last existing copyright line.
Read The Docs URLs
When referencing versions of documentation a Read The Docs the following URL conventions should be used
To Refer to
Most recent approved named release
Latest master branch all projects
An approved name release eg. amsterdam