Axibase Documentation Guide
The guide contains a compilation of grammar, punctuation, and Markdown formatting rules for software developers.
- To comply with general Markdown syntax, use
markdownlint
. - To comply with all or subset of custom rules discussed in this guide, enable custom rules.
References:
- Google Developer Documentation Style Guide.
- Salesforce Style Guide for Documentation and User Interface Text.
Contents
Grammar
Abbreviations
- Abbreviate if the acronym is known to the target audience.
- Introduce new acronyms in parentheses and re-use thereafter.
- ✅
Hadoop Distributed File System (HDFS) is a clustered system. HDFS is resilient.
- ✅
- Always abbreviate:
- Known terms: SQL, API, REST, JVM, UTF, URL, URI.
- ✅
SQL report
- ⛔️
Structure Query Language (SQL) report
- ✅
- Data formats: CSV, JSON, XLS, XML, XLS, PDF.
- Protocols: HTTP, HTTPS, SSL, JMX, TCP, UDP, SSH, DNS.
- Standards and organizations: ISO, ASCII, ANSI, W3C.
- Time zones: UTC, EST, GMT.
- ATSD in Axibase documentation repositories.
- Known terms: SQL, API, REST, JVM, UTF, URL, URI.
Capitalization
Use title case in headers.
- ✅
## Import Data
. - ⛔️
## Import data
.
- ✅
Do not capitalize program/file/function names such as
curl
,atsd.log
, even in headers.- ✅
## Import Data with curl
. - ⛔️
## Import Data with Curl
.
- ✅
Do not capitalize the first word after the colon in a list.
- ✅
Step 3: unzip files
.
- ✅
Do not capitalize file extensions.
- ✅
.png
,.xml
,.jar
.
- ✅
Keep original product capitalization.
- ✅
SQL Server Database
,Hadoop
,HBase
.
- ✅
In ambiguous cases, adhere to one option for consistency:
- ✅ Unix, bash, IPv4, IPv6, URL.
- ⛔️ UNIX, Bash, IP v4, IP v6, Url.
Contractions
- Replace "i.e." or "e.g." with "for example".
- ✅
Specify the recipient, for example `user@example.org`.
- ⛔️
Specify the recipient, e.g. `user@example.org`.
- ✅
- "etc" is allowed.
- Replace
don't
,can't
,hasn't
,isn't
,didn't
withdo not
,cannot
, etc.- ✅
The parameter is not valid.
- ⛔️
The parameter isn't valid.
- ✅
Commas
- Do not use a comma to separate clauses with multiple actors. Create separate sentences.
- ✅
Submit the query. Review the results.
- ⛔️
Submit the query, the result is displayed.
- ✅
Colons
- Begin lists with colons (
:
).- ✅
Execute the following commands to stop the database:
- ✅
- Separate list titles from their content with a colon.
- ✅
Step 1: stop ATSD process.
- ✅
Hyphens
- Hyphenate compound adjectives.
- ✅
Cancel a long-running query
.
- ✅
- Do not hyphenate adverb adjectives that end with
ly
.- ✅
Review frequently used queries
. - ⛔️
Load data from the publicly-accessible service
.
- ✅
- Do not use a hyphen to separate title from meaning, use a colon.
- ✅
Meta Query: retrieves metadata from the service.
- ⛔️
Meta Query - retrieves metadata from the service.
- ✅
Numbers
- Write out numbers one through ten, unless they have units.
- ✅
There are three ways to perform this calculation
.
- ✅
- Write out ordinal numbers.
- ✅
The first query causes the database to lock the table
.
- ✅
- Add thousands separator except for milliseconds and machine output.
- ✅
Stop the query if the row count exceeds 1,000
.
- ✅
- Insert a space between a number and multiple-letter unit. Omit space for one-letter units.
- ✅
8 GB
,128 MB
,2 CPUs
,10%
.
- ✅
Parentheses
- Do not use parentheses.
- ✅
Execute `SELECT 1` query to test the connection.
- ⛔️
Execute any query (such as `SELECT 1`) to test the connection.
- ✅
- Parentheses are allowed to spell out a number or character sequence.
- ✅
The field supports wildcards (`*`).
- ✅
Up to nine (`9`) fractions are printed.
- ✅
Possessives
- Do not use possessives.
- ✅
Modify the file content
orModify the contents of the file
. - ⛔️
Modify the file's content
.
- ✅
Quotation Marks
- Do not use quotation marks.
- To designate UI elements use bold text.
- ✅
Click **View** to proceed
. - ⛔️
Click on 'View' to proceed
.
- ✅
- To designate single-line machine output use bold text or backticks.
- ✅
Watch the log file for **Start completed** message.
- ✅
Watch the log file for `Start completed` message.
- ⛔️
Watch the log file for "Start completed" message.
- ✅
- To designate multiple-line machine output use code blocks with
txt
dialect.
Formatting
Backticks
Apply single backticks to the following:
- File names:
atsd.log
. - Directory and file paths:
/opt/atsd/atsd/conf/server.properties
. - File extensions:
.png
,.xml
. - Program names:
curl
,wget
,cron
. - Email addresses:
user@example.org
. - Host names and IP addresses:
127.0.0.1
,2001:db8::1
. - HTTP methods:
POST
,GET
. - HTTP status codes:
200 OK
,404
. - HTTP status code ranges:
2xx
,3xx
. - URI paths and query strings:
/api/v1/{entity}/metrics
. - Header names and values.
- Set
Content-Type
header toapplication/json
.
- Set
- Function and procedure names.
- Reserved SQL keywords and clauses.
- Add condition to the
HAVING
clause.
- Add condition to the
- Parameter, field, and variable names.
Reset `queue.policy` to `BLOCK` setting.
Locate the `github-notify` rule on the **Alerts** page.
- Parameter, field, and variable values, including boolean values and numbers.
Set `limit` field to `16` batches.
- Usernames.
Switch to `axibase` user.
- Port numbers.
Make sure ATSD is listening on port `8443`.
- Version numbers.
Python `3.5` is required for ATSD version `19420`.
- Single-line machine output. Bold text is also allowed.
- ✅
Watch the log file for `Start completed` message.
- ✅
- Shell commands:
su
,chown
,sudo
.
Exceptions:
- Do not backtick an acronym, unless it represents a field or parameter value.
- ✅
Select `GZIP` or `LZO` option in the **Codec** drop-down list.
- ⛔️
The file is exported in `CSV` format.
- ✅
- Do not use backticks in headings.
- ✅
## Install Python 3.5 using curl
.
- ✅
Code Blocks
- Fence code with triple backticks.
- Fence multiple-line machine output with triple backticks.
- Apply the correct dialect such as
javascript
orpython
.- Use
txt
for ASCII tables. - Use
json
for JSON documents,xml
for XML files etc. - Use
txt
for machine output, unless the output is formatted, in which case use appropriate dialect. - Use
ls
for Charts configuration. - Use
javascript
for rule engine expressions.
- Use
Dates and Times
- Spell out month if the format is ambiguous:
- ✅
01/Jun/2018
. - ⛔️
06/01/2018
.
- ✅
- Do not use ordinal numbers in dates.
- ✅
April 15
. - ⛔️
April 15th
.
- ✅
- Use commas with full dates.
- ✅
The report was published on December 13, 2017
.
- ✅
- Write time in 24-hour format.
- ✅
April 15, 2018 at 20:30
. - ⛔️
April 15, 2018 at 8:30 pm
.
- ✅
Headers
Use title case in headers.
- ✅
## Import Data from File
. - ⛔️
## Import data from file
.
- ✅
Do not use backticks in headers.
- ✅
## Configure cron
. - ⛔️
## Configure `cron` schedule
.
- ✅
Do not terminate sentences in headers with dot.
- ⛔️
## Import data from file.
- ⛔️
Avoid punctuation symbols in headers except colon (
:
).- ⛔️
## Import Data from File (Directory)
.
- ⛔️
Links
- Use relative paths when linking markdown files in the same repository:
- ✅
Initiate a [restart](../../administration/restarting.md)
. - ⛔️
Initiate a [restart](/administration/restarting.md)
.
- ✅
- When linking to documents in the same repository, link to markdown files, and not to
https://axibase.com/
URLs:- ✅
Initiate a [restart](../../administration/restarting.md)
. - ⛔️
Initiate a [restart](https://axibase.com/docs/atsd/administration/restarting.html)
.
- ✅
- Describe the linked document in the link title:
- ✅
Review [installation notes](install.md).
- ⛔️
Click [here](install.md) to view installation notes.
- ✅
Style
Active Voice
- Maintain active voice for technical documentation.
- ✅
The database filters metrics based on user settings.
- ⛔️
Metrics are filtered based on user settings
- ✅
- Describe both the actor and the action, or use the imperative to instruct a user.
- ✅
Log in to ATSD web interface to import the CSV file on the CSV Parsers page. Configure upload settings to filter unneeded metrics.
- ⛔️
When the CSV file is imported, unneeded metrics are filtered.
- ✅
Blacklisted Words
word | alternatives |
---|---|
should | use must or remove |
could | - |
would | - |
may | can |
will | use present tense |
was | use present tense |
were | use present tense |
had | use present tense |
abort | stop , cancel |
kill | stop , cancel |
terminate | stop , cancel |
admin | administrator |
so, a lot | use formal style |
deselect | clear |
uncheck | clear |
flag | option , setting |
ingest | load , import |
lets | - |
please | - |
regex | regular expression |
Epoch time | Unix time |
datacenter | data center |
and/or | clarify the meaning |
in order to | to |
make sure | ensure |
end-point | endpoint |
click on | click |
robust | avoid trite words |
Example Names
- IPv4 address:
192.0.2.1
,198.51.100.1
,203.0.113.0
per RFC 5737. - IPv4 address range:
192.0.2.0/24
,198.51.100.0/24
,203.0.113.0/24
. - IPv6 address:
2001:db8::1
per RFC 3849. - IPv6 address range:
2001:db8::/32
. - Phone number:
(800) 555-0100
. - Host name:
atsd_hostname
,atsd_ip_address
. - DNS name:
example.org
per RFC 2606, localized domains. - Subdomain:
test.example.org
,atsd.example.org
. - Organization: Example Foundation, Example Corporation. Avoid
Contoso
. - Email:
user@example.org
,test@example.org
,john.doe@example.org
. - First name:
John
,Jack
,Jane
,Mary
. - Last name:
Doe
,Smith
,Jones
. - Credentials:
username
andpassword
,username:password
, andjohn.doe:secret
in examples. - SSN:
000-00-0000
. - File path:
/path/to/new-dir
,/path/to/new-file
. Replacenew-dir
andnew-file
to indicate the purpose, for example,/path/to/backup-dir
.
Interface Elements
- Interface elements must be bold, exactly as they appear in the UI.
- Add
>
to describe navigation sequences.- ✅
Open the **Alerts > Rules** page
.
- ✅
- Do not include types for named elements: button, split-button, checkbox, drop-down list, field, link, switch.
- ✅
Click **Next**
. - ✅
Select `CSV` from **File Format**
. - ✅
Open the **Rules** page
. - ⛔️
Click **Next** button
. - ⛔️
Select `CSV` from the **File Format** drop-down list
.
- ✅
- Use consistent UI element types:
- button
- split-button (not multi-action button, drop-down button, combo-button)
- checkbox (not checkbox)
- drop-down list (not
drop-down menu
) - tab
- link
- page
- button
- switch (not selector)
- window
- dialog window (not popup window)
- left menu (also main menu)
- top menu
- Use "the" article when referring to the element by type.
- ✅
Click the **Web Notifications** tab
- ⛔️
Click **Web Notifications** tab
- ✅
- Use
log in
as verb andlogin
as noun.- ✅
Log in to ATSD
.
- ✅
Issue Subjects
- Add prefix (topic) to subject. The topic can repeat the category or clarify it if necessary.
- ✅
UI: SQL Query Statistics page error.
- ✅
- Use regular case (not title case) in the subject.
- Use the imperative for features.
- ✅
Storage: Add table details to data consistency page.
- ✅
- Use descriptive sentences for bugs.
- ✅
NMON Parser: property record is not updated.
- ✅
Functions
- Use present tense for function descriptions. Omit the noun.
- ✅
Returns a collection of alert history records
. - ✅
Returns the natural logarithm of x
. - ⛔️
This function returns a collection of alert history records
. - ⛔️
Return a collection of alert history records
.
- ✅
Phrasing
- Remove verbiage, such as
execute these steps
,follow the prompts
,perform these tasks
,by executing the following command
.- ✅
Create a Slack [workspace](https://slack.com/create).
- ⛔️
Go to https://slack.com/create and follow the prompts to create a new workspace.
- ✅
Remove the ephemeral `/hbase` directory from Zookeeper cache.
- ⛔️
Execute the command to remove the ephemeral `/hbase` directory from Zookeeper cache.
- ✅
Add nmon to crontab to collect the data constantly.
- ⛔️
Setup crontab with the following commands so that nmon will collect the data constantly.
- ✅
- Describe what the command does.
- ✅
Launch the `inotify` script to watch for file changes.
- ⛔️
Run the script with the following command:
- ✅
- Favor
example
oversample
.- ✅
Example configuration:
- ⛔️
Sample configuration:
- ✅
Present Tense
- Do not use
will
,was
,were
,had
. Write in the present tense.- ✅
Collector starts the job immediately.
- ⛔️
Collector will start the job immediately.
- ✅
Product Names
- Use original product names unless you introduce an abbreviation.
- Articles can be omitted from product names in most cases.
- ✅
Axibase Time Series Database
- ⛔️
The Axibase Time Series Database
- ✅
Variables
- Use curly brackets (
{}
) to designate a variable in URI path or query string:- ✅
/api/{entity}/metrics
- ✅
/api/metrics?id={metricId}
- ✅
- Use camelCase in compound variable names in REST API:
- ✅
entityGroup
- ⛔️
entity-group
- ✅
- Add "the" article before the variables with types.
- ✅
Open the `atsd.log` file.
- ⛔️
Open the file `atsd.log`.
- ✅
Configuration
Automated Checks
Configure Travis CI to check custom rules as part of the pull request workflow.
Custom Rules
The repository contains custom rules for identifying inconsistencies and style violations.
Rule Scope
To enable or disable rules within a given Markdown file, wrap the text with non-printable HTML comments.
- Disable all rules:
<!-- markdownlint-disable -->
- Enable all rules:
<!-- markdownlint-enable -->
- Disable specific rules:
<!-- markdownlint-disable MD001 MD002 -->
- Enable specific rules:
<!-- markdownlint-enable MD001 MD002 -->
For example:
<!-- markdownlint-disable MD037 -->
deliberate space * in * emphasis
<!-- markdownlint-enable MD037 -->
To disable the rule for the entire *.md
file,
add the markdownlint-disable
marker before the first header.
A markdownlint-enable
marker is not necessary in this case.