Skip to content

About Olivier Carrère

Senior technical writer specializing in developer documentation, docs-as-code, and DITA structured authoring: background, approach, and how this site is built.

, 4 min read

View as Markdown

I write documentation for software products and the engineering teams that build them. This site is my technical writing practice: a practical guide to designing, writing, maintaining, and publishing technical documentation, based on my methods, projects, and experience. I maintain it as a Docs-as-codeTreating documentation like source code: text-based formats, version control, code review, and CI/CD, rather than a separate publishing process.View in glossary → project. My professional profile ↗ summarizes my expertise and selected work, and publishes my articles.

  • Software product documentation. I wrote the NuFirewall documentation in DITA XMLA structured, modular XML authoring architecture built around the concept/task/reference typology and content reuse via conrefs and ditamaps.View in glossary →; the press cited it as a notable strength of the product.
  • Structured authoringWriting content whose markup encodes meaning (this is a warning, this is a step) rather than just visual appearance — enabling automated processing, reuse, and consistency checks that unstructured formats can't support.View in glossary →. I’ve used DITA XML daily on multilingual projects: TopicThe smallest autonomous, titled unit of information in DITA XML, typed as concept, task, or reference and assembled into documents via ditamaps.View in glossary → typing, Content reuseWriting a piece of information once and using it in several places or deliverables instead of copying it, so that a correction made once applies everywhere. Conrefs, conditional text, and single-sourcing are ways to achieve it.View in glossary → with ConrefA DITA XML mechanism for reusing a block of content by reference: the content of a target node is replaced by the content of a source node at compile time.View in glossary →, Conditional textContent marked as applying only to a given audience, product version, or output, so that one source can be filtered at build time into different deliverables. DITA XML implements it with ditaval files; template engines such as Jinja do the same for text formats.View in glossary →, and translation-ready sources.
  • Docs-as-code. This site has been written, versioned, and published from Git since 2014, through several Source formatThe format content is authored in, as distinct from the target format it's published to — the recipe versus the dish.View in glossary → and toolchains.
  • Translation. I’m a translation school graduate with several years of technical translation experience, which shapes how I structure content for localization.

How I approach documentation in engineering teams

Section titled “How I approach documentation in engineering teams”

Flexible and reliable solutions free your information from siloed repositories where it is imprisoned and underutilized. Move beyond MS Word or FrameMaker to shift from documentation maintenance to managing the lifecycle of Modular documentationContent built from small, reusable, standalone units (topics or modules) assembled on demand, rather than authored as monolithic documents.View in glossary → projects.

Integrating documentation into development processes sets out what this requires: documentation that ships with the product, follows the same life cycles and quality control, with no vendor lock-in, free publishing chains, and fully automated layout.

The Expertise page links each area to the articles that demonstrate it:

My current Senior Technical Writer contract at Unity ends on October 1, 2026. I am open to new opportunities from October 2026.

This part is the site’s colophon. The site history traces how this body of documentation moved from WordPress to Sphinx and then to Astro, and what happened to each page along the way.

This site deals with technical writing processes and formats, so its history and Git branches are as relevant as its content.

It covers the following formats, tools, and tasks: reStructuredTextA plain-text markup language from the Python ecosystem, richer than Markdown (directives, roles, cross-references), and the native source format of the Sphinx documentation generator.View in glossary →, DITA XML, Bash scripts, awk, sed, regular expressions, Python, Version controlRecording every change to a set of files so that any earlier state can be restored, changes can be compared, and several people can work in parallel. Git is the most widely used version-control system; docs-as-code keeps documentation under version control next to the product code.View in glossary →, Git, compilation, Makefile, Ant, XSLT (XSL Transformations)A language for transforming XML documents into other XML, HTML, or text documents. XML publishing chains such as the DITA Open Toolkit use XSLT stylesheets to produce HTML, or XSL-FO for PDF output.View in glossary →, layout, HTML, CSS, PDF, LaTeX, XSL-FOA stylesheet language for transforming and laying out XML content for print/PDF output, commonly paired with DITA XML publishing pipelines.View in glossary →.

Today, the site is written in MDX and built with Astro and Starlight. GitHub Actions builds it on every push and Pull requestA request to merge a branch's changes into the main line, presented as a reviewable set of differences: reviewers comment, automated checks run, and approval is recorded before publication. GitLab calls it a merge request.View in glossary →, a test suite checks its content and API, and it is published in English and French. The same sources also feed a machine-readable API and a grounded documentation assistant.

The stack this site is built on todayLayered stack of the technologies this documentation site currently runs on, from the bottom up: Git and GitHub for version control; MDX and TypeScript for content and code; Astro 7 with Starlight as the site framework; CSS custom properties for styling; the Node.js test runner and GitHub Actions for checks on every push; Vercel for build and hosting; and HTML, Markdown and llms.txt as published formats.This site todayPublished formatsHTML · Markdown · llms.txtBuild & hostingVercelChecksNode.js test runner · GitHub ActionsStylingCSS custom propertiesSite frameworkAstro 7 · StarlightContent & codeMDX · TypeScriptVersion controlGit · GitHub

The stack this site is built on today

This site’s sources are managed under Git

Section titled “This site’s sources are managed under Git”

This site was initially developed under WordPress. The inability to make cross-cutting changes or to have precise tracking of the content lifecycle under this CMS led to a migration to the lightweight markup format reStructuredText.

Documentation life-cycle management platformsTwo documentation platforms shown as parallel stacks of the same seven layers, each row pairing an open-source tool with its partially open-source counterpart. From the operating system up: Linux and Windows; Git with Bugzilla and Componize/DocZone; reStructuredText and DITA XML; Python Sphinx and the DITA Open Toolkit; Make, Bash and sed against Ant; CSS, LaTeX, Inkscape and Emacs against CSS, XSLT, XSL-FO, Illustrator and XMetaL; and, as output, PDF, HTML and ePUB against PDF and HTML.Open-source toolchainPDF · HTML · ePUB, etc.CSS · LaTeX · Inkscape · EmacsMake · Bash · sedPython SphinxreStructuredTextGit · BugzillaLinuxPartially open-source toolchainPDF · HTML, etc.CSS · XSLT · XSL-FO · Illustrator · XMetaLAntDITA Open ToolkitDITA XMLComponize/DocZoneWindows

Documentation life-cycle management platforms

All versions of this site are managed under the decentralized version control software Git. Content, structure, or layout changes can now be:

  • grouped into coherent batches,
  • linked to a ticket in an issue tracker such as Bugzilla or Jira,
  • validated by peers,
  • shared between different versions of the documentation project,
  • undone in a single operation, etc.

Version 1.1 of this site was available in three source formats, with different levels of features and complexity.

Feature and complexity levels of text formatsQuadrant chart plotting reStructuredText, DocBook, and DITA XML by complexity and features. reStructuredText is low on both axes. DocBook is more complex but still limited in features. DITA XML is both complex and feature-rich.Simple, feature-richComplex, feature-richSimple, limited featuresComplex, limited featuresLow complexityHigh complexityLow featuresHigh featuresreStructuredTextDocBookDITA XML

Feature and complexity levels of text formats

reStructuredText
reStructuredText is a lightweight wiki- or Markdown-style markup language that, combined with the Sphinx documentation generator, offers a good level of features.
DITA XML
DITA XML is a complex, semantic, modular XML document architecture that delivers significant productivity gains through extensive content reuse.
DocBook
DocBookA semantic XML markup language for technical documentation, organized in books, chapters, and sections rather than typed topics. It predates DITA XML and is the usual point of comparison when choosing a structured format.View in glossary → is a semantic XML markup language whose feature-to-complexity ratio is today of limited interest.

The Sphinx version compiled to the following formats:

  • PDF,
  • EPUB,
  • HTML.

These different versions were generated from exactly the same sources. They present slight variations, however, implemented through a conditional text mechanism. For example, the following term varies according to the Target formatThe format a reader actually consumes — PDF, HTML, compiled help — generated from the source format.View in glossary →:

Target formatTerm
PDFdocument
EPUBe-book
HTMLsite