Core premise: The evolution of web publishing is not a story of discarding old mistakes, but of progressive refinement. Each era solved a specific operational bottleneck—from initial manual control to CMS accessibility, structured scalability, static reliability, and ultimately the control and history of Git-based Markdown workflows.
- 1. 1990s: Raw HTML (Direct control, manual tagging)
- 2. 2000s: CMS (Accessible browser editing & collaboration)
- 3. 2005: Structured XML (DocBook/DITA, content separation)
- 4. 2010: Static generators (Sphinx/reST, build-time predictability)
- 5. 2020+: Git + Markdown (Astro, version control, edge delivery)
My journey with the web spans over two decades, reflecting the evolution of publishing technologies and workflows. Here’s a technical look back at the tools, formats, and lessons learned.
Early days: HTML in Notepad and generators
Back in the late 20th century, my company tasked me with creating their first website. I learned HTML from scratch and wrote pages directly in Windows Notepad. Before moving to CMS-based approaches, I experimented with HTML generators such as Dreamweaver. While these tools allowed for visual editing, I quickly found them clumsy and difficult to use for tracking changes, especially when multiple versions or edits were involved.

The site was eventually published in a frames-based version, a common approach at the time despite usability limitations. Knowing the nitty-gritty details of HTML and HTTP requests laid the foundation for making informed technical decisions later: including using modern AI-assisted tools wisely to maximize performance and efficiency.
Phase 1 · 1990s: Raw HTML & Generators
Direct Control- Tooling
- Windows Notepad, Dreamweaver, raw HTML frames
- Problem Addressed
- Creating a first web presence; visual WYSIWYG editing
- Lesson Learned
- Low-level markup mechanics matter, but visual generators obscure diffs and change tracking
Enter CMS: SPIP and WordPress
For personal projects, I used SPIP to manage blog posts. Later, I built multiple sites (both personal and for non-profits) using WordPress. Its flexibility, plugin ecosystem, and ease of collaboration made it ideal for small teams or organizations with limited technical resources.
Phase 2 · 2000s: Content Management Systems
Collaboration- Tooling
- SPIP, WordPress, MySQL, PHP themes & plugins
- Problem Addressed
- Lowering the barrier for non-technical authors; handling multi-author publishing
- Lesson Learned
- CMSes enable teamwork, but store content in databases that hide granular change history
Structured content: DocBook and DITA
In professional settings, I shifted from general web pages to structured content. I first published DocBook content, then moved to DITA, using the DITA-OT toolkit to generate web output. Later, I used the Oxygen XML Editor to manage and publish structured content. Structured authoring separates content, presentation, and metadata, enabling more consistent, maintainable documentation.
The enduring contribution of DITA: The journey away from XML does not mean abandoning structured content. DITA trained writers in the mental discipline of information typing—isolating concepts, tasks, and references. For an in-depth exploration of keeping this model without the tooling bloat, see DITA XML to Markdown: lightweight information typing and strong information typing without the XML overhead.
Phase 3 · 2005: Structured Content & XML
Information Architecture- Tooling
- DocBook, DITA, Oxygen XML Editor, DITA Open Toolkit
- Problem Addressed
- Large-scale technical documentation consistency, reuse, and single-source publishing
- Lesson Learned
- Information typing and modularity are essential, but heavy XML pipelines impose severe friction
Static site generators and lightweight markup languages
At another company, I published documentation websites using Python Sphinx, generating static HTML from reStructuredText sources.
Currently, at Unity, I use Markdown, edited either in Visual Studio Code or Emacs, which is then rendered into HTML pages. Moving away from CMSes, using version control systems such as Subversion and later Git was critical for managing changes, enabling collaboration, and maintaining a reliable history of content. This workflow emphasizes simplicity, version control, and maintainability while giving full control over the final output.
Phase 4 · 2010: Static Generators & Docs-as-Code
Predictable Builds- Tooling
- Python Sphinx, reStructuredText, Subversion, Git, VS Code, Emacs
- Problem Addressed
- Bridging engineering workflows with documentation; replacing database CMSes with build-time generation
- Lesson Learned
- Version control provides safer collaboration, granular line-by-line diffs, and reproducible output
Version control is more than a transport pipe: Git is not merely a deployment mechanism. It provides an indelible audit trail, peer reviews via pull requests, branching for concurrent editorial projects, and instant rollback safety outside any proprietary database.
Modern web workflows: beyond CMS
When advising a non-profit considering a move from Drupal to a Symfony-based custom site, I recommended downgrading to WordPress to maximize collaboration. Later, a developer suggested a headless CMS approach with Astro + WordPress. I proposed going further: abandoning the CMS entirely and relying on Markdown + GitHub + Astro, a lightweight, modern, and fully controllable workflow. The case for managing content in plain files rather than databases lays out exactly why this choice pays off long-term.
Weighing the trade-offs: CMS vs. Git-based workflow
The transition from a CMS to Git-based files is not an absolute dogma—it is an architectural choice suited to team capabilities and operational needs:
Conventional CMS (WordPress / Drupal)
Accessible browser editing
- • Strengths: Browser forms, visual media management, zero Git learning curve for non-technical staff
- • Trade-offs: Database administration, security patch cycles, plugin debt, content buried in relational tables
- • Best fit: Distributed volunteer teams, frequent ad-hoc contributors without developer support
Git + Markdown + Astro
History, speed, and total control
- • Strengths: Transparent diffs, PR reviews, lightning-fast static builds, zero database vulnerabilities
- • Trade-offs: Requires basic Git knowledge or a dedicated form wrapper for non-technical editors
- • Best fit: Technical writers, developer docs, content developers, and agile digital publications
Modern docs-as-code architecture
The current architecture delivers pure static HTML to the edge while keeping the authoring experience ergonomic and version-controlled:
- 1. Author (Markdown files in VS Code / Emacs)
- 2. Commit & PR (GitHub branch, diff review, automated CI)
- 3. Build (Astro compiles components to static HTML)
- 4. Edge Deploy (Global CDN distribution)
- 5. Live Site (Fast, accessible, and resilient)
Lessons learned from two decades of web publishing evolution
Looking back, my web journey mirrors broader shifts across the entire technical communications and web development landscape:
1. From raw HTML to CMS
UsabilitySimplifying publishing allowed organizations to democratize web contribution, liberating non-technical teams from manual coding bottlenecks.
2. From unstructured to structured content
ScalabilitySeparating content from presentation and adopting modular information types proved indispensable for long-term consistency and reuse.
3. From dynamic databases to static sites
PerformancePre-rendering pages at build time eliminates database query overhead, server vulnerabilities, and hosting infrastructure maintenance.
4. From CMS dependence to Git workflows
SimplicityTreating documentation as code unlocks powerful peer reviews, reproducible builds, and developer alignment without CMS friction.
5. Understanding low-level mechanics matters
FoundationsGrasping HTTP requests, HTML structure, and rendering pipelines enables sharper architectural choices—and smarter, more discerning use of AI tools.
6. Version control is the critical backbone
IntegritySubversion and Git transformed change management from guessing timestamps to line-by-line traceability and safe concurrent collaboration.
Takeaways for solo content developers and small teams
These principles are not theoretical abstractions—they are the distilled outcome of two decades of navigating publishing friction, platform churn, and refactoring:
Related reading
- Version management systems — rustic but reliable — the version-control backbone of this workflow.
- Git: from file to content — moving from files to managed content.
- Integrating documentation into development — docs inside the development workflow.
- DITA XML to Markdown: lightweight information typing — how information typing survived the shift from XML to plain text.
- Manage content in files, not databases — the architectural rationale for file-backed publishing.