Escrevendo documentação eficaz para Discourse

:information_source: Discourse documentation is currently being reviewed and edited to align with this style guide. Not all documentation topics currently match up to this - we are working toward that as quickly as possible.

This is considered a living document that guides how Discourse documentation is written and formatted. This topic will be kept up to date as needed. If you are in doubt about any of the principles here, please post on the topic to discuss specifics.

The guiding principle behind this documentation style guide is to consider your readers and their needs when writing documentation - what do they want to accomplish? What is your goal for providing the content?

:eyes: Quick checklist when implementing the style guide:

  1. Meta block is present and correct
  2. Title is action-oriented
  3. All titles use sentence case
  4. Correct tags and categories are used
  5. Document is structured logically

When completing a document, review it to make sure all of those criteria are met.

Please take note of these text formatting guidelines:


Meta information

  • Document should belong to one and only one of the following categories:
    • Using Discourse
      • General user guides for non-administrative tasks
    • Site Management
      • Settings, plugins, content, and general site administration
    • Integrations
      • Guides for integrating other platforms with Discourse
    • Hosted Customers
      • Guides that are only relevant to hosted customers
    • Self-hosting
      • Guides that are only relevant to self-hosted sites
    • Developer Guides
      • Technical guides for developing on top of Discourse, including creating themes, theme components, and plugins
    • Contributing
      • Guides for contributing to the Discourse open-source project
  • Document should belong to one and only one of the following tags / document types:
    • #how-to
    • #explanation
    • #reference
    • #tutorial
  • Document may have any other applicable tags, with an absolute maximum of 5 tags on a single document

Meta block

All documents must have a block at the top that includes a short explanation of what the document is about as well as any additional relevant meta information, like what the user level requirements are, whether console access is required, or anything else. This will be formatted in a blockquote without a heading over it. Heres an example of what this must look like:

:bookmark: This is a guide for describing all available hidden site settings, how to enable them, and why you might want to adjust them.

:person_raising_hand: Required user level: Administrator

:computer: Console access required

Titles and headings

  • Make document titles action-oriented
    • Incorrect: “How to enable automatic titles for chat threads”
    • Correct: “Enabling automatic titles for chat threads”
  • Document titles should not be too long
  • For ‘how-to’ topics, make the title goal oriented
  • All titles must be specific and unique
  • Do not use punctuation or special characters in document titles, other than commas
  • Do not include emoji in document titles
  • Use sentence case for titles and headings - that means only the first word starts with a capital letter, along with proper nouns and any other words that would normally be capitalised
  • Do not use ampersands (&) in headings, rather use the full word (“and”)

General writing guidelines, tone, and grammar

  • Use second-person voice when referring to people reading the document - i.e. use “you”, not “we”
  • Use active voice as much as possible
    • Incorrect: “the button should be clicked”
    • Correct: “click the button”
  • Define acronyms and abbreviations when first used, if necessary provide an external link that provides more information
  • Use short sentences, and break up text using shorter paragraphs, headings, and lists
  • You can use **bold** and *italics* to emphasise key phrases or words, but don’t overuse them
  • Avoid using jargon or technical terms without explanations - if in doubt, err on the side of explaining
  • Use screenshots when describing a visual interface, such as a UI element
  • Don’t document or attempt to disclose future Discourse features, products, or services unless explicitly permitted
  • Use transition words such as therefore, although, and furthermore.
  • Use common contractions: it’s, you’ll, you’re, we’re, let’s
  • Infer timelessness in documentation - avoid words such as soon, new, now, latest, etc. that quickly become irrelevant
  • Don’t attribute human qualities to software or hardware
    • e.g. “If you pass an integer to this API, it will get angry and raise an error”
    • e.g. “Our friendly and ambitious AI bot will help solve all your problems”
  • When quoting text (including from the Discourse UI), use “quotation marks”
  • When quoting a URL, use backticks
  • When using an example domain use discourse.example.com
  • If it would be useful, you can use emojis at the start of a paragraph to highlight it. Do not use more than two or three of these in a single topic. Some example emojis you can use:
    • :information_source: - An informative note
    • :mega: - Announcement or notice
    • :warning: - A warning message
    • :exclamation: - Very important information
  • Avoid:
    • Unnecessary metaphors or humour
    • Cultural and regional references
    • Dictating or ordering procedures in a condescending tone - e.g. You must click Publish or You need to click Publish
    • Being overly polite. For example, Please click Publish
    • Using exclamation points unless absolutely needed
    • Capitalizing words where it is unnecessary
    • Excess use of the same phrases and pronouns

For end user documentation:
Maintain a friendly, informal tone, with a focus on being clear and concise in a knowledgeable manner. Get to the point promptly. Explain technical terms, but be careful not to be condescending. To ensure clarity, start by briefly specifying the context of the current topic.

For developer and technical documentation:
Maintain a direct and precise tone. Use the same tone you would for user documentation, but you can assume a higher level of technical knowledge in your readers.

Structure

  • Get to the point fast - lead with what’s most important
  • Include important keywords early in the document
  • Make reader choices and next steps obvious
  • Always use light markup to write documentation (This is already built into Discourse with Markdown-it).
  • Organize your documentation in a logical flow - start with an overview, followed by detailed sections, and a summary or conclusion if applicable
  • Use headings and subheadings to structure your content, making it easier for readers to scan and find specific information - use descending hierarchy in headings, starting with h2, and don’t skip levels
  • Provide links to related topics or sections within your documentation - this helps users find additional information without unnecessary searches

Links

  • Use meaningful text in links
    • Incorrect: “Click here to read the guide”
    • Correct: “Read the guide
  • Unless the format of the URL is important or instructive, don’t use a URL as link text - instead, use the page title or a description of the page
  • Link to external sites and sources instead of quoting or rewriting existing documentation
  • Ensure that the sites you link to are of high standard and quality
  • If the link downloads a file, explicitly mention it - also indicate the type of file being downloaded and a rough estimate of the file size

Code in documentation

  • Use block code with language-specific syntax highlighting when possible for large code examples
  • If it is not already self-explanatory, introduce a code example with an introductory sentence that initiates the example that follows - when in doubt, err on the side of explaining
  • Code examples should follow the best practices for writing code for the relevant coding language
  • Use inline code for expressing basic code attributes or when a full code block is not necessary, such as:
    • Attribute names and values
    • Class names
    • Command-line utility names
    • Data types
    • Environment variable names
    • Filenames, filename extensions, and paths
    • Folders and directories
    • HTTP verbs, status codes, and content-type values
    • Query parameter names and values
    • Text input
  • When you use a placeholder in code examples, commands, or other text, including an explanation for what the placeholder represents
    • Write an explanation for the first time you use the placeholder; if there are multiple placeholders or steps after the first use of that placeholder, you can explain the placeholder again
  • Provide an easy way for users or developers to copy and run code.
    • Show expected output, either in a separate section after the code example or by using code comments within the code example
  • Write secure code - never hard-code passwords, API Keys, or secure information in code

Procedures and step-by-step guides

  • Format procedures consistently, so readers can find them easily by scanning
  • Use a separate numbered entry for each step
  • Include actions that finalize a step, such as OK or Apply buttons
  • If the instruction appears in the same UI where the action occurs, it’s usually not necessary to provide location details
  • If you need to make sure the reader begins in the right place, provide a brief phrase at the beginning of the step

Accessibility and inclusivity

  • Use screenshots, diagrams, or videos where they add value, particularly for explaining complex steps or showing parts of an interface
  • Images should be used to back up text information, not replace it
  • Always use alt attributes for images
  • Always provide captions or transcripts for videos
  • Only use GIFs if you can fully explain the content in text
  • Choose simple images and crop extraneous detail
  • Use plain language and avoid figures of speech or idioms that might not be universally understood
  • Consider that your document will be used on a multitude of devices
  • Use gender-neutral language. Don’t use he, him, his, she, her, or hers while referencing people - to write around pronouns, you can:
    • Rewrite using the second person (you)
    • Rewrite the sentence to have a plural noun and pronoun
    • Use the words person or individual
    • Use articles the, an, or a instead of a pronoun
    • Use a plural pronoun such as they, their, or them, even if it references a single individual
  • When you’re writing about a real person, use the pronouns that person prefers
  • Be inclusive of gender identity, race, culture, religion, ability, age, sexual orientation, and socioeconomic class - include a wide variety of professions, cultures, educational settings, locales, and economic settings in examples
  • Avoid politicised content - in cases where political content needs to be included, remain neutral
  • Don’t make any generalisations about people, countries, and cultures, not even positive or neutral generalisations
  • Don’t write prejudiced and discriminatory content against any communities, especially minorities
  • Avoid qualitative terms related to historical events
  • Avoid using terms and metaphors associated with violence and military actions

Last edited by @hugh 2024-09-03T11:02:51Z

Last checked by @hugh 2025-03-10T03:50:30Z

Check documentPerform check on document:
8 curtidas

@hugh / @SaraDev

Estou vendo uma pequena inconsistência aqui sobre os títulos.

Temos estes exemplos:

Mas depois dizemos isto:

Se eu colocar o exemplo “correto” no conversor, obtenho isto em vez disso:

Enable Automatic Titles for Chat Threads

Deveríamos atualizar o nosso exemplo para corresponder?

aside

Se dependesse apenas de mim, eu teria pensado que iríamos com a capitalização de frase, e não tenho a certeza porque temos “Chat Threads” capitalizado no título do tópico atual, então pessoalmente eu preferiria ver isto:

Enable automatic titles for chat threads

Mas a consistência é mais importante no final e assumirei que vocês têm uma boa razão para ter escolhido a recomendação atual.

1 curtida

Essa é uma boa observação - eu não tinha feito essa conexão, mas é fácil de atualizar. No entanto:

A especificação de caixa de título foi minha, porque acho que geralmente parece mais limpo e profissional. Acho que essa é muito mais uma opinião subjetiva minha, porque tanto o Google quanto a Microsoft dizem para usar a caixa de sentença em títulos de documentação. Outros sites que encontrei também dizem para usar a caixa de sentença, então vou reverter isso e atualizar o requisito de caixa lá.

3 curtidas

Também notei que eles dizem para usar a capitalização de frase para títulos e subtítulos. (Estou na mesma equipe).

Parece que não estamos especificando nossa preferência para subtítulos no momento. Vamos adicionar isso também enquanto estamos nisso.

1 curtida

Concordo - adicionarei isso aqui para especificar explicitamente.

1 curtida

OK, já que estou inspirado aqui…

Gosto que digamos isto:

Mas no guia, temos este exemplo, atualmente:

Minha opinião é que é desnecessário capitalizar “Configurações Ocultas do Site” aqui. (apelo à autoridade)

2 curtidas

Agradeço o apelo :smile:

Sim, este é um bom ponto - esse exemplo foi retirado de um documento real onde usamos o título do documento existente para descrevê-lo, e como esse documento usava maiúsculas em títulos, a referência também o fez. Com a mudança de maiúsculas em títulos para maiúsculas em frases, essa referência também deve ser atualizada.

1 curtida

Fiz algumas edições neste guia de estilo agora com base na conversa acima.

  • Alterei o título do tópico para minúsculas (sentence case)
  • Alterei os títulos para minúsculas (sentence case)
  • Removi uma capitalização desnecessária (Syntax)
  • Substituí ampersands (&) nos títulos por “and”
  • Substituí barras (/) nos títulos por vírgulas ou conjunções

Essas duas últimas alterações não foram discutidas – me diga se elas parecem supérfluas ou em desacordo com o guia (ou, alternativamente, se devemos capturar essas diretrizes no guia).

2 curtidas

Gostei dos dois últimos - eles estão definitivamente alinhados com o espírito do restante do guia e valem a pena incluí-los no próprio guia. Vou adicioná-los agora.

1 curtida

Presumo que as bandeiras para rotular documentos em outros idiomas sejam uma exceção.

1 curtida

Junto com evitar expressões idiomáticas, eu sempre evitei usar contrações na documentação. Pensei que elas dificultavam a compreensão para leitores não nativos de inglês/ocidentais. O inglês é uma língua estranha.

Moreover?

Em algum momento, nós (possivelmente eu) começamos a usar código inline para nos referirmos a configurações do site. Por exemplo: “Enable the discourse connect site setting.” Essa pode ser a abordagem correta, mas parece um pouco voltada para desenvolvedores.

Pode valer a pena usar um nome de placeholder consistente para nos referirmos aos sites do Discourse. Talvez discourse.example.com? Há alguma documentação aqui que se refere ao site do Discourse como sitename.com. Isso me confundiu bastante.


Alguns conselhos gerais de escrita: leia o que você escreveu como se fosse um membro do seu público-alvo (veja como as contrações são complicadas). Certifique-se de que suas suposições sobre o conhecimento prévio do público sejam razoáveis.

Por mais que eu aprecie não ter mais uma tonelada de tópicos de documentação atribuídos a mim, usar o Discourse como autor de todos os tópicos de documentação da equipe parece um pouco frio.

O que tornou a escrita divertida para mim novamente foi o conselho de procurar maneiras de colocar um pouco de si mesmo em tudo o que você está escrevendo. Poderia ser qualquer coisa, seu tom de voz, seus hobbies, o que for… Isso é meio que o oposto do que está sendo recomendado aqui.

6 curtidas

Olá Simon! :blob_wave:

Eu ia ver como isso se desenrolaria, mas sim, eu sou o mesmo, eu tento evitar contrações.

Hahaha, sim… Não vou usar nenhuma dessas palavras na documentação, para não revelar meu :face_with_monocle:.

Com certeza: Example Domains

Este é o ponto que vim discutir! :smiley:

Tivemos muita discussão sobre isso, e fiquei feliz em ver isso incluído no guia de estilo por padrão.

Aqui está o porquê eu acho que é importante: produzir documentação precisa ser acessível para o maior número possível de membros da nossa comunidade, incluindo (especialmente?) nossos membros da equipe do Discourse.

Discourse é um software social de discussão. E alguma documentação é realmente uma conversa contínua. Se estou compartilhando uma prática sobre como eu integro membros à minha comunidade, eu gostaria de ser apresentado como o “proprietário” desse tópico, para que eu possa responder a perguntas e expandir o assunto.

Por outro lado, se um cliente pergunta sobre um recurso que nunca explicamos, eu gostaria de poder usar o guia de estilo e produzir documentação útil e geral, o que sinto que ser o proprietário do tópico apresenta mais inércia para a publicação.

Além disso, se produzirmos documentação fora do Discourse (uma integração ou produção a partir de comentários de código ou o que for), ter um “usuário de documentação” é provavelmente mais fácil como um detalhe de implementação. :thinking:

Não acho que este guia impedirá as pessoas de injetar sua voz e personalidade, e hospedar a discussão. Mas seria ótimo se ajudasse mais pessoas a entrar na prática de documentar, que de outra forma não o fariam (e então poderemos incentivá-las a serem mais pessoais!) :smiley:

3 curtidas

Até termos uma forma nativa de lidar com documentos localizados, acho que prefixar o título com bandeiras é a maneira mais prática de fazer isso, e uma exceção razoável a esta diretriz.

Acho que esse tipo de coisa tem opiniões e preferências diferentes de qualquer maneira, mas para este guia de estilo, estamos seguindo as normas aceitas pela indústria. Mais uma vez, as diretrizes do Google e da Microsoft concordam que é melhor usar contrações comuns.

Dito isso, li algumas postagens sugerindo que o uso de contrações negativas (como “can’t”) pode dificultar a compreensão para falantes não nativos de inglês. Vamos investigar isso um pouco mais e, se necessário, atualizar o guia de estilo de acordo.

Removi esse exemplo! :smile:

Sim - isso é muito comum (não apenas no Discourse), mas concordo que não está totalmente correto. Usar aspas seria melhor, então acho que vou deixar isso explícito no guia de estilo.

Esse é um ótimo ponto - vou adicionar isso ao guia de estilo!

Obrigado por este feedback! @maiki fez alguns bons pontos acima, e concordo com o que ele diz lá. Para acrescentar a isso, direi que uma das razões pelas quais mudamos a autoria da documentação oficial para @Discourse é para dar a eles um maior senso de autoridade para os leitores, especialmente para as pessoas que estão acessando a documentação pela primeira vez. Este é também o ímpeto por trás de todo o guia de estilo em primeiro lugar.

Qualquer pessoa que escreva documentação pode definitivamente injetar sua personalidade em sua escrita, e a discussão sobre tópicos individuais de documentação não vai a lugar nenhum, então esse é sempre um bom lugar para tornar as coisas mais pessoais também.

Todo esse feedback é muito apreciado :slight_smile:

2 curtidas

Em relação à parte metablock do guia. Embora os tópicos de Documentação precisem de um de acordo com o guia acima, nem todos os tópicos têm um [1] e eles nem sempre são consistentes, aqui estão alguns exemplos de alguns guias que encontrei.

Pessoalmente, eu gosto de ‘Todos os usuários’

Eu não queria sair mudando isso em tópicos antes de coletar algum feedback :smiley:


  1. talvez dependa do contexto do tópico? ↩︎

4 curtidas

Todos os docs do @Discourse estão em andamento e todos, esperançosamente, terão um em algum momento (:crossed_fingers:). Bom ponto sobre a inconsistência. Não tenho certeza de qual escolheremos, mas definitivamente garantiremos que escolheremos um e o manteremos. :slight_smile:

4 curtidas

Eu também gostaria de acrescentar que, para qualquer um que você veja com o novo bloco de informações incluído, isso significa que eles passaram pela ‘fase 1’ e entraram na fase de revisão - então, se você ler um e pensar ‘isso não está certo’ ou ‘falta alguma informação’ e se sentir generoso o suficiente para deixar algum feedback, por favor, adicione seus pensamentos a uma postagem. :heart: :slight_smile:

5 curtidas

Qual é o propósito das informações de nível de usuário exigidas no topo? Pensei que forneceria informações sobre se o documento é relevante para mim ou não. Assim, eu poderia lê-lo e decidir “Eu não sou xxx, então não é relevante”.
Mas parece que é usado de forma diferente, porque, por exemplo, usuários abaixo do TL3 podem editar wikis, então é relevante para outros também.

3 curtidas

Obrigado por destacar isso, @Moin - esse tópico foi atualizado para retificar o nível de usuário exigido.

Seu entendimento sobre para que serve essa informação está correto - deve dizer qual nível ou tipo de usuário é capaz de realizar as ações explicadas no documento.

1 curtida