Shape: topic
The base every shape derives from: a unit of writing with a title, a summary that stands for it, a body, and the topics it contains or points to. A genre shape adds blocks to it and removes none.
A topic is one unit of writing that a reader can take alone. Its parts may be topics of the same shape, to any depth.
Skeleton
# <Title: what the topic holds, in the field's words>
<Summary: one to three sentences that stand for the topic wherever it is folded or listed.>
<Body: the parts, in the order the reader needs them.>
## Contents the topics this one holds, each by its title and its summary;
omit the section while there are none
| Topic | Summary |
|---|---|
| [title of the child](child.md) | the child's summary |
## See also topics this one points to without holding them: its parent, and related topicsA filled topic, short enough to read whole: the decisions folder, whose summary stands for the folder and whose Contents table lists each record by its title and summary.
The blocks
| Block | Rule | Principle | Evidence |
|---|---|---|---|
| Title | one per topic; it names what the topic holds | names predict content | DITA requires a title on every topic (information typing) |
| Summary | right after the title, or after its metadata (a byline, a status); at most 60 words; it may be labelled Abstract or Summary; it stands for the topic when folded or listed | overview first | a folded node must carry a summary (progressive disclosure) |
| Body | the parts in the reader's order; at most three heading levels | shallow outline | readers keep the top levels best (levels effect, reader-ergonomics psycholinguistics) |
| Contents | each child by its title and its summary, or by its type alone when the type's role is stated once | signal the structure | readers rarely open a layer they cannot judge from outside (progressive disclosure) |
| See also | links, never copies | one place per fact | the standards reuse by reference (document model) |
The 60 words are a tunable: summary_words in checks/config.toml, PROVISIONAL until a reader study sets it.
How a shape derives from it
Graphviz source
digraph topic_shapes {
graph [rankdir=BT, nodesep=0.4, ranksep=0.5, bgcolor="white", pad=0.2, fontname="Inter"];
node [shape=box, style="rounded,filled", fontname="Inter", fontsize=13, margin="0.2,0.1", penwidth=1.5, fontcolor="#1F2328"];
edge [fontname="Inter", fontsize=11, color="#3D434B", fontcolor="#55575F", penwidth=1.3, arrowsize=0.8];
TP [label=<<b>topic</b><br/><font point-size="11" color="#55575F">title · summary · body · contents · see also</font>>, fillcolor="#FBEDE4", color="#B4541A", penwidth=2.6];
NO [label=<<b>note</b><br/><font point-size="11" color="#55575F">+ terms + check yourself + open</font><br/><font point-size="11" color="#55575F">see also: Links</font>>, fillcolor="#E6F2EA", color="#2E7D4F"];
RP [label=<<b>report</b><br/><font point-size="11" color="#55575F">+ what it tests + plan and steps</font><br/><font point-size="11" color="#55575F">+ checks</font>>, fillcolor="#E6F2EA", color="#2E7D4F"];
FO [label=<<b>folder</b><br/><font point-size="11" color="#55575F">+ example + rules for the folder</font>>, fillcolor="#E6F2EA", color="#2E7D4F"];
CO [label=<<b>commit</b><br/><font point-size="11" color="#55575F">title and summary share one line</font>>, fillcolor="#E6F2EA", color="#2E7D4F"];
NO -> TP [label=" derives from"];
RP -> TP;
FO -> TP;
CO -> TP;
{rank=same; NO; RP; FO; CO}
}- Keep every block. A derived shape keeps all five. It may call a block by another of its accepted names, from the table below, and by no other. It may leave Contents or See also empty while there is nothing to hold.
- Title and summary come first, in that order: they are what a folded view shows. Only metadata may stand between them. The other blocks may be ordered by the shape.
- Add, never remove. A shape adds its own blocks, such as a note's Check yourself.
- Announce the type. A document links the shape it follows, so a reader knows which blocks to expect, and the check knows which to look for.
- Grade: convention, untested. Whether a reader who knows the topic reads a derived shape better is the open question of information typing.
The accepted names, in one place. A shape that needs a new name adds it here first, with the shape that uses it:
| Block | Accepted names | Used by |
|---|---|---|
| Title | the one # heading; a subject line |
every shape; a commit |
| Summary | summary, abstract, short description, decision | the topic; papers; DITA; the decision record |
| Contents | contents, files, steps | the topic and a folder; a review's README; a report |
| See also | see also, links, references, uses | the topic and a folder; a note; papers; a proof |
The decision record was first written here, then moved down to reader-ergonomics (v1.3.0), where three levels can link it; it fits the topic like the four general shapes. The topic's own derived shapes will come from its extension.
The four general shapes of reader-ergonomics, and six forms of the genre extensions it was not built from, are checked against these rules in the conformance table. Five of the six fit; a decision record without a summary does not.
Depth
- In storage, any depth. A topic may hold topics that hold topics. In this repository the front page holds the evidence, which holds three reviews, each holding its steps: three levels below the root, each topic listed by its parent with its summary.
- In view, at most three levels. A view shows the topic, its children by their summaries, and one level more.
- The path to the root is always there. A topic read alone names its parent in See also; the site shows the full path.
- What most readers need sits in the summary and the first part of the body, above the first fold.
- Grade: supported with caveat, never tested as such (progressive disclosure).
Graph
- One containing parent. A topic lives in one place: in a repository, one folder or one file.
- Any other parent points to it. It links the topic and never copies it.
- No topic contains itself, directly or through an inclusion, at any depth. In a repository, containment follows folders, which form a tree, so it cannot loop; a cycle can come only from an inclusion, such as a Quarto
{{< include >}}, and that is what the check looks for. - Grade: convention, the rule of every document model read (document model).
When a part becomes a topic
A part of a topic is a section of its file until one of these holds; then it becomes a topic, in a file of its own.
- It is used from a second place. A unit with two parents is reused by a link, never by a copy or a second nesting (document model).
- A reader can take it alone. It has a summary that stands for it without its parent, the topic's own definition, and it carries what its reader needs without its first context.
- Its role differs from its parent's. It follows another shape, or it changes for other reasons, as reader-ergonomics' one role per file asks.
- It would take its parent past three levels of headings. The outline stays shallow; the deeper part moves down a level of topics instead.
Otherwise it stays a section: a part cut from its context loses it, as translators of segmented content report (Batova 2014, through the document model review). The check reads files, so a section is never a topic.
- Grade: convention, untested, drawn from the rules above; no study measured when to split.
The check
checks/local/topic.py runs on every topic declared in checks/config.toml, at any depth:
| Rule | Kind |
|---|---|
| one title, and it opens the topic | error |
| a summary right after the title, or labelled within its first blocks | error |
the summary within summary_words |
warning |
| listed by its containing topic, so it can be reached from the root | error |
| listed with its summary, or by its declared type, not as a bare link | warning |
| no inclusion cycle | error |
Heading depth, links that resolve and the headings a shape requires are checked by reader-ergonomics itself.
See also
Shapes, the folder this shape heads; the evidence behind each rule.