Standards
For the internet to work in the way it was designed - essentially to make information available in a robust and device-independent manner, it has to operate in accordance with numerous standards, which ensure interoperability between the computers which make it up.
As far as the base protocols are concerned, there is little argument, and it is simply taken for granted that user agents and servers will communicate with one another by using software which conforms to and complies with the various essential standards.
Things get a little more complicated once it is necessary actually to display a web page. Web pages are written in (X)HTML - (extensible) hypertext markup language, of which there are several flavours, not all of which are standard. While a browser will, in principle, refuse to display at all code which is not written "well enough" in html, it is quite possible to write (and often to display) html which:
- uses elements which are proprietary, and only work is some browsers.
- follows deprecated (advised-against) principles, but which displays correctly
- is apparently well formed, but which actually defeats many of the recommended objectives for a web site
While HTML is ultimately the vehicle which transports what is displayed, other technologies, for example Flash, may be used to generate the content. Such technologies tend to generate design-rich output, but it is may well be inaccessible, both to people with disabilities, and to search engines, and, in terms of the inclusion of fancy gizmos and unnecessary animations, quickly annoying.They can almost never be edited by anyone who is not an expert in that particular technology.
They are really best for brochure sites for organisations in the design field.
The other standard which a modern web site really ought to use is Cascading Style Sheets (CSS). The chief function of CSS is to support the separation of the content of a page form the presentation. CSS can be set up to be aware of, and responsive to, output devices, enabling the same material to be differently presented depending on the device which the visitor uses to access the page. Some people, for example, read web pages using Braille, and mobile phones and PDAs with small screens are becoming more widely used to access the internet.
Complications, complications
While adhering to standards ought to be straightforward, browsers do not necessarily agree on the interpretation of the standards, or the extent to which they will support a standard. The tendency in the past was for vendors to adopt standards and then interpret/add to them on a proprietary and/or competitive basis, effectively locking people in to designing for a particular browser.
Even today the same (standards-compliant) code may look different in different browsers. Adding some code which is supported by a particular browser may throw it into "quirks" mode, where it behaves differently to normal.
It is, of course, not possible to know in advance which browsers your visitors will be using, and, in general, your aim needs to be to give all of them a similar experience of your site. (It is surprising how many sites are not quite identical in Internet Explorer and Firefox, for example - but less surprising if you have ever tried to achieve this)
There are numerous work-rounds and kludges which can help, to use which require extensive knowledge, experience and Googling. You can short cut this by:
- Basing the site/page on YAML (or any other CSS framework), which starts you off with a framework which takes account of the issues, and contains the fixes
- Use Glyphgate, which is expensive server-side software, and delivers CSS 2.0 support by modifying code which a given browser cannot understand so that it can display correctly
- Use IE7, a javascript library that supports CSS Level 2 in Internet Explorer 5 and up.