Blog: 

Jul
Jun
Apr
Mar
How Robustness Failed Us
Feb
Jan 2008
You might have noticed that not all websites work perfectly. On different computers, with
different browsers, under different phases of the moon and varying meteorological conditions,
your favorite celebrity gossip site grows hideously misshapen. This problem ranges from mild
annoyance to unbridled terror depending on whether or not the problem occurs in close proximity
to your credit card number. It’s become a fact of life: websites occasionally sputter and
crash. Ironically, virtually every failure arises because other parts of the web were built too
well.
If you see this in your browser, don’t have your eyes checked. Just shake your head.
The Uncorrected Foreigner
We have all listened to earnest language students struggle to assemble phrases and speak
clearly. Foreign accents with dropped words are so commonplace they form a whole genre of
humor. Although we sometimes find their efforts amusing, we always find the foreigner’s
linguistic bravery admirable. We mentally repair mispronounced terms and re-conjugate incorrect
verbs. In acknowledgement of their tremendous intellectual drive to learn our language, we
allow mistakes. We are forgiving in what we accept.
Similarly, people speak more carefully to language students than anyone else. Out of deference
and respect, we painstakingly enunciate each syllable. We avoid idioms and unusual forms. We watch
their eyes intently to ensure every one of our foreign words crosses into their understanding.
In acknowledgement of their tremendous intellectual drive to learn our language, we speak simply.
We are conscientious in what we transmit.
Postel’s Law
The way we talk to people who are still learning our language is an example of
the Robustness Principle, or Postel’s Law: “Be conservative in
what you do, be liberal in what you accept from others.’ Adhering to
this proverb makes us gracious and socially conscious people, and enables
us to instantly communicate with language students. We learn tolerance and forgiveness and are
careful not to offend. We make parents and kindergarten teachers proud.
The problem, however, is that following Postel’s law is about the worst way to help foreign
language students learn the language. They need to be corrected when they misspeak, not just
encouraged for trying. They want to hear people conversing naturally, not in some stilted,
grammatically perfect form designed to make the native speaker feel ambassadorial. Though you
try, you are not helping. Speak normally, and speak up when they fail.
Technology is the worst offender of Postel’s law. For example, if you want a
paragraph in a web page with the last few words emphasized, you author it in the native language
of the web browser. That language is the hypertext markup language or HTML. Here
is a sample paragraph, with such emphasis, written out in precisely correct HTML grammar:
<p>See Spot run. See Jack yawn. Is it
just me, or is Jack <em>really
bored?</em></p>
But a student new to HTML could make mistakes. They might assemble something similar but
not identical:
<p !#/zq~*v>See Spot run. See Jack yawn.
Is it just me, or is Jack <em>really
bored?</p></em>
The web browser, which reads fluent HTML, can silently ignore these minor differences. What’s
a few extra characters at the beginning, or the reversing of </em> and
</p> at the end?
Like the native listener tolerating a foreign speaker, the web browser magnanimously accepts incorrect language. The student
never learns.
You can probably predict the problem: forgiving invalid language does not scale. The browser
can guess accurately in simple situations, but when web pages contain hundreds of thousands of
characters, filling in gaps in the translation becomes an impossible task. When no one
insists that language learners correct their mistakes, a whole ecosystem develops around forgiveness.
Students are encouraged to cut and paste snippets of text without real understanding, which is
kind of like trying to assemble a legal argument in a foreign language with only a phrase book.
Toolsets arise, such as "web page generator" software, that leverage the forgiving nature of
browsers to free designers from having to learn the underlying language. The result of robustness,
paradoxically, is fragility. When one party brazenly accepts anything without complaint, others take
advantage of the generosity. Web browsers are suckers for people who write bad code.
The Wrong Solution Anyway
This might seem like a panacea: just tell browsers to toughen up and refuse to
accept HTML that isn’t perfect, and the web will correct
itself. That’s an unworkable solution, considering probably 99% or more
of all websites contain invalid code, but even if they were all corrected in the Great
Internet HTML Cleanup of 2011, we would still have problems. That’s
because HTML is absolutely the wrong language for creating the Web as we
know it. It’s a screwdriver when we need a hammer,
and we’ve made an awful mess of the handle beating in nails.
The problem of robustness goes deeper, and it has ruined the web
almost beyond repair. The hypertext markup language was a technology
designed to meet the goals of its namesake: marking up blocks of
text so they could be interconnected through hyperlinks. It was
never intended for complex layouts, visually stunning designs, interactive
menus, games, movies, or online shopping. You can't really get
there from here, and many of the problems you see are the result
of trying. Today’s web is an awful perversion of HTML,
a sort of Postel’s law in reverse. The language is
conservative in what it is designed to handle, but web designers are
liberal in what they assemble. Sadly, the culture finds admission of
this fault to be heresy. You will rarely hear someone say, “No, that is not
possible on the web.”
Can I Have My Silver Lining Please?
There’s a new browser coming to town. It will be far better
at guessing what web developers meant by their bad code. It will
interpret the latest standards from the World Wide Web Consortium more
accurately. It will bitterly contemplate what to do about all of
the old websites in existence that were designed to leverage the
weird quirks of its ancestors. I happen to be talking about Internet
Explorer 8 from Microsoft, but switch the vendor and the version number
and this conversation could be backdated to almost any point in
recent history. New browsers will help, but not much.
There’s more promise in frameworks for designing Internet-based
systems that don’t depend on the legacy of HTML to achieve things for
which HTML was never intended. These are systems such as
Microsoft Silverlight, the
Adobe Integrated Runtime, and to a lesser extent,
Google Gears and
Mozilla Prism.
Thankfully, these offerings are unforgiving toward developers. You won’t
be able to get away with ambiguous code, and as a result, end users
will suffer far less from browsers scrambling to understand your
mumblings. New technologies may be the answer.
In the meantime, you can help. Empower your developers to meet web
standards. Just because browsers accept sloppy HTML does not give you free license
to produce bad code. Be conscious of Postel’s law in your software
applications, your business, and your personal interactions. Don't emulate
browsers—don't perform heroics to silently correct mistakes. When you
receive less than you expect, provide feedback. When you offer what you
know may be incomplete, ask for help to improve. Work Postel’s law
to everyone's advantage, not just your own. Be robust in what you
give and in what you receive.
Further Reading:
Would you like to leave a comment?
Read this.
###