FreeRADIUS InkBridge

Documentation Guidelines

We aim to give our readers a complete set of documentation that has a consistent look and feel. This includes matching the design with what readers see on the website and in the source documents.

Style Guide

The Style Guide outlines the rules and recommendations for every documentation page. The rules cover two things: how the prose reads (British English, a Grade 9 reading level, a friendly tone, and an approved word list) and how the AsciiDoc is built (xrefs, tables, admonitions, collapsible blocks, and numbers).

Consistency is important. A reader who sees three spellings of one term, or three ways of writing a version number, spends effort decoding the style instead of finding the answer they need.

The subsections below are in alphabetical order.

Accessibility

Accessible documents allow everyone to access information equally. This also improves the user experience. To improve accessibility, use clear headings, descriptive alt text, and high colour contrast. This supports assistive technologies and aids users with visual or hearing impairments.

Make your information easy to read by using clear tables and simple lists. These formats act like a map, helping your reader navigate complex data quickly.

Give every diagram and table a descriptive title. For technical drawings like engineering diagrams, add call-outs to explain key parts. These labels guide the eye and clarify how systems connect.

Follow the other design rules in this document to improve your layout. Use consistent fonts, proper spacing, and organised headings. These elements work together to create a professional look. Structured formatting helps lessen eye strain and keeps readers focused on the content.

Admonitions

Pick the admonition type by what happens to the reader who ignores the box, not by how much we want their attention. Overusing WARNING trains readers to skip all five.

Table 1. Admonition types
Type Use when Cost of ignoring it

NOTE

Extra context that helps but isn’t needed to finish the task.

Nothing breaks.

TIP

A faster or cleaner way to do what the reader is already doing.

Nothing breaks, the reader uses a slower method.

IMPORTANT

A step or condition the reader must not skip.

The task fails or gives the wrong result.

CAUTION

An action that can lose data, break a running server, or need manual recovery.

Recoverable damage.

WARNING

An action that can lock out access, expose credentials, or take down production.

Serious or hard to reverse damage.

Keep an admonition to three sentences. Anything longer belongs in body text under its own heading.

Never stack two admonitions together, as readers skip both. Never open a section with an admonition, because the reader has no context yet for the thing they’re being warned about.

Capitalisation

Use Title Case for all Table of Contents (TOC) entries to ensure clear organisation.

Use Title Case for your main titles and top-level headings, such as H1 and H2. This consistency helps readers navigate your document like a map. Ensure navigation panels match the H1 and H2 headings on selected pages to avoid confusing users.

Use Sentence case for all smaller headings from H3 to H6. This style follows a regular sentence. Only the first word and proper nouns are capitalised. This shows the reader that these sections provide supporting details, not main topics. The documentation needs varying heading styles to guide the reader through the content.

Collapsible text

Use a collapsible block for very large code snippets, programming examples, debug outputs, or anything longer than 20 lines. This allows us to place more information on one or two pages, and readers can select exactly the information they need by expanding sections.

A collapsible block is an example block (==== delimiters) marked with [%collapsible]:

.Server startup output
[%collapsible]
====
FreeRADIUS Version 4.0.0
Copyright (C) 1999-2026 The FreeRADIUS server project and contributors
====

Always give the block a title, as the title becomes the text the reader clicks to expand. A block with no title shows the word "Details" instead, which tells the reader nothing about what’s inside.

The exception is a code block (more than 20 lines) that a user needs to copy. Keep the text or block expanded.

Font

Use a clear font that is legible on-screen and large enough so it’s easy to read (accessible). Generally a non-serif font is best for screens and works in PDFs (if required).

Avoid capital letters BECAUSE IT SEEMS LIKE WE’RE ALWAYS YELLING AT OUR READERS! Use bold to emphasise or italics (sparingly) to highlight information. Use capital letters for all acronyms such as TCP/IP and EAP.

The CSS files set the font family and size for every page, see Layout and CSS.

Formatting

Use bold to emphasise information rather than italics, because readers recognise bold text faster than they recognise italic text. All programming snippets must be formatted as code or code blocks.

Code blocks using a source such as html, shell (zsh, bash), and unlang render the output text in different colours. Since there are so many sources, we’re allowing all types and will update CSS with final colours for the output text.

Other code blocks without a native source, keep text in the code or code block black.

The CSS files control every colour on the page, see Layout and CSS.

Grammar

Replace words of six or more syllables with shorter terms that translate easily. Substitute or remove formal words not recommended for software documentation. Check the Terminology section for more information on recommended words and terms.

Shorten sentences or break them into two sentences to ensure conciseness.

Landing pages

All landing pages (H1 top level sections) need an introductory paragraph and an explanation of what the section contains.

Add xrefs to all the subsections contained in this section on the top level landing page. Users can select a topic from the main page while reading or use the navigation panel on the left side.

Layout and CSS

Left-justify (irregular right edge) all pages. A left-justified page is more accessible and increases readability. Avoid centre-justification.

The CSS files control the design elements: fonts, colours, layout, margins, and page size. Change one line in a CSS file and the change applies across every page at once.

Headers and footers live in separate files, which keeps branding and navigation consistent. Update a logo or a contact address in one header file and the change reaches every page.

If your page needs a CSS update, send the request with your pull request.

Localisation

Remove as many gerunds (words ending in ing) as possible. English doesn’t easily translate these words. This can confuse non-native speakers.

Check convoluted text or run-on sentences with Hemingway or Grammarly editors. The reading level should be Grade 9. This ensures the document is scannable and readable. Most users can understand what they’re reading on the first pass.

Hemingway and Grammarly are third-party tools, not ours. Both have free versions that run in a browser and are enough for checking reading level and sentence length. Neither is required, and neither has the last word on a rule this guide sets.

Numbers

Numbers like 1, 2, 3, …​ up to 9 are written as words. Numbers starting at 10+ are written out in numerals.

This is not applicable for code or code blocks. These numbers need to stay in their native formats.

Decimal numbers need to only be two significant digits.

See IEEE expressing numbers for more guidance.

Punctuation

Currently, there is one space after a period at the end of a sentence. The source files still hold a mix of one and two spaces, and this will change in a future release. Use the Oxford comma to make sentences clear and concise.

Choose the list type to match the content:

  • Use unordered lists when listing contents or items.

  • Use ordered lists for tasks or steps.

Use a period at the end of each list entry.

Spacing

All headings have a line space after them before the first paragraph. There is also a single blank line between paragraphs.

The recommended method is to use one space at the end of a sentence (see the previous note in Punctuation).

Heading spacing is set per page rather than globally in the CSS.

Spelling

We use British or UK spelling and most words use the s instead of z. An example is "utilise" versus "utilize". By spelling our words the same as the supporting material, for example the company website or the FreeRADIUS software, our readers' comprehension increases. The reader isn’t figuring out what terms mean if they’re spelled the same. They’re also not determining whether two terms spelled differently mean the same thing.

Exception: Use the z form for authorization rather than authorisation. This rule matches the same spelling of the term authorize in the RFCs and codebase.

Tables

Put information in tables where applicable to increase readability / scanning. See Collapsible text for hiding very long code snippets, programming examples, or debug outputs.

Tone

Friendly and informal for users who need to feel comfortable when accessing information. The informal tone allows the use of contractions.

Remove all slang terms and rhetorical questions. Check other style guides (Chicago/Google/Apple/Microsoft) for anything else not covered by this page. MS Tips is a good reference for technical documentation and localisation.

Use xref: for a target inside our documentation and link: for a target on another site.

Don’t send an external URL through xref:. Asciidoctor treats the URL as an anchor name and emits href="#https://example.com/", so the link looks right on the page and goes nowhere when clicked.

Table 2. Link syntax
Target Syntax Example

Page in the same module

xref:page.adoc[text]

xref:guidelines.adoc[Documentation Guidelines]

Anchor on a page in the same module

xref:page.adoc#anchor[text]

xref:components/radius_servers.adoc#policy[Policies]

Page in another module

xref:module:page.adoc[text]

xref:concepts:freeradius.adoc[FreeRADIUS]

Anchor on the page being read

<<anchor,text>>

<<terms,Terminology>>

Another site or external site

link:url[text]

link:https://docs.asciidoctor.org/[AsciiDoc]

To print a macro instead of running it, wrap the example in plus signs inside the backticks:

| Page in the same module | `+xref:page.adoc[text]+`

Always put link text inside the brackets. Empty brackets print the raw URL, which readers can’t scan and screen readers read out one character at a time.

Every module needs its prefix when you reference a file in a different module. A page in howto linking to a page in concepts needs xref:concepts:, and leaving the prefix off resolves against howto instead.

RFCs need to be referenced with no dash between RFC and the xxxx digits. For example, RFC 2865.

Recommendations

AsciiDoc

Use the built-in functions and templates from AsciiDoc to standardise output rendering.

Some tips include:

  • Use the Menu listing and the menu items function in AsciiDoc. For example, menu function (gives the MENU>item1>item2 syntax).

  • For tables, use [options="header,autowidth"] to size the columns to fit their contents. Note that the option is header, not headers, and the plural is silently ignored so the table renders with no header row.

  • To set the column widths yourself, use [cols=...] and drop autowidth, because autowidth overrides any widths given in cols. For example, [cols="1,3,3",options="header"] makes the first column narrow and the remaining two equal.

Single source

Add partials for any section of text repeated more than twice throughout the documentation. Some examples are the mailing and RFC lists that are repeated multiple times throughout the documentation.

Any paragraphs or text that is required in more than one place needs to be placed in a partials directory.

Any diagram or image that is required in more than one place needs to be placed in an images directory.

Terminology

We write in British English, and we keep the wording plain enough for a global readership. Plain, simple wording prioritises clarity for non-native speakers. Readers from diverse linguistic backgrounds can then follow the text on the first pass.

To ensure effective communication, consider the following:

  • Simplify language and avoid complex constructions.

  • Write for translation; simpler words are easy to localise and understand.

  • Use clear, short sentences and avoid ambiguous language.

  • Use standard expressions and avoid phrasal verbs, gerunds, and colloquialisms.

  • Standardise dates, phone numbers, and addresses. Worked examples are still to be added.

The following tables indicate which terms are good or bad to use in our documentation, both the developer documentation written inside the source code and the customer-facing pages.

Words and terms

Table 3. Words and terms
Not recommended Recommended Reason

analyze, analyzed, analyzing

analyse, analysed, analysing

Standardise on British English.

authorise, authorised, authorising

authorize, authorized, authorizing

Use the z form to match the spelling of the term authorize in the RFCs and codebase.

behavior

behaviour

Standardise on British English.

centralize, centralized, centralizing

centralise, centralised, centralising

Standardise on British English.

freeradius, FreeRadius

freeRADIUS, FreeRADIUS

Use a standard word for freeRADIUS so users don’t think it’s a different software version or product. This recommended form best represents the freeRADIUS logo.

license, licensed

licence, licenced

You may see licence=noun and license=verb, but licenced (as in copyright) is an acceptable form.

minimize, minimizing, minimized

minimise, minimised, minimising

Standardise on British English.

thus, thusly

therefore, as a result, so, thereby

Thus is a formal term and not recommended for software documentation. Try rephrasing the sentence to remove the word.

v.4.0.0, ver 4.0, v4.0.x

v4, version 4

Standardise on one term throughout the documentation.

v.3.0.0, ver 3.0, v3.0.x

v3, version 3

Standardise on one term throughout the documentation.

master

primary, main

Try to use inclusive language as the first option. Legacy terms master/slave may be used according to industry standard. Only use the term where/when the 'master' reference works in the selected context.

mandatory

required, needed, must be present

Inclusive language.

user, users, network user(s)

end-user, end-user(s)

In a RADIUS context only. An end-user is the person or client device (Windows machines, Macs) authenticating to the network. An end-user is not a network client such as a NAS or proxy server that talks directly to the freeRADIUS server. When referring to the person reading our documentation, user or reader is correct.

nases, Nases, NASs

NASes or Network Access Servers

NAS refers to a Network Access Server that may be a devices or software. There are many plural forms, but we need to standardise on one form such as NASes.

client, clients

network client, network clients, NAS, NASes

Refers to any device that communicates directly with the RADIUS server.

should

must, required, need to

Use direct language to instruct the user what they have to do. Should implies a suggestion and not necessarily a step that’s required.

Network RADIUS, Network Radius

InkBridge Networks

Rebranding of documents.

whilst

while

Whilst is a formal term and not recommended for software documentation.

Forbidden words

Table 4. Forbidden words
Not Recommended Recommended Words Reason

stupid, stupidities

nonsensical, problems, issues, senseless (if referring to an action, not a person). Other suggestions - lower intelligence threshold, unwanted behaviours, unexpected results, imprudences.

Stupid is a superfluous word and not needed.

crap, shit

problems, issues

Crap and shit are slang and hard to translate.

retarded

not recommended, nonsensical

Use inclusive language. This word excludes the 'slower-than-average' reader.

hell

troublesome, gives you issues

Hell is hard to translate and alternative words can be used.

weenie

ineffectual, problematic, weak

Weenie translates very differently into other languages and is definitely not a good word to use.

Acronyms

Industry-standard acronyms use capital letters.

Table 5. Acronyms
Term Term to use Reason

arp, Arp

ARP

Standard way to reference protocol.

dns, Dns

DNS

Standard way to reference protocol.

eap, Eap

EAP

Standard way to reference protocol.

Ip, ip

IP

Use IP when referring to the Internet Protocol (IP) or networking standards. NOTE: Use ip when referencing a variable or a specific instance of an IP address in code or examples.

ldap

LDAP

Standard way to reference protocol, but use ldap when referring to the ldap module.

tcp, Tcp

TCP

Standard way to reference protocol.

TCPIP, TCPip, TcpIP

TCP/IP

Standard way to reference protocol.

Udp, udp

UDP

Standard way to reference protocol.

Antora Documentation Style Guide

For developers contributing to the codebase, see the style guide in the reference directory for more guidance writing your documentation in code.