The World Wide Web is an amazing collection of distributed information resources. However, it seems more and more common that people are not designing their WWW sites with any forethought.
There are a number of excellent sites out there on designing good web sites. These basically all suggest following the W3C standards.
I certainly am not as good at design as I'd like. But I thought I'd list a few guidelines that I think are important to follow.
Overall note to anyone working on content: make it accessable via the standards published at the W3C site.
The W3C Validator has a useful tip: Cool URIs don't change!
Links between information resources are the lifeblood of the web. Yet it seems that many designers don't seem to realize the importance of URIs that will last a long time. When an external site links to another one there is an implicit contract that the destination will exist. Changing technologies and site layout methodologies should not break old links.
One mistake that is very common is to publish resources on your site which are technology dependent. This happens frequently as people use a certain technology to publish content. Take for instance the use of PHP, JSP, or ASP. Many people publish content at a link to pages such as http://www.example.org/news.php
. This type of link will fail if the site switches to a new content format such as JSP or ASP.
A much better addressing scheme is to use URIs which are less likely to change. The above news link could easily be changed to http://www.example.org/news/
. Most web servers can be configured to have directory-like URIs default to index.???
. This allows an easy change to index.php
, index.html
, or whatever is appropriate.
Another option is to allow users to specify the format they desire based on URI. So /news/
auto-detects based on browser request. But asking for /news/index.html
or /news/index.xml
would explicitly return the appropraite content. However, this also implies a long term contract with content consumers.
On my site I use the technique of adding appropriate index.???
links and refer people to the directories for content. This has proven worthwhile at least once. I switched from shtml to PHP. This changed all the filenames from index.shtml to index.php. Yet, no local or global link changes were required.
Do I even need to explain the problem with database based URIs? Random digits and characters and parameters tacked onto URIs... sigh. Some of them are well designed enough that they may last a few years. But switching publishing system to something new will probably void all the old random URIs. Would be nice if they at least tried to encode something reasonable into the URI like the data.
One issue that can be very difficult to deal with is resources you know will move. For instance, you intend to change ISPs and know your URIs will move. Or your home ISP blocks port 80 and you run a web server of an alternate port. There is little you can do about this but attempt to make the URIs as static as possible with the exception of the host, port, and perhaps top level location.
Accessability is not just a buzz word, it is very important. Content is why people use the Internet. The presentation of this content is also important. However, if the presentation technology makes the content inaccessable then your content is irrelevent.
I highly recommend reading and following the advice found at Dive Into Accessibility.
My basic gripes about too many sites to count:
Yeah, you can do cool stuff with Java and Flash and other strange content formats. One thing not to do with it is assume people use it. Sites that have homepage screens in Flash or Java and expect users to click on a Enter
button are not very considerate.
A much better alternative is to default to using content specified by W3C standard formats. And at least default to common ones.
Many many sites attempt to do browser detection (often via JavaScript / ECMA Script) to determine the content they will provide. No, I don't use Netscape or IE. Yes, I expect something to be returned to my browser.
Yes, I expect content to render properly even if my browser window is not 640x480, 800x600, 1024x768, 32000x20000, etc. Try to design sites to work at any (resonable) browser width.
Try really hard to not specify fonts and element sizes in absolute pixel sizes. Use relative sizes whereever possible. It is fairly annoying to try and read fonts that default to some tiny pixel size. This will only get worse in the future. Imagine if a new technology comes out and people suddenly have 600 dpi display screens. Fonts that are hardcoded 10 pixels high will be quite unreadably small.
Whenever possible, use standard style specifications. CSS is a good thing! It would also be nice to leave as much to the user as possible. If you don't need to force a white background on the user then please don't.
A slight aside: I prefer to read WWW content with a classic gray background with black text. Many people think a white background is better but I disagree. Think of it in a energy context. A computer display is intended to transmit maximal information to your eyes. If you use dark text on a light background then the monitor is using its maximal intensity output to transmit the background to your eyes. If you use light text on a dark background then the content is transmitted to your eyes using the maximal energy output.
I actually prefer a slightly lower contrast of gray text or gray background rather than strictly white on black. This may be due to my strong corrective lenses that tend to have a visible color shift at high contrast transitions.
$Id: index.php,v 1.5 2003/03/13 16:34:30 dlehn Exp $