Mobile Web Development in Japan: A Tag Soup Tale

2. The first decade of web development (continued)

After the HTML 2.0 recommendation and before the announcement of what would be known as HTML 3.2,15 the W3C released a couple of informal documents16 describing a possible model for adding tables to HTML documents. The idea was that this model would make it easier to embed tabular data inside webpages. Both Netscape and Microsoft saw the potential of this extension and provided (partial) support for the not yet official table model in their browsers.17 Their table implementation was an enormous success: web developers started deploying tables on a massive scale, not just to display tabular data, but primarily as a tool for creating compelling webpage layouts that replaced the rather boring look of the web in its early days. With tables it was easy to create a grid of cells functioning as placeholders for different page items, such as a header, a footer, one or more sidebars, images, et cetera. This practice became so common that it was eventually incorporated in the HTML 3.2 specification18 (1997): “[The table element] can be used to markup tabular material or for layout purposes.”

It is to be noted that the HTML 3.2 specification did not only recognize the rather unorthodox ways in which the table model was used, but it also formalized a small number of other popular HTML extensions, the <font> tag being one of them. While this move was welcomed by browser makers and web developers, it also created a new problem: HTML was slowly changing from a structural language into a presentational one. Instead of wrapping text in structural tags, such as <p> (for paragraphs) or <ol> (for ordered lists), most web designers were using <font> tags, tables and other “tag soup”19 trickery in order to achieve pixel-precise page layouts. However, these carefully crafted table-based layouts stopped working once they were viewed with alternative browsing devices, such as text browsers or text-to-speech browsers.20

In other words, Berners-Lee's ideas about device independence and the web as a universal space were strikingly absent in late 1990s web design. Interestingly, a lot of websites were very explicit about this lack of compatibility; phrases as “this site is best viewed with Internet Explorer 4.0 or Netscape Navigator 4.0” were common practice and can still be found on certain websites today. Furthermore, with the collapse of Netscape in 1999, some web developers decided to focus only on Internet Explorer; they started creating sites that heavily relied on proprietary features in its scripting environment, thereby rendering their sites unusable for visitors using alternative browsers.21

In 1998, the W3C reacted against these unfortunate developments with a new HTML specification, which underwent a .01 update in 1999. In the next section I take a closer look at HTML 4.01 and the move to web standards it sparked.


14 JScript is Microsoft's version of JavaScript; both languages are largely compatible, although there are also clear differences.

15 For an explanation of the 3.2 versioning number, see Chuck Musciano (1997): “HTML 3.0 was an attempt to define a vastly more complex and richer version of HTML than the simple one described by HTML 2.0. As an ever-increasing group of people tried to define exactly what HTML 3.0 would be, the standards process collapsed under its own weight, making it almost impossible for the standard to converge. [...] Contrary to what its number might indicate, HTML 3.2 offers much less than HTML 3.0. Far from breaking new ground, this version of HTML instead formalizes a number of popular extensions to HTML that have come into common use in the past two years.” The HTML 3 draft can still be found at http://www.w3.org/MarkUp/html3/CoverPage.html.

16 See for example http://www.w3.org/MarkUp/html3-tables/tables.txt.

17 Details on the table model implementation in Netscape Navigator 1.1 are still available at http://wp.netscape.com/assist/net_sites/tables.html.

18 See http://www.w3.org/TR/REC-html32#table.

19 The term “tag soup” refers to a wide array of web document authoring mistakes: incorrectly nested tags, the use of proprietary markup, structural tags used for achieving a certain visual effect, presentational markup replacing structural markup, etc. More examples at http://en.wikipedia.org/wiki/Tag_Soup.

20 It is to be noted that the HTML 3.2 specification warned for this problem: “Note that [using tables for layout purposes] typically causes problems when rending to speech or to text only user agents.”

21 A slightly better, but far from perfect approach was to create several versions of the same script and serve browsers the one they were compatible with. This was done by means of so called browser sniffing mechanisms. Several sites still rely on these and similar techniques although there are several drawbacks. Web Standards Project (2004): “Sniffing methods are bound to become obsolete, or result in a high level of maintenance to keep up with growth and change within the user agent market.”

CC-by 2005 Andreas Bovens