Consulting
Musings
Bio + Résumé Contact
Home >> Musings >> Blog >> How Robustness Failed Us

Blog:

How Robustness Failed Us
Posted 21-Mar-2008 by Robby Slaughter (@robbyslaughter)

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.

Browser Rendering Error
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.

###

Blog: Turning Left Against Traffic
Current Project Email List
signup@right.here
Low Volume, Spam Free