Browser software may ignore this tag
Design with purpose
An illustration from Don Quixote; a print by Gustave Doré

Thu, 24 Jun 2021

The resilient web

Tim Berners-Lee, the inventor of the worldwide web, authored the language that takes care of marking up the content you can read on a website. That language is HTML; it uses tags to tell a browser how to present a piece of content. <H1> indicates text should be presented as a heading, for example.

In his documentation for web browsers he wrote about a certain tag:

Browser software may ignore this tag.

This concerned an HTML tag that was only relevant to a specific system. Browsers running on other systems should still present the content in the document, but ignore the tag.

Berners-Lee advised this approach for all tags. Whenever a browser encounters a tag it does not understand, it should not halt and report an error, but simply ignore the tag and keep showing the content.

This was fundamental to the growth of the web. It meant browsers would always display the content of a webpage, regardless of HTML errors in the webpage. Every browser, no matter how old it is, or how exotic the device it is running on, is able to show its user what’s on a webpage.

It also meant browsers could experiment and innovate with tags, because "whenever a new element is introduced to HTML, we know exactly how older browsers will treat it; they will ignore the tags and display the content." (source, my emphasis).

Had this gone any differently, the web would not have become what it is today. Information would never have been so available were it not for this permissive approach to unknown tags.

Resilience by embracing the unknown

Image any other team designing a mark-up language and building the first browser. My bet is they'd have the browser raise errors and complain about unknown tags. It's our default way of thinking about such things.

But that way of working would completely defy the idea of the web: sharing information. A browser's purpose is to display content. That is more important than not understanding a tag.

In almost everything we undertake, we imagine and plan for the unforeseeable. But to focus on the unforeseeable means to lose sight of the overall purpose. That keeps us from unlocking the full potential of whatever we're building.

We should not let our products, organisations and systems get distracted from their purpose by trying to predict the unknown. Just like browsers route around unknown tags, we should route around unforeseeable events when they appear. Trying to contain the unforeseeable will only make our designs frail.

Purpose-driven architecture is what makes a system resilient. Trust the purpose of what you're building. Don't trust your ability to predict the unforeseeable.