- Table of Contents
- Welcome
- GitHub & Gatsby
- What can I contribute?
- The writing process
- Prepare to write
- Write drafts and get feedback
- Word Choice
- Writing Style
- Updating table of contents
- Using Gatsby templates
- Using linters
- Using Frontmatter
- Reusable components
- Grammar and formatting
- Capitalize proper nouns
- Use active voice
- Make lists clear with the Oxford Comma
- Prefer US English
- References
The New Relic Developer Site is an open source documentation repository where we encourage contributions from everyone, not just employees of New Relic.
If you’d like to contribute by creating a guide, a technical reference, or general content review this Style Guide and our Contributors Guide before getting started.
The New Relic Developer Experience Team uses Github and Gatsby.JS to:
- accurately maintain our technical reference docs and guides
- iterate and publish quickly
- encourage collaboration
- support the open source community
- maintain version control
- gather feedback quickly
Technical reference pages are detailed technical specifications of the New Relic One platform and it's components.
The New Relic guides are detailed product how-tos that are case driven. The guides provide steps for developing custom solutions for New Relic. This can mean custom ways of collecting and querying data, enhancing open source applications, or building new applications to meet specific needs. It can also mean automating processes to reduce toil.
Overview pages are pages of information, FAQs, product videos, etc of New Relic specific content.
Before you begin writing, answer these questions.
- Who is this guide for?
- Are you writing content for a very experienced developer or New Relic practitioner? Or could someone new to either New Relic or development follow your steps and complete the task? We generally aim to support as many people as possible. Don't attempt to teach someone how to program in a guide, but prerequisites and clear context can help less experienced people accomplish the task.
- Is what I'm writing doable in less than 30 minutes?
- If not, consider dividing the guide up into multiple guides. That way, people can segment their time.
- What do I hope my readers will know and/or be able to do after reading it?
- Include this information in your guide. It will help people know why they should invest their time, and it will help you write a focused guide.
- What type of resources exist already that I can leverage?
- Are there related technologies that someone might need to understand, or related New Relic info on the developer, docs, open source or other New Relic sites?
- What type of new resources will I need to create to complete this?
- Do you have all the software you need to write your guide?
- Do you have access to all the New Relic products to write your guide?
- Is there anyone you need assistance from?
- Do you need to create a video, image or other assets to support your content?
- Who is this reference for?
- We generally aim to support as many people as possible. You can't teach programming from the ground up, but you can provide clear descriptions and complete info.
- What do I hope my readers will know and/or be able to do after reading it?
- Include this information in your reference. It will help people know if it's the info they need.
- Are there related technologies that someone might need to understand that are already documented?
- New Relic has a rich set of documentation on our products search the following sites.
- docs.newrelic.com
- developer.newrelic.com
- discuss.newrelic.com
- opensource.newrelic.com
Once you answer those questions, create an outline of the topic and think about any coding examples you’ll use (if applicable). This helps to organize your thoughts and make the writing process easier.
If you need videos or code samples or clarification from other teams within New Relic start to consider who can assist you and reach out to them.
If you need videos or code samples or clarification from other teams within New Relic file a Github issue so The Developer Experience team can assist you.
Get your outline or draft in front someone to get early feedback often as it's much easier to adjust earlier in the writing process.
Use the second person you
to provide a conversational tone in your documentation. always address the user directly, as you
. This approach is inclusive and immediate and the text and instructions seem to speak directly to the person reading it. Avoid using the first person (“I”, “we”, “let’s”, and “us”).
Use they / them
in place of he / him
or she / her
.
Avoid using words like “easy”, “simple” and “basic”. Avoid any language that assumes a reader's experience level.
Avoid using emojis or emoticons and idiomatic expressions / slang, or metaphors.
Content should avoid the use of jargon.
Jargon: (n.) special words or expressions that are used by a particular profession or group and are difficult for others to understand.
All jargon should be expressed in plain English. In other words, pretend like your readers have novice coding experience and have little knowledge of New Relic products and services.
Don't leave readers guessing, or having to decide between multiple choices. Often they need to solve a problem. As the subject matter expert, you're in a position to help. Provide the best way to do a thing, and why. If there are four different ways, choose the most efficient way. You can explain the choice if necessary. You can also describe other options, but we recommend that you hold that until the end.
Users should be able to scan a page, learn what it covers, and find the info they're looking for in seconds. Improve scannability by adding headings and bulleted lists, and by including step numbers on procedures.
Concise writing communicates the bare minimum without redundancy. Strive to make your writing as short as possible. Keep the content readable and manageable by focusing on just the information needed for each area.
Hyperlinks should contain the clearest words to indicate where the link will lead you. The use of the title attribute on hyperlinks should be avoided for accessibility reasons.
<!-- Good -->
[New Relic Open Source](https://www.opensource.newrelic.com/)
<!-- Bad -->
[here](https://www.opensource.newrelic.com/ 'New Relic Open Source')
In guides that are meant for beginners, use less hyperlinks to minimize distractions. In technical references, you may include as many hyperlinks as necessary to provide relevant and interesting information and resources.
When referencing another page within the New Relic Developer Site hyperlinks should use relative paths (not include the full domain). This guarantees that all links function when running locally or in preview.
<!-- Good -->
[README](/README.md)
<!-- Bad -->
[README](https://www.developers.newrelic.com/README.md)
Unless you’re running gatsby develop
or gatsby build
locally,
localhost links will not work. Therefore it’s recommended to list these URL
references as code blocks so there aren’t invalid links throughout the docs.
`
<!-- Good -->
open your site with `http://localhost:8000/`
<!-- Bad -->
open your site with [http://localhost:8000/](http://localhost:8000/)
When a paragraph or sentence offers an optional path, the beginning of the first sentence should indicate that it’s optional. For example, “if you’d like to learn more about xyz, see our reference guide” is clearer than “Go to the reference guide if you’d like to learn more about xyz.”
This method allows people who would not like to learn more about xyz to stop reading the sentence as early as possible. This method also allows people who would like to learn more about xyz to recognize the opportunity to learn quicker instead of accidentally skipping over the paragraph.
If you want to abbreviate a term, write it out fully first, then put the abbreviation in parentheses. you then can use the abbreviation going for the rest of the article. For example, “In computer science, an abstract syntax tree (AST) is …”
When defining your titles and descriptions for your pages focus on Search Engine Optimization (SEO) best practices.
However if you need to make a choice between SEO and clarity, always go with a clear title and description over trying to "squeeze" in SEO terms that aren't relevant to the content of the page.
When updating markdown pages that contain a table of contents be sure to update the TOC accordingly as you add new sections in the markdown file. You can use an automated tool such as Markdown-TOC or update the TOC manually.
When creating pages you can use a predefined Gatsby template for your .md or .mdx files. Based on the type of page you want to create be sure to select the correct template and apply that to the Frontmatter slug key value pair for template
.
Linting is the process of running a program that will analyse code for potential errors. The New Relic Developer Site currently has linting configurations that will assist you in creating content.
When you create a Markdown file, you can include a set of key value pairs that can be used to provide additional data relevant to specific pages in the GraphQL data layer. This data is called Frontmatter and is denoted by the triple dashes at the start and end of the block.
This block will be parsed by gatsby-transformer-remark as Frontmatter. The GraphQL API will provide the key value pairs as data in your React components. The value that is assigned to the key slug is used in order to navigate to your post.
path
: the relative path to the fileduration
: the estimated time to complete the exercisetitle
: the title of the pagetemplate
: the Gatsby template useddescription
: the description of the pagepromote
(optional): adds the guide to the top of the guides list, making it easier for users to discovertileShorthand
(optional): config for guides when they appear as tiles. Accepts 2 options:title
: provide a shortened title for the tile. The title will fallback to the guide title if this is not provided.description
: provide a shortened description for the tile. The description will fallback to the guide description if this is not provided.
redirects
:- url you wish to redirect from
- another url you wish to redirect from
resources
:title
: title of related resource. This resource will show up in the "Resources" section to the right of the main content.url
: URL of related resource. Can be absolute or relative.
tags
: sets the search parameters you wish to pass to Swiftype.- tag name1
- tag name2
- tag name3
---
path: '/build-apps/add-time-picker-guide'
duration: '20 min'
title: 'Add the time picker to a sample application'
template: 'GuideTemplate'
description: 'Learn how to add a time picker to a sample application'
promote: true
tileShorthand:
title: Add a time picker
description: Add the time picker to a sample app to specify a time range in data
redirects:
- /build-tools/new-relic-one-applications/intro-to-sdk
- /client-side-sdk/index.html
resources:
- title: 'Introduction to New Relic NerdGraph'
url: https://docs.newrelic.com/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph
- title: Deploy an app
url: /build-apps/publish-deploy
tags:
- Agent API
- Telemetry SDK
- Trace API
- Metric API
- Event API
---
In order to drive simplicity and ease of use New Relic has provided a set of reusable components you can leverage when creating documentation. Refer to our Component Guide for more information.
All titles and descriptions should be sentence case.
Titles should aim be brief and still convey a comprehensive meaning of the page. Because titles show up throughout the docs in navigation elements (like breadcrumbs, and sidebar navigation) use shorter names to mitigate visual clutter.
Avoid using H1
header; that is reserved for the title of each page.
All headers should be sentence case. When using H2
, H3
and H4
ensure that you follow a logical hierarchy and properly use sub headers through out your pages.
Use the Markdown cheat sheet as reference when creating and editing Markdown files.
Refer to the formatting inline code and code blocks section in the Markdown cheat sheet to learn how to format code in Markdown.
When adding images to a content page refer to the images section in the Markdown cheat sheet to learn how to use images in your Markdown.
Images are stored in the images directory and organized by navigation section name. For example, the images for the Build an App Guide are located in the build-an-app directory.
When adding videos to a content page refer to the videos section in the Markdown cheat sheet to learn how use videos in your Markdown.
Videos are not stored within the site source code. All videos should be stored and reference from a video hosting site.
Each code snippet can include a tab indicating the language type the snippet contains. For example, the following YAML snippet will display a “YAML” tab.
```yaml
- id: Joe Doe
bio: Thinks documentation is the coolest.
```
- id: Joe Doe
bio: Thinks documentation is the coolest.
Use the following language keywords where appropriate:
- javascript or js
- jsx
- graphql
- html
- css
- shell
- yaml
- markdown
- diff
- flow
If a language keyword is omitted, the type will show as TEXT (as shown above)
Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in pages.
- New Relic One
- GraphQL
- NerdGraph
- Nerdpack
- Nerdlet
- NerdStorage
- NRQL
- CLI
- JavaScript (capital letters in “J” and “S” and no abbreviations)
- Markdown
- Node.js
Use active voice instead of passive voice as it’s a more concise and straightforward way to communicate a subject
passive: The for loop in JavaScript is used by programmers to…
active: Programmers use the for loop in JavaScript to…
Use the Oxford Comma except in titles. It is a comma used after the penultimate item in a list of three or more items, before ‘and’ or ‘or’ e.g.
For Example:
The Jamstack is: JavaScript, APIs, and Markdown.
For words that have multiple spellings, prefer the US English word over British or Canadian English.
For example:
color over colour
behavior over behaviour
This style guide was based on the Gatsby Style Guide.