An HTML Pattern Language at

An HTML 2.0 Pattern Language
At this stage, a better name would be Brief Descriptions of Some HTML Conventions. I'd like for this to be a full pattern language, but that's a long way from happening. If you don't care about pattern languages, but you work with HTML and you'd like to read some thoughts about HTML and how it's used here, please skip down to the general description. If you're at all curious about pattern languages, you might want to read straight through.
What are Pattern Languages?
The best book I ever read about creating a Web site has nothing to do with computing. It's a book about architecture called A Pattern Language by Christopher Alexander (and others), and it describes 253 ideas, or patterns, that could be used to build a room, or a building, or the world. Each pattern is presented in the same format, which includes (among other things):
- a name, which describes the pattern succinctly, and indicates in a few words what needs to be done to solve a particular problem;
- a problem description, which delineates some conflict between forces within a given environment;
- a discussion, which explains the problem in more detail, and describes empirical evidence for the existence of the problem; and
- "../../docs/patterns/sample.html"ution, or instruction, that gives one method of solving the problem.
(If you'd like to see a sample pattern from the book, you can).
The book itself is beautifully designed; there isn't a book called The Pattern Language of "A Pattern Language", but there could be. A Pattern Language seems to have influenced a great many people in an increasing number of fields; there's a movement in computer programming to use its ideas to develop object-oriented frameworks. And although A Pattern Language makes wonderful casual reading, there is also a deep formalism to its approach that only becomes evident the more you read it.
I would like to help develop such a formalism in describing HTML. That's what this document tries to do; it hasn't come close to succeeding yet.
What This Document is NOT
What would it require for the following HTML description to be a true pattern language? I'll answer that by describing what this document is not (at least as of now):
- It is NOT complete. A few of the patterns are described somewhat in depth; most consist of a few lines describing the direction the pattern is going.
- It is NOT a formal description of a pattern language. The 253 patterns presented in A Pattern Language were identified, discussed, and fleshed-out over ten years. This HTML Pattern Language is the product of one person working with HTML for a few months. I haven't come close to meeting Alexander's criteria for the presentation of his language; in The Timeless Way of Building (a companion volume to Pattern Language), Alexander says:
- Each pattern should be expressed as a solution to a conflict between forces.
- Empirical evidence is needed to show that the pattern works as claimed.
- The patterns should make us feel good.
The best thing I can say about the ideas discussed here is that they make me feel good. I have no idea if they work for anyone else, very little empirical evidence is presented, and the "conflict between forces" is hardly ever expressed.
- It is NOT a group effort. Alexander's pattern language was developed by many people; right now, this is a solo effort. I would like to include patterns that work for other sites, but that don't appear in this one.
- It is NOT a declaration that HTML should be used by everyone. It's true that this site was created with HTML 2.0, which I think is a much richer language than it usually receives credit for; I also believe that not enough attention has been given to HTML's design possibilities, but I am NOT saying that everyone should use HTML 2.0. This depends completely on the needs of your site.
- This document doesn't give anywhere near enough credit to patterns and ideas developed at other sites. Most of the ideas here are merely statements and implementations of methods I first saw elsewhere; very few of these patterns are my own. Often, I would implement something in these pages, think that I had thought of it, and then come across it again weeks later in a site I'd already visited. The Web makes proper attribution of credit difficult in one sense: we can quickly lose track of where information was originally seen. But in a different way, attribution of credit is easy: proper links can easily be added as the site evolves. If you know of a site that implements any of these patterns, please let me know.
- It is NOT an attempt to spell out what all HTML sites should look like. It is worth noting that the title of Alexander's book is A Pattern Language, not The Pattern Language. He points out that certain patterns he describes, like Windows Which Open Wide, make no sense in a igloo. Each community can develop their own pattern language according to their needs; patterns that work perfectly well on this site may not work elsewhere, and the reverse is true as well.
- It may not even be useful. Four weeks after starting this, I'm not sure if this has any real use. If this is an empty intellectual exercise, why bother? It will be useful if it can helpful in developing software for a Web site; otherwise, I'm not sure what this is for.
So what is this document? A bunch of opinions with a lot of examples at the site to back them up. As you look through this, please let me know what does and doesn't work for you.
General Description of Some HTML Patterns
Each of these patterns is currently only a basic description of some method by which I believe a Web site can be made stronger. Most of t"../../docs/patterns/knownaud.html"een fleshed out in any detail; those that seem the most interesting to me are marked with an asterisk.
The first pattern, Known Audience, discusses what to keep in mind when choosing a markup language for a Web site. This might be the best place to start, although you can begin anywhere; links to related patterns are provided near the bottom of each page.
The expression of of the relationships between patterns in A Patt"../../docs/patterns/knownaud.html"trong> is very rich. The relationships"../../docs/patterns/readdocs.html"ntly described for the most part as lists;"../../docs/patterns/sparim.html" more detailed later on.
<"http://www.c2.com/ppr/"iscussion
Please contact me if you find this useful,
if you'd like to help with further development of the pattern language, or if you"http://union.ncsa.uiuc.edu/HyperNews/get/www/html/guides.html"
<"http://mmwww.xs4all.nl/WhoisWho/Alexander/ChristopherAlexander.html" Pattern Languages in computer programming. One is the Patterns Home Page; they run four mailing lists for patterns enthusiasts. Another is the Portland Pattern "../../docs/progs/index.html#s1"these sites is immediately accessible from the other.
An excellent compendium of HTML guides is available from A brief biography of Chr"../../index.html" is available, along w"../../docs/patterns/index.html"h a speech he "../../docs/patterns/index.html"ve at the conf"../../docs/patterns/index.html"ence Doors of Perception 2.
You can download the program I used (a"../../docs/meta/bio.html" documents in the formats described here. It's called QuickHTML; it was written in HyperCard; you'll need a Macintosh.
If you want to see examples of other patterns that aren't fully fleshed out, please read the worksheet for this document.
An HTML Pattern Language at Anamorph
Last Updated: May 16, 1996. Created May 24, 1995
Copyright 1995 Robert Orenstein. Your Comments are welcome: atempaddress@netscape.net