"Navigator 4.0 supports several new features, including absolute positioning, layering, and style sheets." -- Paraphrased from the Netscape Communicator announcement page

The Death of HTML?

Once upon a time, there was a fairly simple text formatting language called HyperText Markup Language, or HTML. This is, in fact, the language used to create pages on the World Wide Web. The premise behind HTML was pretty simple: not all computers can do exactly the same things. Some have graphical displays, some don't; those with graphical displays often have very different characteristics. So rather than say anything that implied anything about the particular computer or browser, HTML was designed to be portable across all platforms. The same chunk of text would have the same functional output on all displays.

This was a good idea, in principle. For a while, it even worked. The downside was that, well, every page looks like this one:

<HTML>
  <HEAD>
    <TITLE>The Death of HTML?</TITLE>
  </HEAD>
  <BODY>
    <H1>The Death of HTML?</H1>
    <P>
      You can type some text here.
    </P>
  </BODY>
</HTML>

Even within this, though, there were some guarantees. Any text that got placed between <H1>...</H1> tags would always be a "first level header," no matter what that meant. And text like this would display on any browser; it didn't matter what "plug-ins" or "applets" you had floating around on your computer.

This was (and still is) a very important characteristic of the World-Wide Web. Consider, for a moment, Netscape's <FONT> tag. It's most commonly used now to specify a font size, such as <FONT SIZE=+1> to make the text "one size" larger. But what if the user could completely attempt to specify a font? Consider this tag, to specify 12-point Helvetica text:

<FONT SIZE=12 WINFACE="Arial" MACFACE="Helvetica" WEIGHT="normal"
  SLANT="upright" ENCODING="ISO-8859-1"
  XFACE="-*-helvetica-medium-r-*-*-*-120-*-*-*-*-iso8859-1">

It'd be a nightmare, not least because you would need one of each type of computer to properly test out your page. Windows demands even more details in the internal font structure; should those be specified? What about X-Windows fonts set for a specific display size? There's simply no way this type of thing could work without adopting either one specific standard (for example, PostScript fonts, requiring in turn a PostScript driver on every computer with a browser) or ignoring the problem. HTML uses the latter approach: it is, in fact, impossible to attempt to specify a specific typeface under HTML.

For a while, the world tried to live up to this standard. There were only a few browsers: Mosaic, Lynx, and, after not too long, Netscape. A lot of people liked Netscape, so much so that people started to recognize that pretty much everybody would be using Netscape before too long. Netscape, in turn, realized that it needed to make money, and it would never make money unless it released a new product. Updates to the Netscape Navigator eventually came out, bearing their own non-standard extensions to HTML. Things like the <FONT> tag and JavaScript, things that simply didn't exist in HTML before, became standard practice virtually at the whim of Netscape.

Have you ever seen the message, "Cannot find a plugin for the MIME type: audio/x-midi"? I have. Altogether too many times. Many HTML authors assume that "I can do (foo) with this browser on this machine, therefore it will work with any browser on any machine." If they used pure HTML, this would indeed be the case. With Microsoft's Internet Explorer and Netscape Navigator adopting each other's standards, this is tending more to be the case. But some basic facts still remain: not everyone uses IE or Navigator, not everyone runs the MacOS or some version of Windows, not everyone even has a graphical display. This latter case is starting to be a rarity now, but the first two issues are extremely valid and important concerns. Using a given plug-in may make your web page "cooler," but unless there's a Mac 68K, Mac PPC, Win3.1, Win95, Linux, SCO, BSD, SunOS, SGI, HP/UX, ... binary version of that plug-in available, you're alienating people. This against what HTML stands for. This is bad.

These scourges of non-portable web pages are being made even worse by the proliferation of "WYSIWYG" HTML editors. This is an oxymoron in the purest sense. Just because your page looks good on your screen doesn't mean it will on mine. Lots of little "things" come up in the process. I've seen several pages created with Netscape Navigator Gold where the author probably said, "oh, this is too small, let's make it larger." So the entire document is enclosed in <FONT SIZE=+n> tags, where n is not zero. So the thing looks a "decent" size on your screen and absolutely huge on mine.

The best test of the portability of your web page is to feed it through a text-based browser, such as Lynx. Just for fun, let's throw in an APO crest and see what happens. The relevant HTML code looks like:

This is the crest of Alpha Phi Omega.<IMG SRC="apopin1.gif">

You see:

This is the crest of Alpha Phi Omega. [crest image]

A Lynx user would see:

This is the crest of Alpha Phi Omega.[IMAGE]

Ugly? Yes. But often users don't have a choice but to use Lynx or a similar browser. There are some things you can do to be a Lynx-happy, Un*x-happy, every-browser-happy HTML author:

HTML is not a page description language, like PostScript; it is a markup language, one that says "this is some plain text where these parts should look pretty." It shouldn't be used to create things that will only work on your computer with your particular software; instead, your HTML documents should aim to be readable and even attractive to everybody on the Internet.


Return to David's home page, or go to the index; contact dmaze@mit.edu

Valid HTML 4.0! Best viewed with any browser