Add documentation guidance to the contributor guide

The patch adds some guiding content regarding documentation and also
fixes the headings to comply with the OpenStack Documentation Style
Guide.

Change-Id: Ie5d3d703e27f3f572138c451d760cf6fb398928d
This commit is contained in:
Jesse Pretorius 2016-05-13 13:30:25 +01:00
parent 9694d3dbbc
commit 601487ba31

View File

@ -1,10 +1,11 @@
`Home <index.html>`_ OpenStack-Ansible Developer Documentation `Home <index.html>`_ OpenStack-Ansible Developer Documentation
======================
Contributor Guidelines Contributor Guidelines
====================== ======================
Reporting Bugs Reporting Bugs
-------------- ~~~~~~~~~~~~~~
Bugs should be filed on `Bug Launchpad`_ for OpenStack-Ansible. Bugs should be filed on `Bug Launchpad`_ for OpenStack-Ansible.
@ -22,19 +23,19 @@ criteria are met:
* Steps to reproduce the problem if possible. * Steps to reproduce the problem if possible.
Tags Tags
```` ----
If it's a bug that needs fixing in a branch in addition to master, add a If it's a bug that needs fixing in a branch in addition to master, add a
'\<release\>-backport-potential' tag (e.g. ``liberty-backport-potential``). '\<release\>-backport-potential' tag (e.g. ``liberty-backport-potential``).
There are predefined tags that will auto-complete. There are predefined tags that will auto-complete.
Status Status
`````` ------
Please leave the **status** of an issue alone until someone confirms it or Please leave the **status** of an issue alone until someone confirms it or
a member of the bugs team triages it. While waiting for the issue to be a member of the bugs team triages it. While waiting for the issue to be
confirmed or triaged the status should remain as **New**. confirmed or triaged the status should remain as **New**.
Importance Importance
`````````` ----------
Should only be touched if it is a Blocker/Gating issue. If it is, please Should only be touched if it is a Blocker/Gating issue. If it is, please
set to **High**, and only use **Critical** if you have found a bug that set to **High**, and only use **Critical** if you have found a bug that
can take down whole infrastructures. Once the importance has been changed can take down whole infrastructures. Once the importance has been changed
@ -42,7 +43,7 @@ the status should be changed to *Triaged* by someone other than the bug
creator. creator.
Triaging Bugs Triaging Bugs
````````````` -------------
Reported bugs need prioritization, confirmation, and shouldn't go stale. Reported bugs need prioritization, confirmation, and shouldn't go stale.
If you care about OpenStack stability but aren't wanting to actively If you care about OpenStack stability but aren't wanting to actively
develop the roles and playbooks used within the OpenStack-Ansible develop the roles and playbooks used within the OpenStack-Ansible
@ -54,7 +55,7 @@ immensely. The whole process is described in the OpenStack
.. _Bug Triage Documentation: http://docs.openstack.org/infra/manual/developers.html#working-on-bugs .. _Bug Triage Documentation: http://docs.openstack.org/infra/manual/developers.html#working-on-bugs
General Guidelines for Submitting Code General Guidelines for Submitting Code
-------------------------------------- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Write good commit messages. We follow the OpenStack * Write good commit messages. We follow the OpenStack
"`Git Commit Good Practice`_" guide. if you have any questions regarding how "`Git Commit Good Practice`_" guide. if you have any questions regarding how
@ -81,7 +82,8 @@ General Guidelines for Submitting Code
that may pertain to something that was re-factored should be raised as an that may pertain to something that was re-factored should be raised as an
issue and submitted in prior or subsequent patches. issue and submitted in prior or subsequent patches.
* New features, breaking changes and other patches of note must include a * New features, breaking changes and other patches of note must include a
release note generated using `the reno tool`_. release note generated using `the reno tool`_. Please see the
`Documentation and Release Note Guidelines`_ for more information.
.. _Git Commit Good Practice: https://wiki.openstack.org/wiki/GitCommitMessages .. _Git Commit Good Practice: https://wiki.openstack.org/wiki/GitCommitMessages
.. _workflow documented here: http://docs.openstack.org/infra/manual/developers.html#development-workflow .. _workflow documented here: http://docs.openstack.org/infra/manual/developers.html#development-workflow
@ -90,7 +92,7 @@ General Guidelines for Submitting Code
.. _the reno tool: http://docs.openstack.org/developer/reno/usage.html .. _the reno tool: http://docs.openstack.org/developer/reno/usage.html
Working on Features Working on Features
------------------- ~~~~~~~~~~~~~~~~~~~
* All feature additions/deletions should be accompanied by a blueprint/spec. * All feature additions/deletions should be accompanied by a blueprint/spec.
e.g. adding additional active agents to neutron, developing a new service e.g. adding additional active agents to neutron, developing a new service
@ -123,7 +125,7 @@ Working on Features
.. _Tempest: http://docs.openstack.org/developer/tempest/ .. _Tempest: http://docs.openstack.org/developer/tempest/
Backporting Backporting
----------- ~~~~~~~~~~~
* Backporting is defined as the act of reproducing a change from another * Backporting is defined as the act of reproducing a change from another
branch. Unclean/squashed/modified cherry-picks and complete branch. Unclean/squashed/modified cherry-picks and complete
@ -152,8 +154,111 @@ Backporting
.. _Submitting a change to a branch for review: http://www.mediawiki.org/wiki/Gerrit/Advanced_usage#Submitting_a_change_to_a_branch_for_review_.28.22backporting.22.29 .. _Submitting a change to a branch for review: http://www.mediawiki.org/wiki/Gerrit/Advanced_usage#Submitting_a_change_to_a_branch_for_review_.28.22backporting.22.29
.. _OpenStack Guidelines for stable branches: http://docs.openstack.org/project-team-guide/stable-branches.html .. _OpenStack Guidelines for stable branches: http://docs.openstack.org/project-team-guide/stable-branches.html
Documentation and Release Note Guidelines
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Documentation is a critical part of ensuring that the deployers of OpenStack-Ansible
are appropriately informed about:
* How to use the project's tooling effectively to deploy OpenStack.
* How to implement the right configuration to meet the needs of their specific
use-case.
* Changes in the project over time which may affect an existing deployment.
To meet these needs developers must submit code comments, documentation and
release notes with any code submissions. All forms of documentation should
comply with the guidelines provided in the `OpenStack Documentation Contributor
Guide`_, with particular reference to the following sections:
* Writing style
* RST formatting conventions
.. _OpenStack Documentation Contributor Guide: http://docs.openstack.org/contributor-guide/
Code Comments
-------------
Code comments for variables should be used to explain the purpose of the
variable. This is particularly important for the role defaults file as the file
is included verbatim in the role's documentation. Where there is an optional
variable, the variable and an explanation of what it is used for should be
added to the defaults file.
Code comments for bash/python scripts should give guidance to the purpose of
the code. This is important to provide context for reviewers before the patch
has merged, and for later modifications to remind the contributors what the
purpose was and why it was done that way.
Documentation
-------------
OpenStack-Ansible has multiple forms of documentation with different intent.
.. note::
The statements below regarding the Install Guide and Role Documentation are
statements of intent. The work to fulfill the intent is ongoing. Any new
documentation submissions should try to help this intent where possible.
The `install guide <../install-guide/`_ intends to help deployers install
OpenStack-Ansible for the first time. As such, the install guide is somewhat
opinionated, focusing on ensuring that the deployer has to make very few
decisions and implement the least amount of configuration possible to deploy
a running OpenStack environment.
The role documentation (for example, the `keystone role documentation`_)
intends to explain all the options available for the role and how to implement
more advanced requirements. To reduce duplication, the role documentation
directly includes the role's default variables file which includes the
comments explaining the purpose of the variables. The long hand documentation
for the roles should focus less on explaining variables and more on explaining
how to implement advanced use cases.
Where possible the documentation in OpenStack-Ansible should steer clear of
trying to explain OpenStack concepts. Those explanations belong in the
OpenStack Manuals or service documentation and OpenStack-Ansible documentation
should link to those documents when available, rather than duplicate their
content.
.. _keystone role documentation: http://docs.openstack.org/developer/openstack-ansible-os_keystone/
Release Notes
-------------
Release notes are generated using `the reno tool`_. Release notes must be
written with the following guidelines in mind:
* Each list item must make sense to read without the context of the patch or
the repository the patch is being submitted into. The reason for this is that
all release notes are consolidated and presented in a long list without
reference to the source patch or the context of the repository.
* Each note should be brief and to the point. Try to avoid multi-paragraph
notes. For features the note should typically refer to documentation for more
details. For bug fixes the note can refer to a registered bug for more
details.
In most cases only the following sections should be used for new release notes
submitted with patches:
* ``features``: This should inform the deployer briefly about a new feature and
should describe how to use it either by referencing the variables to set or
by referring to documentation.
* ``issues``: This should inform the deployer about known issues. This may be
used when fixing an issue and wanting to inform deployers about a workaround
that can be used for versions prior to that which contains the patch that
fixes the issue. Issue notes should specifically make mention of what
versions of OpenStack-Ansible are affected by the issue.
* ``upgrade``: This should inform the deployer about changes which may affect
them when upgrading from a previous major or minor version. Typically, these
notes would describe changes to default variable values or variables that
have been removed.
* ``deprecations``: If a variable has been deprecated (ideally using the
deprecation filter), then it should be communicated through notes in this
section. Note that if a variable has been removed entirely then it has not
been deprecated and the removal should be noted in the ``upgrade`` section.
Ansible Style Guide Ansible Style Guide
------------------- ~~~~~~~~~~~~~~~~~~~
When creating tasks and other roles for use in Ansible please create them When creating tasks and other roles for use in Ansible please create them
using the YAML dictionary format. using the YAML dictionary format.