You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					247 lines
				
				7.4 KiB
			
		
		
			
		
	
	
					247 lines
				
				7.4 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								# Fastify Style Guide
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Welcome
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Welcome to *Fastify Style Guide*. This guide is here to provide you with a
							 | 
						||
| 
								 | 
							
								conventional writing style for users writing developer documentation on our Open
							 | 
						||
| 
								 | 
							
								Source framework. Each topic is precise and well explained to help you write
							 | 
						||
| 
								 | 
							
								documentation users can easily understand and implement.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Who is this guide for?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This guide is for anyone who loves to build with Fastify or wants to contribute
							 | 
						||
| 
								 | 
							
								to our documentation. You do not need to be an expert in writing technical
							 | 
						||
| 
								 | 
							
								documentation. This guide is here to help you.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Visit the [contribute](https://www.fastify.io/contribute) page on our website or
							 | 
						||
| 
								 | 
							
								read the
							 | 
						||
| 
								 | 
							
								[CONTRIBUTING.md](https://github.com/fastify/fastify/blob/main/CONTRIBUTING.md)
							 | 
						||
| 
								 | 
							
								file on GitHub to join our Open Source folks.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Before you write
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You need to know the following:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* JavaScript
							 | 
						||
| 
								 | 
							
								* Node.js
							 | 
						||
| 
								 | 
							
								* Git
							 | 
						||
| 
								 | 
							
								* GitHub
							 | 
						||
| 
								 | 
							
								* Markdown
							 | 
						||
| 
								 | 
							
								* HTTP
							 | 
						||
| 
								 | 
							
								* NPM
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Consider your Audience
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Before you start writing, think about your audience. In this case, your audience
							 | 
						||
| 
								 | 
							
								should already know HTTP, JavaScript, NPM, and Node.js. It is necessary to keep
							 | 
						||
| 
								 | 
							
								your readers in mind because they are the ones consuming your content. You want
							 | 
						||
| 
								 | 
							
								to give as much useful information as possible. Consider the vital things they
							 | 
						||
| 
								 | 
							
								need to know and how they can understand them. Use words and references that
							 | 
						||
| 
								 | 
							
								readers can relate to easily. Ask for feedback from the community, it can help
							 | 
						||
| 
								 | 
							
								you write better documentation that focuses on the user and what you want to
							 | 
						||
| 
								 | 
							
								achieve.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Get straight to the point
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Give your readers a clear and precise action to take. Start with what is most
							 | 
						||
| 
								 | 
							
								important. This way, you can help them find what they need faster. Mostly,
							 | 
						||
| 
								 | 
							
								readers tend to read the first content on a page, and many will not scroll
							 | 
						||
| 
								 | 
							
								further.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Example**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Less like this: Colons are very important to register a parametric path. It lets
							 | 
						||
| 
								 | 
							
								the framework know there is a new parameter created. You can place the colon
							 | 
						||
| 
								 | 
							
								before the parameter name so the parametric path can be created.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								More Like this: To register a parametric path, put a colon before the parameter
							 | 
						||
| 
								 | 
							
								name. Using a colon lets the framework know it is a parametric path and not a
							 | 
						||
| 
								 | 
							
								static path.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Avoid adding video or image content
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Do not add videos or screenshots in the documentation. It is easier to keep
							 | 
						||
| 
								 | 
							
								under version control. Videos and images will eventually end up becoming
							 | 
						||
| 
								 | 
							
								outdated as new updates keep developing. Instead, make a referral link or a
							 | 
						||
| 
								 | 
							
								YouTube video. You can add links by using `[Title](www.websitename.com)` in the
							 | 
						||
| 
								 | 
							
								markdown.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Example**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								To learn more about hooks, see [Fastify hooks](https://www.fastify.io/docs/latest/Reference/Hooks/).
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Result:
							 | 
						||
| 
								 | 
							
								>To learn more about hooks, see [Fastify
							 | 
						||
| 
								 | 
							
								>hooks](https://www.fastify.io/docs/latest/Reference/Hooks/).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Avoid plagiarism
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Make sure you avoid copying other people's work. Keep it as original as
							 | 
						||
| 
								 | 
							
								possible. You can learn from what they have done and reference where it is from
							 | 
						||
| 
								 | 
							
								if you used a particular quote from their work.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Word Choice
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								There are a few things you need to use and avoid when writing your documentation
							 | 
						||
| 
								 | 
							
								to improve readability for readers and make documentation neat, direct, and
							 | 
						||
| 
								 | 
							
								clean.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### When to use the second person "you" as the pronoun
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								When writing articles or guides, your content should communicate directly to
							 | 
						||
| 
								 | 
							
								readers in the second person ("you") addressed form. It is easier to give them
							 | 
						||
| 
								 | 
							
								direct instruction on what to do on a particular topic. To see an example, visit
							 | 
						||
| 
								 | 
							
								the [Plugins Guide](./Plugins-Guide.md).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Example**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Less like this: we can use the following plugins.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								More like this: You can use the following plugins.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								> According to [Wikipedia](#), ***You*** is usually a second person pronoun.
							 | 
						||
| 
								 | 
							
								> Also, used to refer to an indeterminate person, as a more common alternative
							 | 
						||
| 
								 | 
							
								> to a very formal indefinite pronoun.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## When to avoid the second person "you" as the pronoun
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								One of the main rules of formal writing such as reference documentation, or API
							 | 
						||
| 
								 | 
							
								documentation, is to avoid the second person ("you") or directly addressing the
							 | 
						||
| 
								 | 
							
								reader.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Example**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Less like this: You can use the following recommendation as an example.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								More like this: As an example, the following recommendations should be
							 | 
						||
| 
								 | 
							
								referenced.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To view a live example, refer to the [Decorators](../Reference/Decorators.md)
							 | 
						||
| 
								 | 
							
								reference document.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Avoid using contractions
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Contractions are the shortened version of written and spoken forms of a word,
							 | 
						||
| 
								 | 
							
								i.e. using "don't" instead of "do not". Avoid contractions to provide a more
							 | 
						||
| 
								 | 
							
								formal tone.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Avoid using condescending terms
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Condescending terms are words that include:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* Just
							 | 
						||
| 
								 | 
							
								* Easy
							 | 
						||
| 
								 | 
							
								* Simply
							 | 
						||
| 
								 | 
							
								* Basically
							 | 
						||
| 
								 | 
							
								* Obviously
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The reader may not find it easy to use Fastify's framework and plugins; avoid
							 | 
						||
| 
								 | 
							
								words that make it sound simple, easy, offensive, or insensitive. Not everyone
							 | 
						||
| 
								 | 
							
								who reads the documentation has the same level of understanding.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Starting with a verb
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Mostly start your description with a verb, which makes it simple and precise for
							 | 
						||
| 
								 | 
							
								the reader to follow. Prefer using present tense because it is easier to read
							 | 
						||
| 
								 | 
							
								and understand than the past or future tense.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Example**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Less like this: There is a need for Node.js to be installed before you can be
							 | 
						||
| 
								 | 
							
								 able to use Fastify.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 More like this: Install Node.js to make use of Fastify.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Grammatical moods
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Grammatical moods are a great way to express your writing. Avoid sounding too
							 | 
						||
| 
								 | 
							
								bossy while making a direct statement. Know when to switch between indicative,
							 | 
						||
| 
								 | 
							
								imperative, and subjunctive moods.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Indicative** - Use when making a factual statement or question.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Example: Since there is no testing framework available, "Fastify recommends ways
							 | 
						||
| 
								 | 
							
								to write tests".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Imperative** - Use when giving instructions, actions, commands, or when you
							 | 
						||
| 
								 | 
							
								write your headings.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Example: Install dependencies before starting development.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Subjunctive** -  Use when making suggestions, hypotheses, or non-factual
							 | 
						||
| 
								 | 
							
								statements.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Example: Reading the documentation on our website is recommended to get
							 | 
						||
| 
								 | 
							
								comprehensive knowledge of the framework.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Use **active** voice instead of **passive**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Using active voice is a more compact and direct way of conveying your
							 | 
						||
| 
								 | 
							
								documentation.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Example**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Passive: The node dependencies and packages are installed by npm.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Active:  npm installs packages and node dependencies.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Writing Style
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Documentation titles
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								When creating a new guide, API, or reference in the `/docs/` directory, use
							 | 
						||
| 
								 | 
							
								short titles that best describe the topic of your documentation. Name your files
							 | 
						||
| 
								 | 
							
								in kebab-cases and avoid Raw or camelCase. To learn more about kebab-case you
							 | 
						||
| 
								 | 
							
								can visit this medium article on [Case
							 | 
						||
| 
								 | 
							
								Styles](https://medium.com/better-programming/string-case-styles-camel-pascal-snake-and-kebab-case-981407998841).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Examples**:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								>`hook-and-plugins.md`,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `adding-test-plugins.md`,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `removing-requests.md`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Hyperlinks
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Hyperlinks should have a clear title of what it references. Here is how your
							 | 
						||
| 
								 | 
							
								hyperlink should look:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```MD
							 | 
						||
| 
								 | 
							
								<!-- More like this -->
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Add clear & brief description
							 | 
						||
| 
								 | 
							
								[Fastify Plugins] (https://www.fastify.io/docs/latest/Plugins/)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<!--Less like this -->
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// incomplete description
							 | 
						||
| 
								 | 
							
								[Fastify] (https://www.fastify.io/docs/latest/Plugins/)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Adding title in link brackets
							 | 
						||
| 
								 | 
							
								[](https://www.fastify.io/docs/latest/Plugins/ "fastify plugin")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Empty title
							 | 
						||
| 
								 | 
							
								[](https://www.fastify.io/docs/latest/Plugins/)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Adding links localhost URLs instead of using code strings (``)
							 | 
						||
| 
								 | 
							
								[http://localhost:3000/](http://localhost:3000/)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Include in your documentation as many essential references as possible, but
							 | 
						||
| 
								 | 
							
								avoid having numerous links when writing for beginners to avoid distractions.
							 |