Documentation style guide

This document gives writing style guidance for Fuchsia.dev. These guidelines build on the general guidance in the Google Developers Style Guide.

Follow the 80 character limit

In the Fuchsia project, the maximum line length for code is 100 characters, while the maximum line length for documentation is 80 characters. A notable exception to this rule is URLs (i.e. links) which are written on one line, without wrapping.

Code tends to be indented (blank space on the left of the page), while English prose (documentation) tends to form paragraphs of text. This difference leads to different width specification.

Use {:.external} to mark any links that are not within fuchsia.dev, fuchsia.googlesource.com, or fuchsia-review.googlesource.com:

This is an [external](http://example.com){:.external} link.

Notice the external link icon: This is an external link.

In general, Fuchsia recommends using reference-style links in Markdown files. Reference style links use a reference identifier associated with the link, and then refers to that identifier whenever you use the link in the doc. This makes links easy to update in the document.

Recommended: Create an identifier where you want the link.

In this example, the link identifier is called fuchsia-home:

Welcome to the [Fuchsia home page][fuchsia-home].

And then define it at the bottom of the document:

[fuchsia-home]: https://fuchsia.dev/

Not recommended: Writing an in-line link like the following:

Welcome to the [Fuchsia home page](www.fuchsia.dev).

You can read more about reference style links in the external Markdown Guide.

In the Fuchsia documentation you can link to three types of contents:

  • /docs/ - Link to documents that are in the /docs/ directory of the Fuchsia source tree. These links must link to a file with an .md extension. For example, /docs/concepts/README.md.
  • Source code - Link to source code files that exist within the Fuchsia source tree. These links can link to any file extension, but these files must exist in the source tree. For example, /sdk/lib/fdio/fdio.cc.
  • Reference documentation - Links to auto-generated Fuchsia reference documentation.
    • Most of the Fuchsia reference documentation doesn't exist in the source tree, but is published on fuchsia.dev. These links must be used as fully qualified URLs. For example, https://fuchsia.dev/reference/fidl/fuchsia.io.
    • However, some Fuchsia reference documentation exists in the source tree. These documents exist in /docs/reference/ and are published in the https://fuchsia.dev/fuchsia-src/reference/ section. These links must link to a file with an .md extension. For example, /docs/reference/fidl/bindings/overview.md.

Once you have created a valid markdown document, you should run doc-checker to ensure that your document uses valid links. When you try to submit a change that includes a .md file, Gerrit runs doc-checker and blocks submission if you have broken links.

To run doc-checker locally, use the fx format-code tool:

fx format-code

Headers

Use sentence case for page and section titles

Recommended: Using sentence case.

# This title is an example of sentence case

Not recommended: Using title case:

# This Title is an Example of Title Case

Use dashes, not underscores, for anchors

By default, fuchsia.dev creates anchors using underscores (_) in place of spaces. When referencing a section in a page, create a custom anchor using dashes (-) instead, using {#section-title}. Also, use dashes for file names.

Recommended: Using dashes for anchors

 ## This is a section header {#this-is-a-section-header}

Code samples

Use posix-terminal for shell command examples

Recommended: Allow readers to easily copy the content in a code block by adding posix-terminal after ``` for a shell command.

```posix-terminal
fx ota
```

This code block is rendered with $ in the front of the command:

fx ota

Not recommended: Don't hardcode a $ character in the command.

$ fx ota

Use none to disable the copy feature

Recommended: Add none {:.devsite-disable-click-to-copy} after ``` for code or output examples that do not require readers to copy the content.

```none {:.devsite-disable-click-to-copy}
$ my_command
It won't be necessary to copy and paste this code block.
```

This code block is rendered without the copy icon in the top right corner:

$ my_command
It won't be necessary to copy and paste this code block.

Not recommended: Enable the copy feature for view-only content. If you don't specify anything after ```, the copy feature is enabled by default.

```
$ my_command
It won't be necessary to copy and paste this code block.
```

This code block is rendered as below:

$ my_command
It won't be necessary to copy and paste this code block.

Use paths instead of URLs when referring to source code

Recommended: Any links that refer to source code should be referred to by path only. You will get a static error check otherwise.

Update the [state header][sh]