Get AI summaries of any video or article — Sign up free
Write the Docs Portland 2017: Treating Documentation like Code: a Practical Account by Jodie Putrino thumbnail

Write the Docs Portland 2017: Treating Documentation like Code: a Practical Account by Jodie Putrino

Write the Docs·
5 min read

Based on Write the Docs's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Documentation is treated as release-critical engineering work by placing it in the same repo and delivery pipeline as product code.

Briefing

Treating documentation like code matters because it keeps release-critical instructions synchronized with product development—so teams don’t scramble at the last minute when engineers ship but users can’t figure out how to use what they just received. Jodie Putrino, a senior technical writer at F5 Networks, describes a workflow built around the idea that docs should live in the same repository as the code, move through the same review gates, and deploy through continuous delivery. That approach prevents the common failure mode where “the product is ready” while documentation lags behind, forcing frantic fixes and delayed clarity.

The practical payoff goes beyond timing. Building docs during development keeps subject-matter experts engaged while their knowledge is fresh, rather than months later when they’ve moved on. It also ensures the instructions stay tightly coupled to the product features they describe, reducing drift between what’s implemented and what’s written. Putrino frames the work as a shift from documentation being an afterthought to documentation being part of the development loop.

Getting there wasn’t straightforward at F5. Putrino joined with limited software tooling experience and found that public resources often discussed the concept in theory but didn’t provide concrete “how-to” guidance—what tools to use, how to test, and where to publish. The opportunity came while planning brand-new products, which allowed the team to design a documentation system from scratch rather than retrofit an existing one.

The resulting roadmap centers on four operational choices: tool selection, automation, collaboration, and versioning. For publishing, the team chose Sphinx (because the work involved Python) and initially used Read the Docs before moving to AWS S3 for hosting due to stringent security requirements. Automation is treated as essential: tests and deployment run automatically, while humans focus on content quality and review. Collaboration is formalized through pull requests and code-review-style workflows, with developers and technical writers sharing responsibility based on expertise.

The workflow is built around Git-based development and CI/CD. Changes are written in either Markdown for simpler projects or reStructuredText (rst) for the full Sphinx feature set. Pull requests trigger automated test runs, and reviewers are assigned based on who knows the feature best—sometimes a developer, sometimes a support-focused reviewer. Testing happens inside an internally built Docker container that packages all documentation dependencies, so contributors don’t need to install toolchains or worry about conflicts. The CI pipeline runs Sphinx commands such as building HTML, checking links, and using tools like a style/grammar checker; failing doc tests block merges.

Deployment uses Travis CI to publish to an S3-hosted website called Cloud Docs at f5.com. Each project deploys only to its designated S3 location for security. The team deploys from version branches rather than tags, enabling quick doc fixes without waiting for long release cycles. Finally, the docs experience is organized by audience: product documentation for installation and command-line details, and solution documentation that provides task-oriented context for how multiple products work together—especially in relation to F5’s flagship BIG-IP. Putrino closes by emphasizing that users don’t care which tools or publication mechanisms power the site; they care that information is findable, relevant, and ready when they need it.

Cornell Notes

Jodie Putrino describes an end-to-end workflow that treats documentation like code at F5 Networks: docs sit alongside code, changes go through pull requests and reviews, and publishing happens via continuous delivery. The system uses Sphinx for documentation, Git-based collaboration, and CI pipelines that run automated doc tests (HTML build, link checking, and style/grammar checks) inside a Docker container to keep environments consistent. Deployments land in an AWS S3-hosted site called Cloud Docs at f5.com, with security controls that restrict each project to its own S3 path. Versioning is handled with release-aligned doc updates for product docs and separate solution-doc versioning, enabling timely fixes without waiting for long release cycles. The result is documentation that stays in lockstep with product changes and reduces last-minute release scramble.

What does “treat documentation like code” mean in operational terms, not slogans?

It means documentation lives in the same repository as the code and follows the same development lifecycle: code-review-style pull requests, continuous delivery, and automated gates. Putrino highlights three concrete mechanisms: (1) docs are versioned and reviewed like code, (2) doc tests run automatically and can block merges, and (3) deployment is automated to a shared hosting destination so docs ship in sync with product changes.

Why did the team move from Read the Docs to AWS S3?

They started with Read the Docs while building Sphinx-based documentation, but F5’s security requirements later prohibited that approach. The team switched to AWS S3 as the static site host, and the CI deploy step publishes content into an S3 bucket with strict per-project path permissions.

How does the workflow keep doc testing consistent across contributors?

Testing runs inside an internally built Docker container image that already includes the documentation dependencies. Contributors don’t need to install toolchains or manage dependency conflicts; they just run the doc test scripts (e.g., Sphinx build, link checking, and style/grammar checks) and CI enforces the same environment for everyone.

What happens during writing, review, testing, and deployment?

Writing uses Markdown for simpler projects and reStructuredText (rst) when the full Sphinx feature set is needed. Review happens via pull requests with appropriate reviewers assigned (developers, support-focused reviewers, or the technical writer). Testing runs in CI with Sphinx commands like make HTML and link checking, plus grammar/style checks; failing doc tests block merges. Deployment uses Travis CI to authenticate to AWS and publish built content to the correct S3 location, only from allowed version branches.

How does versioning avoid tying every doc change to a single product release?

Product documentation versioning follows product versioning, while solution documentation has its own versioning scheme. The team makes minor doc version releases when new product releases arrive, but solution docs don’t have to match product release numbers—helping avoid a combinatorial explosion across many interconnected products.

What user-facing goal drives the structure of the documentation sets?

The docs are organized around audience needs and task completion. Product documentation targets developers with installation and command-line/configuration details. Solution documentation is goal-oriented and provides context for how multiple products work together—especially in relation to BIG-IP—because customers often need integration guidance rather than isolated feature references.

Review Questions

  1. How do pull requests and automated doc tests change the incentives for keeping documentation current during product development?
  2. Why does containerized testing matter for documentation workflows, and what specific Sphinx checks are mentioned?
  3. What deployment and versioning choices help teams ship doc fixes quickly without waiting for long release cycles?

Key Points

  1. 1

    Documentation is treated as release-critical engineering work by placing it in the same repo and delivery pipeline as product code.

  2. 2

    Keeping docs in lockstep with development reduces last-minute release scramble when users need instructions immediately.

  3. 3

    Sphinx plus a Git-based pull request workflow enables consistent writing, review, and automated quality gates.

  4. 4

    Running doc tests inside a Docker container standardizes dependencies and prevents environment drift across contributors.

  5. 5

    CI blocks merges when documentation checks fail, so broken links or style/grammar issues don’t reach published sites.

  6. 6

    Automated deployment to an AWS S3-hosted site (Cloud Docs at f5.com) uses per-project path restrictions for security.

  7. 7

    Versioning separates product-doc alignment from solution-doc versioning to avoid forcing every doc update to match product release numbers.

Highlights

The core mechanism is continuous delivery for docs: pull requests, automated doc tests, and automated deployment to a shared hosting site so instructions ship with the product.
Containerized documentation testing removes “works on my machine” problems by packaging dependencies into a Docker image and running Sphinx checks inside it.
Deployments come from version branches (not tags), letting teams fix doc issues quickly without waiting for a long release cadence.
Solution documentation is versioned independently from product documentation because it must describe how multiple products work together in context, not just one release at a time.

Topics

  • Treating Documentation Like Code
  • Sphinx Documentation
  • CI/CD for Docs
  • Dockerized Doc Testing
  • AWS S3 Publishing
  • Versioning Strategy

Mentioned

  • F5 Networks
  • Read the Docs
  • AWS
  • Travis CI
  • Docker
  • BIG-IP
  • Jodie Putrino
  • Rick Salsa
  • Mark Baker
  • CI
  • S3
  • BIG-IP