Comments on Proprietary HTML.

Draft 2 - November 6, 1995. Neil K. Guy


Warning.

This document is very technical and assumes you have a lot of experience in HTML and related Web design issues. If that isn't you, you don't need to read this stuff.

These guidelines are intended solely for people who are going to be building and maintaining their own Web pages. Note that we will be offering basic courses in and assistance with Web page design in the future for those IPs that want it.

Introduction.
What do I mean by "proprietary HTML"? Very simply, I'm talking about extensions to the Hypertext Markup Language that are not part of the accepted Internet Engineering Taskforce (IETF) standard. Or, to be more blunt, Netscapisms, since Netscape is generally held to be the worst (though not only) offender in this area.

The purpose of this thing is to discuss some of the issues surrounding proprietary HTML tags in the context of the Vancouver Community Network.

Netscape Extensions.
When Netscape Communications introduced its Navigator Web browser in 1994 it added a whole new set of HTML tags that were not part of the HTML standard as defined by the IETF. These features allowed Web page designers to do all kinds of visually interesting things on the page and were thus readily adopted by many people. For instance, Netscape introduced a tag called <CENTER> that allowed people to centre information on the page. Previous browsers were not able to do this.

The problems with most of the Netscape features are twofold. First, the new tags do not form part of any open standard. They were dreamt up by Netscape's programmers and just thrown in. If the Web is to grow and develop freely, it cannot be controlled by the whims of one company. It makes more sense to have it somewhat controlled by the whims of a bunch of geeks - the IETF - which is at least an open committee.

The second problem is more abstract. Netscape's add-on tags generally focus on the presentation of the information content, not the structure. HTML was intended to provide for the definition of the content and not the presentation.

Content and Presentation.
To expand on this idea, remember that there are a lot of Web browsers out there. Some are text-only, such as Lynx. Some are graphical, such as Mosaic and Netscape. But you could conceivably have a speech-only browser for visually impaired people that spoke text out loud. The point is that every person viewing a Web page will have a different experience of that page, depending on their browser and how their computer is set up and so on.

HTML was designed with this in mind. HTML specifies the properties of information, but does not specify precisely how they should appear. That task is left to the browser. A typical example is the notion of italic text.

Italic text is a common feature on many Web pages. It uses the typographical convention of slanting the type on the page or using an italic version of the font for emphasis purposes. You can make text italicized by adding the <I> tag. But there's a problem with this. Many browsers are not able to display information in italic text. Take Lynx, for instance. Lynx uses VT100 terminal emulation to display information, and VT100 doesn't support italics. Instead it usually just underlines the text. All of a sudden the term "italic" starts to lose some of its meaning. Or take speech programs. Here the word "italic" is pretty well meaningless. How do you italicize speech spoken by a sythesizer?

So what does HTML have to say about this? Well, a common answer given by opponents of so-called "physical" tags like <I> is to use a "logical" tag like <EM> instead. Unlike <I>, which specifies the physical appearance of the marked text, the emphasis or <EM> tag only specifies that the text should be emphasized somehow. Most graphical browsers italicize <EM> text. But our friendly speech synthesizer can speak <EM> text more loudly and slowly to emphasize its importance. The <EM> tag is thus more flexible since it's more general.

So?

But so what, you ask? Isn't this sounding kinda anal? I mean, it's taken for granted that <I> means to emphasize text in whatever method is appropriate for the browser, so why not use it?

Well, true enough. And that's the crux of the logical versus physical tag debate - to some extent it's something of a religious question. Many people argue that focusing on literal and inflexible definitions of what constitutes information and what constitutes presentation is a waste of time. Why not just roll up the sleeves, put together pages that look decent with most browsers and leave it at that?

But I'm not here to engage directly in this particular discussion. I think there are merits to both points of view, but to be frank my main interest is in getting information out to people. Not to get into interminable and basically unanswerable nerd arguments about what constitutes the Right Way to Do Things. My suggestions in this document are, therefore, purely pragmatic, and based upon the following notions.

The Notions

  1. Some Netscape and other proprietary extensions are useful.
    I think it's pretty clear that some of the innovations that Netscape introduced are pretty nifty. Yes, they do focus mainly on the presentation of information, but isn't that what we're about? The presentation of information? If we can present it in an attractive, flexible fashion, so much the better.

  2. Relying on Netscape extensions is a dumb idea.
    Well some of them extensions sure are useful, but Netscape is not the only browser out there. Right now they do control the largest chunk of the market by far. But that doesn't mean they will forever. And though they may control much of the market they don't control all of it. Not by far. In fact, all of the dialup users of the CommunityNet can only use Lynx. So you cannot have your information content rely on proprietary tags if you want everyone to be able to view your pages. This is the same argument we use for graphics.

  3. Agreed-on standards are a Good Thing.
    While the IETF may not be the best possible way to get things done, it is a standards-setting body for the Internet community. And HTML 3, whenever it finally gets released, will be a useful set of standards for the Web. From the point of view of a community network it's better to rely on open public standards than it is to rely on the product of a single company somewhere in the US.

    Recommendations

    So, these are my recommendations for people designing pages for the CommunityNet. Remember that they're just my suggestions. There is nothing about them that constitutes unalterable rules or anything. I just think they're a good idea, based on a bit of experience in writing stuff in HTML.

    1. Feel free to use proprietary extensions when they do not affect information content.
      If you feel that it makes your page more attractive to use a Netscape extension, (or some other proprietary extension, such as those used by Spyglass) go right ahead! Why not? Just be very very careful that doing so does not make your page break under other browsers. Or make it hard to read. There's no point in limiting your audience just because you want to support some cool Netscape feature or other, so test your pages with a variety of browsers. Especially Lynx!

    2. Use HTML 3 extensions rather than proprietary ones where possible.
      If you can accomplish the same basic effect with an HTML 3 tag as with a proprietary one, go for the standard! Admittedly, at the time of writing HTML 3 isn't frozen yet and there are very few browsers out there that support more than a fraction of HTML 3. (even Arena and Netscape 2.0b1) But more and more browsers are going to support HTML 3 in the near future. For more information on how to do this, check out the Netscape 2.0 like HTML 3.0 page.

    3. Please don't put "Netscape Enhanced" or whatever on your pages.
      A lot of people design nice pages that rely on Netscape tags, and then proudly splash the Netscape logo all over their documents. Please don't do this! For three reasons. First, Netscape Communications is plenty rich as it is and doesn't need your free advertising. Second, it makes it look like your community organization is endorsing Netscape the company, which you may or may not do. And third, it's kind of rude for those people who don't, can't or won't use Netscape. Many people have perfectly legitimate reasons for not using Navigator, so why brag to them about all the features they can't see?

    Do the CommunityNet pages use any Netscape extensions?

    The short answer is yes, they do. For the most part they are purely cosmetic extensions that should not affect the appearance or the content of the pages on non-Netscape browsers. I've tested the pages with a variety of different browsers on different platforms and have only found one problem. (explained later)

    So why use these tags? Well, basically because most people out there do use Netscape. That's a fact. So why not take advantage of this and use a few tags that pretty the pages up some? We need pages that look good with both Lynx and graphical browsers. A lot of CommunityNets that do Web stuff have really hideous pages since they're designed for Lynx users only. Well we have to face reality that we need less than hideous pages to keep peoples' attention. We are frankly competing in a market in which peoples' expectations have been raised by the nature of graphical browsers.

    Here are the naughty tags that currently sully our otherwise pristine pages.

    Purely cosmetic Netscape-only Extensions.

    1. VSPACE
      VSPACE is an attribute of the <IMG> tag that controls the amount of vertical space surrounding a graphic. We use VSPACE to add a few pixels of space between the graphic and the next line of text in a couple of places. This was used instead of a <P> or <BR> marker because adding a blank line of text would have made the pages less readable with Lynx. Basically a tradeoff when designing pages for both Lynx and Netscape.

    2. BORDER
      BORDER is another attribute of the <IMG> tag. Basically it controls the thickness of the coloured rectangular border that surrounds hot (clickable) graphics in Netscape. This was done purely for aesthetics. I think that a 1-pixel border looks less overpowering on smaller graphics than the default 2-pixel border.

    3. TYPE=SQUARE
      TYPE is an attribute of the <LI> tag used in list elements. It tells Netscape to use a little square for the bullet used in that particular list element, and is there purely for looks. (I chose it because the <LI> tag is only there for non-table-supporting browsers - see the "Known Problem" section below - and having an empty square bullet makes the wretched thing stand out less than using a regular solid black bullet.)

    Netscape-only Extensions with HTML 3.0 equivalents.

    The following tags have HTML 3.0 equivalents. The problem is that there aren't very many HTML 3.0-compliant browsers out there. In fact, at time of writing there aren't any at all, because HTML 3.0 isn't frozen. So for the time being I think we should stick with the Netscape extensions and then migrate over to the HTML 3.0 form as soon as it becomes clear that there are enough people out there who can see the HTML 3.0 code.

    This should happen fairly quickly. For instance, Netscape 2.0 is in beta, and supports the HTML 3.0 extensions mentioned here.

    1. <CENTER></CENTER>
      <CENTER> is a Netscape-only tag that centres everything that follows on the page. The HTML 3.0 equivalent tag is <DIV ALIGN=CENTER>. (note that a number of tags also support CENTER as attributes, including H1 through H6 and P.)

    2. <FONT SIZE="+1"></FONT>
      <FONT SIZE="+1"> is a Netscape-only tag that makes all the text that follows slightly larger. The HTML 3.0 equivalent tag is <BIG>.

    Known Problem.

    Finally, there is a known error in the CommunityNet HTML templates that was put there deliberately. Shocking, I know, but true. The error is in the table code for the navigational palettes that appear at the bottom of the page. The basic code looks like this:

    <TABLE BORDER=1 CELLPADDING=5 CELLSPACING=5>
        <TR ALIGN=CENTER>
        <UL>
        <TD><LI TYPE=SQUARE><A HREF="/">CommunityNet Main Page</A></TD>
        <TD><LI TYPE=SQUARE><A HREF="/foo/">Whatever</A></TD>
        <TD><LI TYPE=SQUARE><A HREF="/bar/">Something Else</A></TD>
        </UL>
        </TR>
    </TABLE>
    
    The error is in including an unordered list (UL) within a table. This is an SGML error, as the structure of a table implies that you cannot have unordered lists except as table data. Terrible, eh? I bet you feel unclean just looking at that dirty code!

    So why was it done? Well, basically it results from the tradeoffs required in order to make a page that looks good with both Lynx and modern graphical browsers. The code above results in a nice table that has each item within a rectangular frame. Looks very nice. However it also looks quite presentable on browsers that don't support tables. To such older browsers that code just presents the three items as a normal ordered list. This trick works because browsers are told to ignore any HTML code that they don't recognize. So older browsers completely ignore all the <TABLE> stuff.

    This code is therefore compatible with most browsers out there, despite the error. The error is actually a somewhat technical one involving SGML rules and does not appear to bother any browsers that I've tested this with. The only exception has been X-Mosaic, but that's not because of this specific error - it's because X-Mosaic is a buggy and flaky piece of code that can't handle any tables properly - even perfectly legal ones.

    So that's why this error is here. It's a very obscure technical error that does not appear to cause any problems with any browser, yet permits the code to be viewed nicely with both modern browsers that support tables and older ones that don't. If it presents a problem in the future we can always change it.

    Note that the BORDER, CELLPADDING and CELLSPACING attributes are now part of HTML 3.0 and are thus no longer purely Netscape-only tags.

    What are the proprietary tags?

    Well this, of course, is a very good point! What is proprietary and what isn't? Well I haven't found an easily accessible and understandable definitive list of tags yet, though I'm sure someone out there has compiled one.

    You can check out the official DTD (document type description) for HTML 3, but it's pretty liberally laced with tech terms and extremely hard to understand. Still, if the tag you're looking for isn't listed there you can safely assume that it's not part of the Official HTML 3 Standard. You can also check out Netscape's online release notes for the various versions of Netscape Navigator. Their notes list all the new tags that they support. Presumably Spyglass and the other browser makers have similar lists.

    The easiest way is probably to ask some self-described HTML expert and see if he or she knows!


    Copyright © 1995 the Vancouver Community Network. Please do not copy this document or any portion of it without permission from the VCN.


  4. CommunityNet Main Page
  5. VCN Design Guides
  6. Search