Toolchain families
A toolchain is a description of all the tools, components, and processes used to build documentation.
For examples of an individual toolchain and a toolchain comparison, see this article: Comparing doc tools: Stop doing the apples-to-oranges thing
A toolchain family is a description of a type of toolchain. Although every organization has slightly different practices, there are a handful of common approaches that most people would recognize. I listed common toolchain families here because it's helpful to understand why an organization would pick each of them – even if you wouldn't expect to use some of these yourself.
The tools chosen by an organization tend to correspond to requirements. They may have been chosen to solve a particular problem or address an organizational need. When you think about changing a toolchain, ask why the current tools were chosen in the first place because the requirements haven't necessarily changed. In other words, if you use a new tool, it might have to meet the same requirements that the old tool met, in addition to the things that you want it to do.
Here are the most common toolchain families:
- Docs as Code
- Structured markup (e.g. the DITA approach. It's good to remember that Docs as Code isn't the only type of toolchain that involves automation.)
- Desktop publishing (The unstructured FrameMaker approach)
- Wikis (Confluence)
- Custom applications (Stripe docs)
Docs as Code
Description: This approach adapts the tools and processes of code development for documentation, so that developers will be more likely to contribute to documentation. It does away with the tools typically favored by technical writing teams and replaces them with simple text editors or IDEs and Git.
The essentials: Docs as Code
Main use cases | Strengths | Limitations |
---|---|---|
|
|
|
Docs as Code: common components of this toolchain family
Layers | Examples of commonly used tools and components |
---|---|
Deploy |
|
Build |
|
Transform | |
Automation | Services like Jenkins, GitHub Actions, and GitLab CI/CD. |
Source code management |
|
Editing tools | Plain text editors and IDEs. (Whatever the developers are already using to write code.) |
Markup language |
|
Structured markup
Description: Structured markup is the original home of programmatically generated documentation. Years before the docs-as-code approach came along, DITA and DocBook were invented specifically for technical documentation.
The essentials: structured markup
Main use cases | Strengths | Limitations |
---|---|---|
|
|
|
Structured markup: common components
There are two distinct approaches. One involves a text editor like Oxygen, SCM like Git, and a publishing solution. The other approach involves an all-in-one component content management system (CCMS), which contains everything from the editing environment to version management to transformation. Sometimes even deployment and hosting of the published content.
Layers | Examples of commonly used tools and components |
---|---|
Deploy |
|
Build |
|
Transform | |
Automation | Services like Jenkins, GitHub Actions, and GitLab CI/CD. |
Source code management |
|
Editing tools |
|
Markup language | Structured languages like DITA, DocBook, XHTML, and S1000D. |
Desktop publishing tools
Description: Desktop publishing tools with binary file types might be relied on where PDF is a requirement, especially if there's a need for PDF with a slick layout. PDFs are a mandatory deliverable for certain industries, including medical devices, pharmaceutical companies, certain automotive applications, and government or military contractors. PDF output may be required by law, by a regulatory body, or by a contract with a customer.
A team that uses desktop publishing in a documentation set out of necessity, might have other docs containing APIs and SDKs that call for a different approach – this can lead to a complex situation when choosing tools. The team might be best served by an environment where they're allowed to use different tools and processes for different sets of documentation.
The essentials: desktop publishing
Main use cases | Strengths | Limitations |
---|---|---|
Documentation where PDFs are required. (This category existed
before the advent of HTML documentation.) Publications that require precise layout, which can't be delivered by automation, like a slick, well-designed PDF. |
|
|
Desktop publishing: common components of this family
Layers | Examples of commonly used tools and components |
---|---|
Deploy |
|
Build |
|
Transform | |
Automation | Build and transform can be automated through proprietary services like FrameMaker Publishing Server, InDesign Server, and Adobe Experience manager. |
Source code management |
|
Editing tools | Word, unstructured FrameMaker, InDesign |
Markup language | NA |
Wikis: the all-in-one solution
Description: A wiki is a top-to-bottom solution that provides everything from the editing environment to deployment.
The essentials: wikis
Main use cases | Strengths | Limitations |
---|---|---|
Frequently used for internal documentation. |
|
|
Wikis: common components of this toolchain family
Layers | Examples of commonly used tools and components |
---|---|
Deploy | All-in-one systems offer everything from the editing environment to deployment of the final product. For example: Confluence or MediaWiki (Used by Splunk to create Ponydocs.) |
Build | |
Transform | |
Source code management | |
Editing tools | |
Markup language |
Custom-made documentation apps and developer portals
Description: Stripe developed their own documentation site with enough functionality that it could be considered an application in its own right. For example, users can sign into the Stripe docs and test API calls on their own data. Salesforce's Trailhead is another example; learners can earn badges by completing training on the site.
(There are other large documentation efforts to create in-house documentation tools, like Google's g3docs (see this talk by Riona MacNamara), and Twitter's DocBird. These are essentially docs-as-code on a large scale. )
The essentials: custom documentation apps
Main use cases | Strengths | Limitations |
---|---|---|
Adding advanced functionality to the documentation, to improve customer experience. |
|
|
Stripe docs were open sourced as Markdoc.