« How not to protest in the 21st Century | Main | please welcome Zoe Kate Allsopp Lander »

November 18, 2005

WebPatterns and WebSemantics

WebSemantics 1.0

Over the last few years, we've seen a growing awareness of the importance of semantics in HTML. Perhaps Dan Cederholm's rightly lauded Simplequiz was the coming of age of this idea, which while there at the very beginning of HTML, had been overlooked for a long time by the great majority of web developers. We could consider this "first generation semantics" or, in current parlance "WebSemantics 1.0".

But it's clear that the semantic expressiveness of HTML, even with HTML compounds is reasonably limited. And developers are voting with their feet, using class and id to create their own ad hoc semantics for HTML.

Even XHTML 2, while somewhat more semantically rich than the current generation of XHTML/HTML, will fall far short of the semantic complexity which developers are currently cooking up, or which is found in even the first generation of microformats (and who knows what we might see from microformats.org in the next year or two).

So, it seems that developers want/need the semantic richness that is only available through the use of class and id values in HTML/XHTML. My recent semi-random survey of around 1300 sites, found well over 5000 distinct class values, and almost 5000 distinct id values, which surely demonstrates that this is something developers are doing in significant numbers.

It's also something that has been talked about for some time by the likes of Tantek Çelik and Andy Clark (and of course many others).

But my recent survey also showed that there is very little consistency in the use of class and id values - no conventions, no accepted set of values, and so none of the potential benefits which might flow from that.

In the comments which followed that post, the overwhelming consensus was that some kind of standardization would be a good thing. This echoes my conversations with developers, some very well known, many in the trenches, in organizations big and small, on this issue over the last year or so.

The temptation is (as evidenced by a number of comments), that having identified the need for some kind of standardized class and id values, we should roll up the sleeves, jump in, and start a convention, any convention, before its too late.

But standardized (or "conventionalized", it's not necessary that this be some kind of formal standard or W3C recommendation) class and id values will only be adopted if they clearly meet the needs of developers. It's also worth noting that we don't need a "big bang" approach - we don't need to agree on every possible semantic value for class or id at once. But given how long it takes to develop standards, like XHTML2 and CSS3, how on earth could this be done in a reasonable amount of time, in an unstructured way?

Let's start by trying to understand the problem well, before rushing to an implementation (in my experience, that's the cause of a lot of bad decisions and bad solutions).

What's the problem?

As I am fond of asking, "what is the problem"? When developers use class and id values, what problem are they trying to solve?

One of a couple of things.

Often, developers are creating hooks for styling with CSS. "Classitis", aka "divitis" is a common malady on the web, as we all know. But when developers are using class and id in a more structural or semantic way, what are they trying to achieve? Commonly, developers use id and class to identify structural, or architectural components of a page. For example, the most common id and class values in my survey were things like header, footer, content and navigation.

I used the term "architectural" deliberately, because originating in the field of architecture (as in buildings), and having taken strong hold in many areas of computer science (object oriented analysis and design, Human Computer Interfaces, and more) is the idea of patterns, and pattern languages.

What I think web developers are doing instinctively is using patterns in web page and web site architecture. A small number of people, most notably Martijn van Welie have done work on patterns and web design, but it's a surprisingly under-researched area, given how powerful and valuable a patterns approach to web development could be.

So what are patterns?

But hang on, what are "patterns"?

On the web you'll find a considerable amount of information about patterns and pattern languages, in architecture, computer science, and other fields. I've got some links to resources at the end of this post, but here are just a few introductory notes.

In 1977, Christopher Alexander, Sara Ishikawa and Murray Silverstein published "A Pattern Language", which formalized their pattern based approach to architecture.

In a nutshell, a pattern describes a problem which occurs over and over again ... and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice (my emphasis).

The essence of a pattern is that it articulates a problem, then considers how that problem might be solved. It does not dictate a single solution, rather, a strategy for solving the problem.

The idea has been taken up in a number of computer related fields, most famously in object oriented analysis and design, the seminal work there being Design Patterns Elements of Reusable Object-Oriented Software, by "the gang of four" - Gamma, Helm, Johnson and Vlissides. In this context, Brad Appleton observed, Fundamental to any science or engineering discipline is a common vocabulary for expressing its concepts, and a language for relating them together. This really struck a chord with me. Can web design and development today rightly be called a discipline? Or is it, as I suspect, a practice in the process of becoming a discipline. If we consider Appleton's observation, do we have a common vocabulary for expressing [our] concepts, and a language for relating them together ? We certainly have technologies like HTML and CSS (though we still struggle to even use the terms "tag", "attribute" and "element" correctly - I'm still hearing "alt tag" frequently in my travels). But what about higher order, more complex structures and strategies? What do we call the parts of a page we use over and over again? What names do we have for particular navigation strategies (such as hierarchical trees, linear progressions through sections, and so on)? My survey, as well as a more detailed, though much more narrowly focussed one by François Briatte suggest that while it's clear that there are many structures we use over and over again, we lack that common vocabulary to talk about these structures, and to relate them to one another.

In short, we lack a pattern language for the web.

But is our discipline mature enough to develop this vocabulary and language? Only trying to do just that will tell.

If we return to the issue which began this post, of id and class values, how does that relate to the issue of patterns? Earlier I asked - when developers use class and id values, what problem are they trying to solve? . My answer is that we are struggling to find a vocabulary to talk about these common constructs and concepts. But before we quickly run out and invent a vocabulary, let's stop for a moment and think about what these patterns are. Not all of them right away, just the most common ones. I think this could help us determine what id and class values, what kinds of HTML element, and so on, to use when translating these patterns into HTML.

But how to go about this?

A couple of years back, Dan Cederholm published his very popular and helpful "SimpleQuiz". This sought to understand best semantic coding practices by asking developers what they thought the most semantic way of marking up various commonly used constructs were. In fact what Dan was doing was trying to understand patterns, particularly as they are implemented using semantic HTML, constructs like headings, lists, linking, and paragraphs. SimpleQuiz even touched on some patterns which go beyond straight HTML, such as how to markup a page header. But (and this is not a criticism) SimpleQuiz took the patterns for granted, and looked for solutions, while I'm interested in discovering and cataloguing the patterns developers currently use themselves. How these patterns are implemented is an issue for subsequent investigation and discussion.

Over the coming weeks, I'll be running (with Dan Cederholm's blessing) "PatternQuiz". The goal is to begin collectively understanding, naming and cataloguing the patterns which have already emerged in web development, and which we all use commonly. In Appleton's terms, to develop a "common vocabulary for expressing its concepts, and a language for relating them together". Or in Alexander's terms a pattern language for the web. Once the conversation is flowing, I hope it can be formalized in a wiki, which I am setting up at WebPatterns.org, a site I've established to promote the use of patterns in web development, similar in some way to Microformats.org

What makes a good pattern?

Others have done a lot of work in the area of patterns in many different fields over a long period of time. It's important to stand on their shoulders, rather than having to relearn from scratch the lessons they have learned.

James Coplien (often referred to as "Cope"), has this observation about what makes a good pattern, which might help think about webpatterns. A good pattern, says Cope,

  • solves a problem: Patterns capture solutions, not just abstract principles or strategies.
  • is a proven concept: Patterns capture solutions with a track record, not theories or speculation.
  • describes a relationship: Patterns don't just describe modules, but describe deeper system structures and mechanisms.
  • The pattern has a significant human component .... All software serves human comfort or quality of life; the best patterns explicitly appeal to aesthetics and utility.

Who are patterns for?

Cope's final point is one particularly worth emphasizing. The purpose of identifying patterns is to use them in our work as designers, information architects, and so on. But why should we go to all that effort? Who benefits if we do so?

Usually, the focus is on the benefits of patterns for the developers who use them. Now using patterns certainly has its benefits for developers - it helps solve complex design problems in better ways, more efficiently, while avoiding potential pitfalls, based on our own and others' previous work. Patterns help to facilitate larger development teams, which will become more common as the practice of designing and developing for the web continues to mature, by providing a common vocabulary and language to aid communication. They help site maintenance, where page and site logic and structure are much clearer when captured explicitly as a pattern. Compare reading the HTML for a WordPress (or other) blog with an identical looking table based design (such as a Geeklog page). While the patterns used in each are very similar, in a standards based, semantically marked up page they are explicit, making the code much more readable and maintainable.

But, there is another significant, often overlooked group who would benefit from a pattern based approach to web development - users. Users are often overlooked when it comes to patterns, perhaps because the most common and well developed work in patterns is in the area of object oriented analysis and design. Using design patterns in this field produces good outcomes for users, but users don't see or interact directly with the patterns which OO designers develop. These patterns lie behind the scenes, in the code.

But in web development, users benefit from the consistency, the learnability, the familiarity which comes from using patterns. Take blogs. When you visit a blog you can generally readily, without much conscious thought, work out how to get to the main page, how to contact the writer, how to leave a comment, all because the patterns in blogging are so well established. This is true regardless of whether the site is developed using Moveable Type, Blogger, WordPress or by hand. This is not nearly so true for many other common types of site. In part that's due to their greater complexity of many kinds of site - a newspaper site has possibly dozens of sections, and, many many different kinds of content, as compared with a blog's much more limited set of patterns. But in part it's true because there are very strong patterns in common use by blogging tool developers and bloggers.

This doesn't mean users will be consciously aware of the patterns which comprise a site they are visiting, or even that all of those patterns are directly accessible to the user. But patterns in web development benefit not only developers, but also site visitors, maybe even more so.

There's a final entity for whom a pattern language, and the standardization of semantics, could bring significant benefits - machines. Today, software discovery of information on the web is largely limited to plain text indexing, and very simple metadata like tags (as in technorati, not bold), and some other microformats like XFN, hCard and hCalendar. Imagine the kinds of data mining possible if much more of the content of the web was marked up in a semantically rich, standardized way. Understanding and cataloguing the current patterns in web development is an important first step in the development of robust, rich standardized semantics, for today's web, using todays technology, without waiting for The Semantic Web.

What can you do right now?

Think about patterns

Start thinking about patterns in your work, and in the sites you visit. Particularly start thinking about types of pattern. Immediately the following come to mind

  • different types of site - e.g. blogs, newspaper sites, search engines
  • different navigation strategies, like hierarchical trees, linear paths, or indexes
  • different kinds of pages within sites - front page, contact page, search page
  • different navigational page sub parts (like, site level navigation, site subsection navigation, page level navigation)
  • different page content sub parts - main text, pullout quotes, "side bars" and so on

and of course many many others. The fun part is finding them.

Notice I haven't talked about things in terms of appearance. I think a basic rule is to avoid any kind of presentational name to begin with (although header and footer are so commonly used that it would be perhaps counter productive to not continue using those terms).

Overall, looking at the list above, there seems to be a number of different categories of pattern. A number of the above patterns relate to page architecture. But that's not the case for sites, or for navigation strategies. As this work continues, I imagine several categories of web pattern will emerge and become clearer.

It's important to note that patterns aren't just restricted to pages and parts of pages. A site, for instance, is an open collection of pages, while a navigation strategy (or mode, or whatever we might call that kind of pattern) is even more ephemeral - it's a concept which the designer creates in the mind of the user by the use of other architectural patterns, like breadcrumb trails, tables of contents, next and previous links and so on. This is an example of the powerful concept of generative patterns, patterns which work together to build more complex patterns. It's this which makes a collection of patterns a language, rather than simply a catalogue.

When thinking about patterns, here are some ideas of things to think about

  • What name should we call the pattern? Do good names already exist for the pattern (perhaps from outside the web)
  • What is the problem which the pattern captures?
  • What solutions exist which attempt to address the problem? Remember Cope's observation that a pattern is a proven concept, not speculation.
  • How might you implement the solution (what concrete examples of the solution can you think of)?
  • What other patterns work with this pattern? What patterns does it play a part in? What other patterns form a part of it?
  • What category of pattern does it belong to?

What's next?

As mentioned, I'll very soon start my PatternQuiz, so subscribe to the RSS feed for this site, and get ready for that quiz. Soon too, the WebPattern Wiki should be up at webpatterns.org. In time I hope that can become a collaborative catalogue of patterns for the web.

You might also be interested in reading more about patterns. There are a lot of great resources online, here are just a few to get you started.

Footnote: Martijn van Welie's Web Design Patterns

It's very important for me to acknowledge the work that Martijn van Welie has done in this area, which in my experience is the most significant in the field. Martijn's site catalogues dozens of patterns, with several categories of pattern, including site types, navigation, page parts, page types and more. He also includes visual design patterns, such as liquid layout and alternating row colours, and interaction patterns, like stepping and wizard.

So, if Martijn has done all this work, why am I proposing to essentially start it all over again? While Martijn's work is significant, it is not without some significant shortcomings.

  • It is the work of an individual. As such it will always be to an extent idiosyncratic, and limited by the amount of work an individual can do. Even a moment's reflection will show that the number of patterns which have already emerged in web development is simply enormous. No individual can catalogue all these. The WebPatterns project I will outline in more detail shortly, aims to harness the collective knowledge and experience of many many web developers (in effect, anyone who cares to be involved).
  • It lacks a systematic structure. Each category of pattern, and in turn, each individual pattern is isolated. For example there is a category, "Page Elements", and yet other categories, such as "Navigation" contain page elements as well. My sense is that web patterns probably have both a hierarchical nature (so Navigation elements would be a subset of Page elements), and a compositional nature - patterns both comprise other patterns, and help make up larger patterns. This aspect of the relationship between patterns is strongly emphasized in most major pattern work, particularly that of Alexander et. al. and the Gang of Four.
  • Closely related to this is the idea that a pattern language should be generative, that is, taking a particular pattern within the language as a starting point, related patterns are explicitly referred to by the language itself, helping to identify more complex solutions more efficiently. Because van Welie's work lacks a strong structure, and explicitly articulated relationships, it is much less generative than other pattern languages.

Martijn himself identifies the importance of these second and third aspects in Generative Pattern Languages for Interaction Design [PDF] where he writes

When Alexander wrote his book on architecture design patterns, it did not just contain patterns; the patterns formed a language. His language was hierarchical and started out on the level of cities, then neighborhoods, houses until the level of windows or seats was reached. In Alexander’s idea, the language actually “generated” the design by traversing from high level patterns to the lowest level of patterns. From the design of cities down to the design of window seats, a hierarchy of scale.

I hope Martijn's detailed understanding of web patterns specifically, and expertise in pattern languages more generally will play the important role they should in the further development of our understanding of webpatterns.

Technorati Tags

I've taken the liberty of coining two as yet unused technorati tags for this post - and . While the tags Semantics and Pattern are both reasonably well used (with a little over 100 and 1000 results on Technorati respectively) they are each applied to many completely unrelated concepts, and so I suggest these more specialized tag is warranted to help facilitate finding posts specifically about these issues.

November 18, 2005 | Permalink


TrackBack URL for this entry:

Listed below are links to weblogs that reference WebPatterns and WebSemantics:

» webpatterns from steve.ganz.blog
John Allsopp has taken some amazing first-steps to define and catalog patterns for the web. Keep your eyes open for PatternQuiz, modeled after Dan Cederholm's SimpleQuiz and a brand new WebPattern Wiki should be up at webpatterns.org soon.... [Read More]

Tracked on Nov 19, 2005 8:56:09 PM

» Pattern Recognition from The Indiana Jones School of Management
Dan Cederholm points to WebPatterns and WebSemantics, a way to use the same principles of patterns that underlie object-oriented programming into the emerging discipline of Web design. Hmmmmmmmmmm. ... [Read More]

Tracked on Nov 20, 2005 1:30:27 AM

» Web Patterns from James Mc Parlane's Blog
[Read More]

Tracked on Nov 21, 2005 12:02:02 PM

» Web Patterns from James Mc Parlane's Blog
[Read More]

Tracked on Nov 21, 2005 1:08:07 PM

» Web Patterns from damo's workspace
This is just a quick plug for Web Patterns, John Allsopp’s new baby. John’s last few posts have raised some interesting points in regards to the use of web patterns and semantics. He raises the question [Read More]

Tracked on Nov 22, 2005 10:28:34 PM

» WebPatterns from Ry Walker's view on everything
Well you know how much I love OO patterns (or at least the promise they represent.) I read a good blog entry today on the idea of WebPatterns. Basic idea is that after looking at the markup structure for 1,300 [Read More]

Tracked on Nov 29, 2005 12:21:04 AM

» Web patterns & web semantics from DonnaM
John Allsop, over on 'dog or higher' has written a great article about web patterns and web semantics. His article goes beyond just looking at patterns for web design, and recognises that not only do we have a set of stuff we could emerge into patterns... [Read More]

Tracked on Nov 29, 2005 10:10:25 PM


"Compare reading the HTML for a WordPress (or other) blog with an identical looking table based design (such as a Geeklog page). While the patterns used in each are very similar, in a standards based, semantically marked up page they are explicit, making the code much more readable and maintainable."

I hate to remain the nay-sayer - because the proposal *does* sound interesting - but the above is the only practical use I can see for developing such a set of patterns. It would allow a designer to create a once-off CSS template that would work on Wordpress, Typepad, MovableType and Blogger or any other such platform. This is a noble and worthwile goal, but it may take some convincing from the respective projects authors.

I'll await youe questionnaire with baited breath and itchy fingers :)

Posted by: hostyle | Nov 19, 2005 2:04:21 AM

meh. Where I wrote "the above is the only practical use I can see for developing such a set of patterns" I meant "the above is the only practical use I can see that you have highlighted for developing such a set of patterns". I could possibly think of lots of good reasons if I had the time, and a lot of bad ones too.

Posted by: hostyle | Nov 19, 2005 2:10:44 AM

John, excellent article. WebPatterns.org is bookmarked.

We certainly have technologies like HTML and CSS (though we still struggle to even use the terms "tag", "attribute" and "element" correctly - I'm still hearing "alt tag" frequently in my travels). But what about higher order, more complex structures and strategies? What do we call the parts of a page we use over and over again? What names do we have for particular navigation strategies (such as hierarchical trees, linear progressions through sections, and so on)?

^ Exactly. You should highlight these questions. The process of answering these questions will change the way websites are designed because the fundamental meanings of our conventions will be challenged.

Also, excellent points about the benefits of patterns for users and machines. I believe the experience of using a pattern language that isn’t based on physical conventions (architecture, visual layout) will change the way we (web designers) think, and I believe that change will be reflected in our designs — this is how users will be exposed to the behind-the-scenes shift.

Posted by: BrainO | Nov 19, 2005 6:42:34 AM

Excellent. I've long thought that different patterns exist, but didn't have the vocabulary to express what you just laid out so clearly.

One simple area that standardized class and id patterns would help is in the spreading of web standards to new developers. Particularly in examples of techniques. While learning, you pick up an example of this and that, with conflicting classes and id's. If they were more often standardized, the web developer would have an easier time learning to use web standards.

Posted by: Marilyn Langfeld | Nov 21, 2005 1:16:47 AM

Absolutely, Marilyn. This would really help the recently stoked education initiative of the WaSP Edu TF. By developing a common reference, it would make it much more easy to develop Web standards curriculums for educators.

Posted by: Steve Ganz | Nov 21, 2005 2:53:42 AM

This is a good article, but I feel that this sort of push for standardized naming conventions needs to be something everyone can understand and use.

I hope webpatterns.org will be as straightforward as:

X is the pattern you should use for a blog
Y is the pattern you should use for a static site

etc. etc.

Microformats.org is too Specc-y. Show me examples, then you can go off about why you named X the way you did and write a long spec nobody will read.

Posted by: Rob Goodlatte | Nov 21, 2005 11:46:19 AM

Heres another thought. In an ideal world, where all user agents supported CSS-2 / 2.1 (see http://www.456bereastreet.com/archive/200510/css_21_selectors_part_2/ for some examples) fully, there would be much less need for demarcating sections of our HTML with unique ID and CLASS attributes. We could instead be using CSS that says "float the third DIV on the page to the left", and "style all paragraphs in the second child DIV of the third overall DIV this way". We would no longer need as many ID and CLASS attributes. Granted we do not live in such a utopian web-scape and in the interim there is a possible gap to be filled by your WebPatterns idea.

Posted by: hostyle | Nov 21, 2005 8:43:44 PM

To Hostyle:
It's a good thought in general, but the example is bad. It's precisely because you might add another div between the third and the second that one uses stuff such as id and class.

Besides, it seems to me that it's not very semantic to have a special number (e.g. the third div) as an identifier for something. In this case I do prefer ids and classes.

Posted by: Adriano Varoli | Nov 21, 2005 11:34:47 PM

I'm looking at this as a former teacher of web design and wondering why didn't somebody think of this sooner? Like many good ideas, this is one that seems obvious in hindsight. A web design pattern language, I'm talking vocabulary here, not codified practices would be an incredible tool for encouraging informed discussion of the *whys* of web design.

My concern is that the conversation will degrade to nit-picking over detail, focusing on specifics instead of patterns.

Posted by: michael mckee | Nov 23, 2005 4:25:27 AM

For those who are curious, there are several other UI- and Web-related pattern collections out there. One is a book called "The Design of Sites," by van Duyne et. al. It's a fairly extensive pattern language for Web design. Take a look at its table of contents for some ideas on structuring a web language.

Another is my own pattern collection, just published under the title "Designing Interfaces: Patterns for Effective Interaction Design." It addresses applications more than traditional web sites, but some of you readers might find it interesting. (Obviously, I have an interest in plugging this!) Structuring it was very difficult, but I think it's sound.

Finally, Erin Malone and her group at Yahoo! have developed an extensive in-house collection of design patterns. She posted a very interesting article about it at http://boxesandarrows.com (scroll down the page).

So, yes, patterns are quite useful for design. Several people have written them, and many, many people already use them. I've found it nearly impossible to get a productive, public group discussion going on the topic -- pattern writing is not as easy as it sounds -- but it would be great if your Wiki could reach "critical mass." Good luck!

Posted by: Jenifer Tidwell | Nov 30, 2005 1:07:01 AM

(Quote)"When developers use class and id values, what problem are they trying to solve?"

If referring to a prevalent model for web development, the (pure) developer is typically attempting to wrestle a Photoshop image supplied by an advertising or design agency into HTML and CSS. In this case 'convenience is the mother of invention'. ID and class names such as 'leftcolumn', 'rightcolumn' and 'redlink', bear testament to this observation.

What has perhaps made the issue of semantics in development 'invisible' is the definition of roles/responsibilities. A developer is not expected to engage with content at a semantic level (although accessibility initiatives do require this level of engagement). Distance from both the end-user and content creates a 'gap' between the communication of meaning (semantics) and means of production (code).

For the identification of patterns to be meaningful, the developer must also be able to exert influence 'up the foodchain'. I believe this is what has necessitated the title of 'user experience designer/architect'.

Although this article does justice to the many-faceted nature of pattern theory, perhaps the aim of this ?survey/compendium/research? would be more accurately summarised as seeking to match CSS ID and class names with common interface elements?

Posted by: Andy Kirkwood | Nov 30, 2005 8:36:15 AM

Here is another General Patton Related Site:

Sorry, couldn't help myself. Will be interested to see where WebPatterns.org goes...
: )

Posted by: Adster | Nov 30, 2005 1:21:35 PM

I think it could be comparable to hermeneutics and lingua franka. But as we know the attempts failed. At least for the present time. Of course semantics is more technical and that's why it's more possible but we'll live and see.

Posted by: Anita, web developer | Dec 15, 2005 8:05:52 AM

Funnily enough Anita, the thought had crossed my mind.

I've long been interested in bot the fiction and academic work of Umberto Eco - his "Search for the perfect language" touches on this issue considerably. I'm presently re reading "Quicksilver" by Neal Stephenson, in which John Wilkins (a prominent figure in Eco's book) figures prominently, as does his "philosophic language" - one of the many aattempts to develop a perfect language in which is unable to utter falsehoods or logically incorrect statements, and which futher would allow natural language processes much like mathematics.

Yes, all such practices have, and are bound to fail. This project is far less ambitious, being an attempt to capture existing practice (more like developing a written version of an existing oral language than an entire language from scratch)

Thanks for the very thoughtful comment


Posted by: john Allsopp | Dec 15, 2005 8:56:31 AM

I've read a lot of the recent articles on web design patterns and I'm still not convinced of benefits for the user. And in fact, benefits of a rigid semantic pattern could hinder rather than help developers who work on constantly evolving projects. The only argument that automatically makes sense is the one for helping machines traverse what we've built. It seems to me that machines benefit the most from a properly codified web, whereas it may just be 'another set of rules' for everyone else.

Posted by: Jim Amos | Dec 20, 2005 7:44:32 AM


I think any rules always trade flexibility off against the benefits of standardization. You ponder what benefits patterns might provide to the user. I'm not sure whether you mean the user of the pattern (developers) or the user of sites developed using patterns (site visitors) but I'd argue there are considerable benefits to both.

In the case of developer, patterns provide a common vocabulary, or "lingua franca" for talking about what we already do - patterns don't attempt to innovate, rather to capture existing practices. Nor are they hard and fast rules, or templates - the key to a pattern is its flexibility. They are more descriptive of current practices, rather than prescriptive of requirements. Of course, misused, they could become too inflexible, and you are right to observe that flexibility is required.
This common vocabulary makes team development and maintenance easier.
Patterns also provide strategies for solving common problems, because they recognize and capture common approaches to similar problems.

As for site users, we know that familiarity brings usability benefits. The usability advantage of desktop applications over web sites is that all desktop apps (should) conform to platform usability guidelines. This means that on a Mac, you cmd-c and this copies the currently selected text - a pattern that works across all applications. These patterns were very well captured in the original Mac UI Guidelines.
By using existing patterns, developers provide their site visitors with familiar interfaces for solving problems - "how do I contact these people?" "how do I search this site".

I hope to write a more detailed post on this soon,

thanks for the thoughts


Posted by: john Allsopp | Dec 20, 2005 11:22:23 AM

I think about it.I have a website and mazbe it will be important for me.

Posted by: Custom Web Design Company | Dec 24, 2005 12:54:00 AM

Article is just mind blowing. It makes me rethink about the way one approach the problem that almost many web developers face. I feel that this idea of standardization and defining the patterns are superb if they stop up to a level and allow the developer to start his work from there. These standardization should be kind of templates from where developers start with and express their creativity. This way we stand at a point where every body is satisfied and happy including the robots in the web. The big task of deciding upon that point can only be achieved when articles of these kind transform in activities with deliverables. I am also happy that already work has started in this direction and anxiously waiting to see its final shape

Posted by: K.Siva Senthil | Dec 27, 2005 6:03:49 PM

I think that semantics in HTML is as unreal as so called Germeneutics in real life.

Posted by: Helen Price | Jan 20, 2006 7:19:02 PM


I've searched high and low and can't find any detailed descritpion of Germeneutics. Has it to do with Russian formalist/structuralist theory of literature.

Keep in mind that HTML is designed with semantics, just a reasonably impoverished one, Other applications of SGML and XML have much richer explicit semantics.


Posted by: john Allsopp | Jan 21, 2006 8:52:04 AM

I don't know how to say it correctly but as I understand Germeneutics is a philosofical trend that tries to parcel every word/concept with one single meaning understandable for everybody so they use it only with that meaning. By that they try to escape misunderstanding and help human beings to communicate. IMHO. I'm sorry if don't get it right. By the way i have no idea if it has russian roots.

Posted by: Erik | Mar 16, 2006 6:33:32 PM

Hi there!

[…] A very accosting layout and a interesting discussion topic, do you provide any Web-based services to universities or students. […]

A lot of SPAM out here! :-)

Greetings Milos

Posted by: Milos | Jun 27, 2006 1:19:35 AM

I searched a long time for such an great article. Thank you

Posted by: gutschein | Apr 3, 2007 3:54:41 AM

This is Great! I have posted some related sites over here: http://todaytop10.com

Posted by: alex_ng | May 4, 2007 1:43:53 PM

Very interesting article. Thank you for sharing.

Posted by: Fab L | Aug 2, 2007 6:20:49 AM