Contents
$PATTERN_NAME
Confidence level: * / ** / *** (how confident you are that this pattern totally nails a recurring problem and its solution)
Status: [Proposed | Experimental | Stable (since GNOME 3.x.y) | Deprecated (since GNOME 3.x.y) ]
Tags: x, y, z
Super-patterns
Description of "where you are coming from" if you were designing something from the top down, and how the present pattern helps complete a bigger pattern. Link to the bigger patterns in your description. For example, for a Zooming pattern:
"An Image Viewer can load images bigger than the size of the screen, and you need a way to adjust the zoom facor and viewport within the window."
Problem statement
One-sentence or micro-paragraph description of the problem, in boldface. For example, "When you navigate among sections of a document, you need something that lets you keep a clear indication of your current position within the document."
Elaboration
Discuss the problem in detail. What forces drive the problem and the design of the solution? What real-world evidence is there for good solutions? Who has done research in this area, and what were their results? What common properties do solutions have?
You may include explanatory diagrams, charts with results of studies, etc.
End the elaboration with "Therefore:", as below. This will tie the text with the summary of the solution.
Therefore:
In boldface, write a short summary of the solution to the problem. Make it so that people familiar with the pattern language can simply read the problem statement and the solution (i.e. both boldface paragraphs) and get a good reminder of everything they need to do.
In here, put a schematic diagram illustrating the solution. You can use a wireframe mockup for UI elements. Don't use a very polished mockup or a final-looking screenshot, so that people's creativity is stimulated.
Sub-patterns
Links to similar patterns that might be appropriate, and to other patterns commonly used with this one. Links to smaller patterns that may be used in the construction of this pattern.
Implementation notes
This section is optional. You can include things like:
- Standards relevant to the implementation of the pattern (e.g. a list of standard keybindings to be used for list-like widgets).
- Interactions between the widgets that compose a pattern, if they are not obvious from the elaboration section and the solution.
- Particular implementation details that have been important in the implementation of the pattern in the past, that are not general enough to be in the description of the pattern itself (e.g. an asynchronous/cancellable engine behind a text entry with Tab completion).
- Links to source code or software that exhibits this pattern in a particularly interesting way.
Discussion/comments
Feedback from design team, developers and users.
References
If you cite research papers (on HCI topics) or whatever, link to them here. Kudos for links to actual content instead of paywalls