At Replicated, we believe that documentation is part of the product. This means that a feature is not considered done until the corresponding documentation is also published. Not only does this help us keep the docs up-to-date when new features are released, but it also gets everyone on the team (technical writers, product managers, developers, etc) involved in writing, testing, and publishing the docs. As the documentation manager at Replicated, I know how important this level of collaboration is to delivering docs that are as accurate, complete, and clear as possible.
We’re passionate about documentation because we understand that it is crucial for customer success. Particularly for self-hosted software, users will heavily rely on documentation to get the information they need to install, configure, manage, and troubleshoot an app. For this reason, your docs can make or break the user experience for your app.
Of course, getting started with (and maintaining) your docs isn’t easy. Particularly for smaller teams that might or might not have a dedicated technical writer, it can be hard to know where to begin. In this blog, I’ll run through some key considerations, examples, and templates to help you get past the writer’s block and on your way to publishing great docs for your app.
Product documentation websites tend to be static sites, where the same content is served to all users. This means that the site uses server-side rendering of HTML, CSS, and Javascript files, rather than needing to query a database to render client-specific content. This makes static sites relatively lightweight, fast, and easy to maintain.
Static site generators (SSGs) are a tool that can be used to build static websites from text files, such as Markdown or AsciiDoc, and templates. Some popular SSGs include:
When choosing a static site generator, consider the language and frameworks that you want to use (Markdown, AsciiDoc, MDX, and so on), the completeness and helpfulness of the available documentation for the SSG, and the existing community for the SSG.
Beyond choosing your SSG, some other considerations to keep in mind when creating a docs website include:
Style guides provide content guidelines in areas like language and grammar, punctuation usage, formatting, and more. The goal of using a style guide is to ensure that information in your docs is clearly communicated to a specific audience, using a consistent style and voice. This makes it easier for all users to read the docs, reducing the opportunities for confusion that can be caused by content irregularities.
Rather than reinventing the wheel, consider adopting one of the many existing public style guides. For example, the Microsoft Writing Style Guide and the Google developer documentation style guide are helpful resources that explain general principles and specific formatting guidelines that you can apply to your own docs site. They cover topics like accessibility, writing to an international audience, how to use common organizational elements like lists and notes, and more.
Documentation websites have a panel on the left side of the screen that organizes all the topics (this is referred to as a sidebar or table of contents). All docs sites will organize content in the sidebar slightly differently depending on the given software product and audience. However, in general, it can be helpful to include higher-level sections that speak to common tasks that users will complete (like installing or managing an app).
For vendors that distribute their app with Replicated, some sections to consider adding to your sidebar include:
For more detailed suggestions for organizing your docs, you can also watch my RepliCon talk called Creating installation docs for your users.
You’ll likely spend the most time writing and testing your app installation docs, particularly if you offer several different installation options for your users. Luckily, for vendors that distribute one or more apps with Replicated, you can borrow content directly from the Replicated docs website rather than having to start completely from scratch.
For example, here’s the section in the Replicated docs site that includes information about installing with KOTS:
As shown above, your installation docs should include introductory content, prerequisites and requirements, and the actual installation procedures themselves:
Include an overview that provides introductory information the user might need to understand before installing, such as the different installation options for your app (installing with KOTS in an existing cluster versus a VM or bare metal server, installing with Helm, air gap versus online installations, proxy installations, and so on).
An example of a good installation overview is DataStax’s Plan a Mission Control installation topic, which shows possible deployment topologies and describes the different installation options that users can choose between.
In addition to configuring preflight checks for your app, your docs should also clearly list all the prerequisites and requirements that your users need to address before they can install.
For apps installed with KOTS, you can copy or link to the installation requirements in the Replicated docs:
(Just be sure to add any app-specific requirements that are not covered in the Replicated docs. Wallaroo’s Prerequisites Guide provides a good example of this.)
You might also support installation options such as installing behind a proxy, the use of local private registries, or advanced RBAC options.
Replicated recommends that you add a separate topic or subsection in your docs site for each installation method, writing and thoroughly testing one method at a time.
Additionally, as part of your installation procedures, it’s also important to explain any configuration options for your app (such as the fields on the KOTS Admin Console config screen or the Helm values that you expose to your users). For example, KNIME’s Advanced settings section in their installation guide describes all the advanced configuration options, providing users with the information and recommendations they need in order to configure the app.
Users often turn to the docs when things go wrong, and being able to find troubleshooting information that helps them self-resolve the issue is a big trust-builder. Troubleshooting content can also help reduce the burden on your support team by reducing the number of support requests that users have to make.
To make your troubleshooting information easy to read and search, use a standard, consistent format. In the Replicated docs site, we use a “Symptom, Cause, Solution” template, as shown in this example from our Snapshots troubleshooting page:
The “Symptom, Cause, Solution” template makes it really easy for users to understand why they are seeing a given error, and how to resolve it. It also makes it much easier for docs contributors to add new troubleshooting content without having to think about how they are going to format the information.
When writing this type of troubleshooting content, be sure to also include the exact error message that users might be seeing. This way, a "Control+F" or "Command+F" on the page for the error message will help users quickly find the info they are looking for.
Finally, for apps distributed with Replicated, you should also include a topic that explains how to collect a support bundle. To do this, you can copy existing content from the Replicated docs website:
For inspiration, take a look at these docs websites from other vendors that distribute their apps with Replicated: