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. |