Including code in Patterns
Advice from Yahoo Design Patterns Authors' List
Luke Kowalski of Oracle where they have a large Patterns Library recommends having code included in with a pattern.
"This one cannot be overstated. Developers seldom have the time to read and interpolate guidelines. Also....given the interpretation opportunity, things will get combined and layouts and information architectures will get twisted out of their original shape. Surfacing design patterns as code templates is going to help with quality, developer productivity, and will ensure consistency. A helpful solution is to embed the code based patterns into the IDE itself (JDeveloper, Eclipse, Dreamweaver extension, etc.)"
How to start a Pattern Library?
Advice from Yahoo Design Patterns Authors' List
I've recently joined the Yahoo Design Patterns Authors' List and these questions were posed to the list. Some big names in Patterns Libraries who have and/or are implementing Patterns libraries had the following advice.
From: Janne Lammi, George Hackman - Oracle, Christian Crumlish
How do you choose the Patterns to include in your library?
- Need to understand the needs of your organization, project and audience of the library.
- Conduct comprehensive user studies, interviews, contextual inquiries, questionnaires
- Study existing libraries of patterns, which are relevant? Don't reinvent wheel but may need to include these "foundation" patterns in your library but and additional use contexts.
- Also when looking at other Patterns Libraries, trim down the patterns of only the ones that are relevant to what you are doing.
- Study your software/web application/components to see if there are unique patterns not addressed in the "foundation" patterns you've already found. Add those to your library.
- Allow others on your team to suggest new pattern ideas for the Patterns team to vet.
- Keep links to other Patterns Libraries
How do you choose a pattern format?
- Understand the culture of your organization and how they will use the Patterns library. Do they need just a pictorial example and some text explanations of interaction or code samples, and so on.
- Study existing Patterns Libraries and compare formats
- Read books in the industry on Design Patterns, also join discussions online with others in the field
- Present those to stakeholders in community and then, discuss.
- Collaborate and agree on a suitable format - this process will be iterative in nature
- Most suggested including both code samples or interactive mockups for Developers... could be an additional "view" into a pattern and/or links from main pattern description.
- Overall, include accessibility into each relevant pattern.
Next steps with Patterns?
- Once you have your Patterns Library, you need to keep it "alive"
- Create team that continues to review outside Patterns libraries for new patterns that might be useful to your library.
- Involve the "users" of your Patterns Library to suggest new patterns
- Ask your Patterns users how useful the patterns are by continuing to conduct contextual inquiries and interviews.
- Allow others to suggest new patterns for library.
A Yahoo perspective
The granularity question (lightbox? slider? carousel? etc.) needs to be answered in context. I'd say whatever works for the people who have to actually use the library is what you should do. Don't get too hung up on semantics and purity.
Wherever possible, I think patterns should be tied back to code. I don't consider the code samples to be part of the pattern language proper, but I think the best patterns are augmented by many visual examples (including animations), interaction and visual specs, code samples, reference implementations, prototypes, and templates and stencils for rapid reuse. You won't always have all these elements available but the more the better.
- Christian, Yahoo! (http://xianlandia.com/te-amo/2007/10/16/do_pattern_libraries_really_work.html)
An Oracle Perspective
Developing a UI Pattern standard is a document by Patrick Stapleton of Oracle which was posted to the Yahoo! ui-pattern-authors group (http://tech.groups.yahoo.com/group/ui-pattern-authors/). The document discusses developing a set of standard data elements (a UI Pattern Standard) for the "Enterprise Pattern Exchange (EPE)," which did not come to fruition, but aspired to become the major online UI Pattern resource for pattern writers and user alike incorporating as many patterns publicly available online (Oracle, Yahoo, eBay and Tidwell) as possible.
This document looks to:
1. Explain the rationale for a UI Pattern standard
2. Provide a discussion on the makeup of a UI Pattern standard
3. Provide an analysis of some of the current pattern collections
4. Present a UI Pattern standard proposal