Which patterns does Homemaker score?

Related tools links to apl-companion for browsing all 253 patterns in A Pattern Language. Homemaker doesn’t implement anywhere near all of them as fitness criteria — turning a pattern into something a computer can score is real, one-at-a-time work, and it’s worth being honest about which patterns have actually had that work done to them, rather than letting “uses A Pattern Language” imply more completeness than exists.

How a pattern becomes a number

The fitness calculation works room by room before it works on a building as a whole. For each room, the relevant patterns are each scored from 0 to 1, and those scores are multiplied together and then by the room’s floor area to give a room score. Room scores are summed across the building, then multiplied again by the patterns that apply to the whole building rather than any one room. That total is finally divided by a separate materials-cost calculation, so the reported fitness is a ratio: value delivered per unit of material spent. Bruno’s own assessment of this formula, worth keeping in mind before treating any of it as settled theory: “I have no evidence that this is the right way to do it other than that in some way I am maximising size and quality, and minimising costs.”

A snapshot, not an inventory

At one point in the project’s history, an actual audit was done of which patterns had been implemented and which hadn’t. It’s worth reproducing in full, because it’s a genuinely rare thing — most software doesn’t come with an honest list of which parts of its own stated theory it hasn’t gotten around to yet.

Some patterns aren’t scored individually at all — they’re baked directly into the geometry every building is built from, since everything in Homemaker is nested quadrilateral spaces with variable heights:

106 POSITIVE OUTDOOR SPACE, 190 CEILING HEIGHT VARIETY, 191 THE SHAPE OF INDOOR SPACE, 197 THICK WALLS, 205 STRUCTURE FOLLOWS SOCIAL SPACES

Some are evaluated once, at the scale of the whole building:

96 NUMBER OF STORIES, 112 ENTRANCE TRANSITION, 118 ROOF GARDEN, 122 BUILDING FRONTS, 127 INTIMACY GRADIENT, 129 COMMON AREAS AT THE HEART, 131 THE FLOW THROUGH ROOMS, 160 BUILDING EDGE, 195 STAIRCASE VOLUME

— with 127 and 129 noted, at the time, as somewhat broken and needing to be fixed and integrated with two unimplemented neighbours, 114 HIERARCHY OF OPEN SPACE and 115 COURTYARDS WHICH LIVE.

Most patterns are evaluated per room, as many times as there are rooms to check:

105 SOUTH FACING OUTDOORS, 107 WINGS OF LIGHT, 109 LONG THIN HOUSE, 132 SHORT PASSAGES, 128 INDOOR SUNLIGHT, 139 FARMHOUSE KITCHEN, 159 LIGHT ON TWO SIDES OF EVERY ROOM, 162 NORTH FACE, 163 OUTDOOR ROOM, 167 SIX-FOOT BALCONY

A further group was judged feasible but not yet attempted, ranging from easy to harder:

111 HALF-HIDDEN GARDEN, 113 CAR CONNECTION, 130 ENTRANCE ROOM, 138 SLEEPING TO THE EAST, 140 PRIVATE TERRACE ON THE STREET, 141 A ROOM OF ONE’S OWN, 144 BATHING ROOM, 145 BULK STORAGE, 189 DRESSING ROOM, 199 SUNNY COUNTER

A few patterns don’t need to be part of the evolutionary search at all — they’re applied afterward, as procedural rules once a layout is settled:

164 STREET WINDOWS, 196 CORNER DOORS, 211 THICKENING THE OUTER WALLS, 221 NATURAL DOORS AND WINDOWS, 222 LOW SILL, 223 DEEP REVEALS

Two had been implemented and then broke:

110 MAIN ENTRANCE, 173 GARDEN WALL

And the rest were, at the time, still future work:

134 ZEN VIEW, 133 STAIRCASE AS A STAGE, 135 TAPESTRY OF LIGHT AND DARK, 161 SUNNY PLACE, 192 WINDOWS OVERLOOKING LIFE, 193 HALF-OPEN WALL, 194 INTERIOR WINDOWS, 198 CLOSETS BETWEEN ROOMS, 241 SEAT SPOTS, 242 FRONT DOOR BENCH, 243 SITTING WALL

This list is already wrong, on purpose

Take that last group. 161 SUNNY PLACE is listed there as future work — and it isn’t any more: the current source has scored it since (lib/Urb/Dom/Fitness/Leaf.pm), one pattern among a handful that still carry their number in a code comment. That’s not a mistake in the audit above; it’s what a living codebase does to any snapshot of itself, and it’s exactly why the snapshot is worth dating rather than presenting as a current inventory. A genuinely up-to-date version of this list would mean going through the fitness code pattern by pattern again, the way the original audit did — that hasn’t been attempted here, and the honest thing to do with an old, partially-superseded list is say so rather than quietly pass it off as current.

Creative Commons License

© 2026 Bruno Postle (mail: bruno at postle dot net). This work is licensed under a Creative Commons Attribution 3.0 Unported License.