Home / A web journey: from HTML to Git-based Markdown workflows

A web journey: from HTML to Git-based Markdown workflows

View as Markdown
On this page

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. 1. 1990s: Raw HTML (Direct control, manual tagging)
  2. 2. 2000s: CMS (Accessible browser editing & collaboration)
  3. 3. 2005: Structured XML (DocBook/DITA, content separation)
  4. 4. 2010: Static generators (Sphinx/reST, build-time predictability)
  5. 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.

Web design sketch
Early web development: starting with hand-crafted markup, page layout sketches, and direct file-level control.

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.

Web Publishing Journey Timeline1990sHTML in Notepad /DreamweaverDirect control,manual markup2000sCMS SPIP /WordPressBrowser-basedediting,collaboration2005Structured contentDocBook / DITATopic typing,separation ofcontent &presentation2010Static sitegenerators Sphinx /reSTPredictable builds,documentation ascode2020Modern workflowsAstro + GitHubLightweightMarkdown, Githistory, edgedeliveryWeb Publishing Journey: From HTML to Git-based Markdown
Figure 1 — Evolution of web publishing architecture: timeline of milestones from static HTML to Git-based workflows.

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. 1. Author (Markdown files in VS Code / Emacs)
  2. 2. Commit & PR (GitHub branch, diff review, automated CI)
  3. 3. Build (Astro compiles components to static HTML)
  4. 4. Edge Deploy (Global CDN distribution)
  5. 5. Live Site (Fast, accessible, and resilient)
Docs-as-Code Modern Architecture Diagram

Git Push

Peer Review & CI

Merge / Webhook

Static HTML / CSS

Serve

Markdown
Content

GitHub
(PR & Review)

Astro
(Static Build)

Edge CDN
(Global Cache)

Fast Web
Docs

Figure 2 — Modern docs-as-code publishing pipeline: Markdown authoring, version control, automated CI, and global edge delivery.

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

Usability

Simplifying publishing allowed organizations to democratize web contribution, liberating non-technical teams from manual coding bottlenecks.

2. From unstructured to structured content

Scalability

Separating content from presentation and adopting modular information types proved indispensable for long-term consistency and reuse.

3. From dynamic databases to static sites

Performance

Pre-rendering pages at build time eliminates database query overhead, server vulnerabilities, and hosting infrastructure maintenance.

4. From CMS dependence to Git workflows

Simplicity

Treating documentation as code unlocks powerful peer reviews, reproducible builds, and developer alignment without CMS friction.

5. Understanding low-level mechanics matters

Foundations

Grasping 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

Integrity

Subversion 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:


External sources

Hero image: “Scribers Lane SINC from Slade Lane back to the stepping stones — River Cole” by Elliott Brown, licensed under CC BY-NC-SA 2.0.

Follow Olivier Carrère on LinkedIn

Continuous writing on docs-as-code, DITA XML, YAML, and AI-assisted documentation pipelines.

Follow ↗