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.Introduction.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.
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.Netscape Extensions.The purpose of this thing is to discuss some of the issues surrounding proprietary HTML tags in the context of the Vancouver Community Network.
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.Content and Presentation.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.
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.So?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.
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?The NotionsWell, 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.
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.
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.
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.
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.
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.
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.
<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>.
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.