Contribute to the Switch Cloud Documentation
The Switch Cloud Documentation provides users with the essential knowledge and guidance to work with our cloud services. Keeping our documentation accurate and well-maintained is essential – it helps users work more efficiently with our services and reduces their need for direct support. While each team is responsible for their service-specific content, we follow shared guidelines to maintain consistency throughout the documentation.
The following guidelines outline how to add or update documentation while maintaining consistent formatting and styling across our content.
Documentation Directory Structure
Each page in our documentation is represented by a directory (page bundle) containing an index.md file and its related
resources directly in the directory.
Sub-pages are represented by sub-directories following the same structure.
Example Directory Structure
documentation/ # Root directory
├── index.md
└── S3/ # Service page bundle
├── index.md # Main service documentation
├── versioning/ # Another sub-page bundle
│ ├── index.md
│ ├── managing-versions-in-scs3/ # Sub-sub-page bundle
│ │ ├── index.md
│ │ └── example-flow.png # Image in sub-sub-page bundle
│ └── .navigation.yml
├── create-S3-bucket/ # Sub-page bundle
│ ├── index.md # Sub-page documentation
│ ├── s3-image.png # Image in sub-page bundle
│ └── create-bucket-diagram.drawio.svg # Diagram in sub-page
└── .navigation.yml
- Bundle Structure
Each page is a directory containing:
index.md(page content of bundle).- All related resources directly in the directory.
- Sub-directories for sub-pages (following the same structure).
- Naming Conventions
- Use kebab-case for directories and files.
- Descriptive names reflecting content.
- Page bundle (directory) names appear in navigation.
- Resource Management
- Place all assets (images, diagrams, tables, and similar items) directly in the page bundle where they are used.
- Shared assets go in the common parent page bundle.
- Use meaningful filenames that describe the content.
- Clean up unused assets.
- Sub-page Organization
- Create sub-page bundles for logical content grouping.
- Maintain the same structure in sub-bundles.
- Maximum 3 levels deep recommended (service -> group -> pages).
- Parent directories should contain a
.navigation.ymlto define page titles and order.
Language Guide
Switch Cloud documentation should be clear, concise and easy to understand.
Use:
- British English with British grammar and spelling.
- Standard text for links.
- Lists and tables instead of complex sentences and paragraphs.
- Common abbreviations like AI and CI/CD and abbreviations you've previously spelled out.
- Active voice instead of passive.
Avoid:
- Unnecessary words.
- Phrases that hide the subject like there is and there are.
- Ambiguous pronouns like it.
- Latin abbreviations like e.g. and i.e..
- Contractions when used with proper nouns (Terraform's a tool → Terraform is a tool), in negative emphasis (Don't install → Do not install), or error messages (aren't allowed → are not allowed).
- Possessives ('s) for proper nouns, like organisation or product names, for example instead of 'Docker's CLI', use 'the Docker CLI'.
Keep the following in mind:
- Be consistent with feature names and how to interact with them, without the addition of sales or marketing text.
- Format dates and times consistently and for an international audience.
- Use images, including screenshots, sparingly.
- Try to write from a customer perspective and to speak directly to the user.
Style Guide
Titles
Formating
- Write action-oriented titles using imperative verbs to clearly indicate the task, for example, "Create a Private Network" or "Deploy a Virtual Machine."
- Prefer title case, i.e. capitalize the first, last, and major words, e.g. "Manage User Permissions", do not capitalize articles, conjunctions, or prepositions unless they are the first or last word.
Levels
- Each documentation page begins with a level 1 title (#) and there should be only one level 1 (H1) title per page.
- For each subtopic, increment the title level, which means increment the number of
#characters in front of the topic title. - Avoid title levels greater than
#####. Title levels greater than H5 do not display in the page contents. - Do not skip a level. For example: ## > ####.
Text Formatting
Quotation Marks
Always use neutral quotation marks (', ") instead of the typographic equivalent (‚, ‘, ’,„, “, ”, «,
»).
For example, use it's instead of it’s.
Bold
Use Bold for all UI elements and navigation paths.
To make text bold, wrap it with double asterisks (**).
For example:
Avoid using Bold for emphasis. Instead, use admonitions or structure the documentation to eliminate the need for text emphasis.
Inline Code
Use Inline code for:
- Text a user enters in the UI.
- Short inputs and outputs like
true,false,Job succeeded, and similar. - Filenames, configuration parameters, keywords, and code.
For example:
.gitlab-ci.yml,--version, orrules:. - Short error messages.
- API and HTTP methods (
POST). - HTTP status codes.
Full (
404 File Not Found) and abbreviated (404).
Τo use inline code, wrap the text in single backticks (`).
For example:
Code Blocks
Use Code blocks for command line examples, and multi-line inputs, outputs, code, and similar.
To add a code block, add triple backticks (```) above and below the text, and specify the language for proper syntax
highlighting.
For example:
```sh
openstack server create --flavor c001r002 --image Ubuntu-22.04 (Switch Cloud) --nicnet-id=<network_id>\
--key-name <key_name> --user-data ./dbserver-user-data.yaml\
<instance_name>
```
Placeholders
Write placeholder variables in lowercase and separated by underscores to improve readability and consistency.
For example:
Lists
Use lists to organise information in a format that is easier to read and comprehend.
- Use dashes (
-) for unordered lists. - Start items in an ordered list with the respective number, for example
1.,2., and so on. - Leave a blank line before and after a list.
- Start all items with a capital letter.
- Nest an item under a list item, using a 4 spaces indentation (MkDocs syntax), to maintain alignment.
For example, the following list with nested items:
- List item 1
A line nested using 4 spaces to align with the `L` above.
- List item 2
```text
a code block that nests inside list item 2
```
- List item 3:
- Nested list item 1.
- Nested list item 2.
renders as follows:
-
List item 1 A line nested using 4 spaces to align with the
Labove. -
List item 2
-
List item 3:
- Nested list item 1.
- Nested list item 2.
Tables
Tables should be used for data that's best described by a matrix.
- To create a table in the text, use the following format:
| Name | vCPUs | RAM |
|----------|-------|------|
| c001r001 | 1 | 1 GB |
| c001r002 | 1 | 2 GB |
| c001r004 | 1 | 4 GB |
which renders as follows:
| Name | vCPUs | RAM |
|---|---|---|
| c001r001 | 1 | 1 GB |
| c001r002 | 1 | 2 GB |
| c001r004 | 1 | 4 GB |
- To create tables for a cli command output use the following format:
+--------+----------+--------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------+----------+--------+------+-----------+-------+-----------+
| 001001 | c001r001 | 1024 | 0 | 0 | 1 | True |
| 001002 | c001r002 | 2048 | 0 | 0 | 1 | True |
| 001004 | c001r004 | 4096 | 0 | 0 | 1 | True |
+--------+----------+--------+------+-----------+-------+-----------+
- Add additional spaces to make the column widths consistent, except in the rightmost column for tables that are very wide.
- Try not to leave any empty cells, instead consider entering
N/Afor "not applicable" orNone.
Links
- To link to another
.mdfile in the same documentation, use an inline link with a relative file path. For example,[Start a Linux-based Instance](compute/compute-quick-start/start-a-linux-based-instance.md)that renders as Start a Linux-based Instance. - Each topic title has an anchor link.
For example, a topic with the title
## This is an Examplehas the anchor#this-is-an-example. - Use descriptive text for links, rather than words like
hereorthis page. - Try to avoid links to external documentation, because they easily become outdated, and are difficult to maintain.
Admonitions
Use admonitions (alert boxes) to highlight important information, warnings, or examples. Keep admonition content concise and focused on a single point.
Important Info
Use the following syntax for important info:
renders as follows:
Important
The instance name must be unique within the project.
Important info admonitions should be used for important information that users should be aware of. The title can be replaced if necessary with something more indicative to the case.
Warning
Use the following syntax for a warning:
renders as follows:
Caution
Deleting an instance permanently removes all data associated with it.
Use warning admonitions for critical information or potential issues. A custom title that draws attention can be used.
Example Output
Use the following syntax for an example output:
````md
Example Output
text
+--------+----------+--------+
| ID | Name | Status |
+--------+----------+--------+
| 001001 | c001r001 | ACTIVE |
+--------+----------+--------+
```
renders as follows:
Example Output
```text +--------+----------+--------+ | ID | Name | Status | +--------+----------+--------+ | 001001 | c001r001 | ACTIVE | +--------+----------+--------+
```
Use output admonitions for CLI command outputs or examples that can be collapsed to save space. The title can be adjusted accordingly.
Tabs in Documentation
Tabs are used to present different methods of achieving the same task, such as showing both UI and CLI instructions. Any relevant code blocks, lists, or admonitions should be included within the tab's content using 4-space indentation. Tab names should be kept short and descriptive, for example:
- Horizon Dashboard / OpenStack CLI
- Linux / Windows / MacOS
- Python / C#
Use the following syntax for tabs:
```md
Navigate to Project > Compute > Images to view your images.
- Click the image name
- Select Edit from the actions menu
List all images:
sh
openstack image list
Show image details:
sh
openstack image show <image_id>
```
that renders as:
Navigate to Project > Compute > Images to view your images.
- Click the image name
- Select Edit from the actions menu
List all images:
sh
openstack image list
Show image details:
sh
openstack image show <image_id>
Caution
Do not use headings (##, ###, etc.) inside tab content. Headings within tabs do not integrate properly with the navigation ToC on the right side. Users navigating to these headings may experience broken links if they are not already on the correct tab. Instead, place your tabs under the main section headings.
Provide Client Configuration Documentation
All content owners should describe the supported tools for their respective services and provide the necessary configuration details and examples for different user actions.
For each service – S3, Kubernetes, and Compute – the documentation should include:
- A clear mention of the supported tools (for example, OpenStack CLI, OpenTofu, kubectl, Rclone).
- The required environment variables or configuration files needed to use these tools.
- Example commands or scripts for performing key actions using the supported tools.