zephyr/doc/collaboration/documentation/modular.rst

318 lines
10 KiB
ReStructuredText

.. _modular:
Modular Writing
###############
In a modular approach to writing content is organized into a series of
specific modules.
Contrasted with linear book-oriented or narrative writing, module- based
writing results in discrete chunks of content that can be rearranged
and reused in multiple documents without author intervention or
rewriting.
Modular writing doesn't include any content format formating. The format
of the output is handled by a style sheet, which is applied when the
content is published. The Zephyr Project uses Sphinx to build the
documentation. Sphinx gathers the content from all modules and produces
HTML output that allows the use of CSS stylesheets for format.
Some advantages of modular writing:
* Write once and only once.
* Reuse sections for multiple products, different audiences.
* Restructure content quickly.
* Revising a few sections is faster than revising a whole document.
* No need to format the content.
Some terms used in modular writing:
Rules: Must do these steps.
Requirements: Must use these materials.
Guidelines: Specific things to do.
The Zephyr Project strives for full modularization of content. The
modularization is still a work in progress and new content must be
structured following this guidelines.
.. note::
The guidelines presented in :ref:`basic_writing` still apply to
modular writing, except where specifically noted to the contrary.
Module Types
************
There are four module types in modular writing: overview, concept, task,
and reference. Each type answers a different question and contains
distinct kinds of information. They are organized to help users find
the information they need.
Overview
========
Main theme or goal. Overview modules set the tone and expectation for
the modules that follow:
* Present the main theme of the module group.
* Be brief. An overview module is the container for the module group,
not a detailed explanation.
* Focus on the overall goal of the information, so the users know why
it is important for them and what they will accomplish.
The Zephyr Project's documentation uses overview modules as container
modules. Container modules include a toctree directive that includes
either other container modules or concept, task and reference modules.
For example in a System Requirements overview module:
.. code-block:: rst
.. toctree::
:maxdepth: 2
requirements_packages.rst
requirements_install.rst
requirements_limitations.rst
Concept
=======
Basic information and definitions. Effective concept modules are easy to
read and easy to scan. Use these tips to write useful conceptual
information:
• Stick to one idea per module.
• Focus on the goal for the users. Present conceptual information that
supports the tasks that accomplish the goal.
• Organize information into small chunks, and label the chunks for
scannability.
• Use bulleted lists and tables for at-a-glance access to the
information.
• Avoid referring to the module itself, as in This module describes....
• Don't refer to other modules, as in As you learned in the previous
chapter....
• Don't force users to read a dense paragraph only to learn they
didn't need to read it.
Task
====
How to accomplish the goal. Follow these guidelines:
• Begin each step with the goal, followed by the navigation, then the
instruction. For example: "To install the package, go to the home
directory and type:"
• Write individual steps as separate, **numbered** entries. You can
combine up to three short steps if they occur in the same part of the
interface. Be mindful of the correct syntax for interfaces. For
example: "Select :menuselection:`Tools --> Options`, and click the :
guilabel:`Edit` tab."
• Limit a task to seven to ten steps if possible. Seven is ideal; ten
is acceptable.
• Break up a long task into a series of shorter tasks, collectively
referred to as a process, that one must perform in sequence to
achieve the goal.
.. note::
In a process, don't call a task a step. Reserve the word step for a
single meaningful action within a task.
• Use a table for optional actions under a step.
• Use the same verb for the same action.
• Don't put explanatory information within the task or the step; put
it in a note or a paragraph after the applicable step or after the
task . If the information is lengthy, put it in the associated
concept module or in a container module for a group of tasks.
• Verify that each step tells users to perform an action. Don't force
users to understand or interpret a concept while they are performing
the step.
Reference
=========
Background information. Follow these rules when writing reference
modules, including modules for page-level help and command-line options:
• For page-level reference modules, present options and their
definitions in the order they appear in the interface.
* Write the definition of an option as a sentence fragment, beginning
with a third-person present-tense verb, as in Specifies...,
Defines..., Creates....
* Use "See :ref:`cross`" for cross-references to supporting tasks and concepts.
Module Structure
****************
Each of the four different module types consists of three (sometimes
four) items, in this order:
1. Title: Well-written module titles help users find information at a
glance.
2. Short description: The short description answers the question "Why
should I read this?"
3. Body: The body of a module is the actual content, and it includes
section headings, paragraphs, tables, and lists. Use tables, lists, and
figures to chunk related information. The body contains the answers to
the questions "What" and "How" depending on the module type.
4. Considerations (optional): Considerations add information to some
modules.
Example:
.. _moduleExample:
.. code-block:: rst
Title
#####
These tips apply to all four module types.
Sections
********
Do this...
Level 2 Sections
================
Level 3 Sections
----------------
Do this...
* Include one idea per module.
* Keep module titles brief and focused.
* Put the most important and distinctive information at the beginning
of the title rather than the end.
* Create titles as sentence fragments.
* Use plural nouns in titles, Deploying New Drivers, unless you are
referring to a single item, Submitting a Change.
* If you can take a position, use qualitative words; benefits,
advantages, limitations; especially to show the benefit to the user.
* Use "vs.", not "versus", in titles, Daily vs. Weekly Backups.
* Review and rewrite the module title after you've written the content.
Don't do this...
* Don't begin a module title with Understanding or About or How to.
* Don't begin a title with an article: a, an, the. Using plural nouns
is one way to avoid using articles.
Module Titles
=============
Titles of overview modules: A noun, noun phrase, or present participial
form of a verb (-ing). Provides a sense of process and continuity.
Examples:
* System Requirements
* Managing Your Network
Titles of concept modules: A descriptive noun phrase or verb phrase. The
title must answer the question "What about it?" Examples:
* Considerations When Planning a System
* Advantages of Widget Security
* Limitations of Edit mode
Titles of task modules: An imperative (command) phrase. Describes the
task, not the function to be used. Examples:
* Configure General Server Settings
* Import File Formats
Titles of reference modules: The name of a reference object. Provides
quick access to facts needed to understand a concept or complete a
task. Examples:
* Assembly Code Options
* Default Values Provided by the Platform
Short Descriptions
==================
The short description is the first paragraph of a module — a brief
statement of the module's theme that helps readers find the information
they are looking for. An effective short description is:
* Short: Provides just enough information—in one to three complete
sentences or roughly 25 to 35 words to let users know whether to read
more.
* Informative: Provides enough detail for advanced users to get what
they need and move on.
* Pertinent: Doesn't include background information; instead
summarizes the purpose of the module.
Converting Conventional writing to Module-Based writing
*******************************************************
If you are converting a conventionally written document to module- based
content, you will have to rearrange and rewrite some of the content.
Here are some guidelines and some things to look for:
* Limit headings to three levels. If you are working with an older
document, you might have to convert fourth and lower levels into
tables or lists. Lists are excellent for splitting information up.
See :ref:`lists` for guidelines on creating lists.
* Divide large concepts into smaller sections. Sections are useful
when the information in each section isn't long enough to be in its
own module or when the info would not make sense in its own module.
If the content has many sections, think of ways to split it into
separate modules.
* Make sure each section has an introductory paragraph. For section
heads that have no introductory paragraph, add one or promote the
next section up a level.
* Keep cross-references generic. Convert explicit table and figure
cross-references within the same module to generic references, such
as "the following table". Relocate these figures/tables closer to the
referring text.
* Avoid "glue text". Glue text is a word or phrase that links a
module/section to a previous or next module/section, as if the
content were linear or sequential. Module-based writing is not linear.
* Use generic terms. Instead of a specific product name, use CPU or
processor or PCH when possible, especially in images. This will help
repurpose the content for other products and cases.
* Rewrite content for reusability. Search for words like chapter and
page and replace with module, section, or some term that does not
chain the content to the book- or page-based metaphor. When
necessary, rewrite content so that it may be reused in other
documents.