Software with the Quality that Has No Name Federico Mena Quintero - - PowerPoint PPT Presentation

software with the quality that has no name
SMART_READER_LITE
LIVE PREVIEW

Software with the Quality that Has No Name Federico Mena Quintero - - PowerPoint PPT Presentation

Software with the Quality that Has No Name Federico Mena Quintero federico@gnome.org Desktop Summit, Berlin, Aug/2011 Our house in the middle of our street FIXME: before/after pictures 1994 1999 Christopher Alexander 1977 Intimacy


slide-1
SLIDE 1

Software with the Quality that Has No Name

Federico Mena Quintero federico@gnome.org

Desktop Summit, Berlin, Aug/2011

slide-2
SLIDE 2

Our house in the middle of our street

FIXME: before/after pictures

slide-3
SLIDE 3

1994 1999

slide-4
SLIDE 4

Christopher Alexander

slide-5
SLIDE 5
slide-6
SLIDE 6

1977

slide-7
SLIDE 7

Intimacy gradient

House Office

slide-8
SLIDE 8

Light on two sides

  • f every room

Wrinkle the building's edge

slide-9
SLIDE 9

Storage Garage

Indoor sunlight

Bedrooms Kitchen Breakfast nook Garden Porch Workshop Family rooms Morning sun Evening sun South-facing rooms

slide-10
SLIDE 10

Pattern name

  • Super-patterns
  • Statement of problem
  • Discussion
  • Summary of the solution
  • Sub-patterns
slide-11
SLIDE 11
  • Super-patterns: wings of light, positive outdoor

space, cascade of roofs

  • Statement of problem: People gravitate to well-lit

rooms.

  • Discussion:
  • Summary of the solution: Light on two sides; natural

light through the windows

  • Sub-patterns: Roof layout, windows overlooking life,

window place, filtered light

Light on two sides

  • f every room
slide-12
SLIDE 12

Light on two sides

  • f every room

Intimacy gradient Alcoves Window place Filtered light Positive outdoor space Cascade of roofs A room of one's own Common areas at the heart Half-private office Reception welcomes you Indoor sunlight Sleeping to the East

slide-13
SLIDE 13

Patterns do not give you a final form

slide-14
SLIDE 14

Patterns give you a vocabulary

Architecture Programming Alcove Factory Positive space Strategy Cascade of roofs Listener

slide-15
SLIDE 15

Pattern: Zooming

1.050 1.051 1.052 1.053 1.054

slide-16
SLIDE 16

The ticket booth

slide-17
SLIDE 17

Ticket booth

Purchase method Queue

  • f people

Shape of booth

slide-18
SLIDE 18
slide-19
SLIDE 19

The Quality Without A Name

slide-20
SLIDE 20

partition (array, left, right, pivot) { pivot_value = array[pivot]; swap (array, pivot, right); store = left; for (i = left; i < right; i++) { if (array[i] < pivot_value) { swap (array, i, store); store++; } } swap (array, store, right); return store; } quicksort (array, left, right) { if (left < right) { pivot = (left + right) / 2; new_pivot = partition (array, left, right, pivot); quicksort (array, left, new_pivot - 1); quicksort (array, new_pivot + 1, right); } }

slide-21
SLIDE 21

The Quality for Software

  • (According to Richard Gabriel)
  • It was not written to unrealistic deadline
  • Any bad parts were repaired during the maintenance or are being repaired now
  • If it is small, it was written by an extraordinary person, someone I would like as a

friend; if it is large, it was not designed by one person, but over time in a slow, careful, incremental way

  • If I look at any small part of it, I can see what is going on
  • If I look at any large part in overview, I can see what is going on
  • It is like a fractal, in which every level of details is as locally coherent and as well

thought as any other level

  • Every part of the code is transparently clear - there are no sections that are
  • bscure in order to gain efficiency
  • Everything about it seems to be familiar
  • I can imagine changing it, adding some functionality
  • I am not afraid of it, I will remember it
slide-22
SLIDE 22

2001-2004

slide-23
SLIDE 23

15 Properties of Living Structure

slide-24
SLIDE 24
slide-25
SLIDE 25
slide-26
SLIDE 26

The void

slide-27
SLIDE 27

The void Good shape

slide-28
SLIDE 28

The void Good shape Echoes

slide-29
SLIDE 29

The void Good shape Echoes Positive space

slide-30
SLIDE 30

The void Good shape Echoes Positive space Local symmetries

slide-31
SLIDE 31

The void Good shape Echoes Positive space Local symmetries Strong centers

slide-32
SLIDE 32

The void Good shape Echoes Positive space Local symmetries Strong centers Roughness

slide-33
SLIDE 33

The void Good shape Echoes Positive space Local symmetries Strong centers Roughness Alternating repetition

slide-34
SLIDE 34
slide-35
SLIDE 35

Negative space – amorphous leftovers Weak centers

slide-36
SLIDE 36

GIMP toolbar

Empty image Layers dialog

Negative space – amorphous leftovers Weak centers

slide-37
SLIDE 37

Positive space (convex, enclosed) Boundary Strong centers

slide-38
SLIDE 38

Inkscape menu/toolbar T

  • ol area

Drawing area

slide-39
SLIDE 39

Design as computation

slide-40
SLIDE 40

Stepwise: one step at a time

slide-41
SLIDE 41

Stepwise: one step at a time Reversible: test using models, prototypes, trial and error

slide-42
SLIDE 42

Stepwise: one step at a time Reversible: test using models, prototypes, trial and error Structure-preserving: each step builds on what is already there

slide-43
SLIDE 43

Stepwise: one step at a time Reversible: test using models, prototypes, trial and error Structure-preserving: each step builds on what is already there Design from weakness: each step improves coherence

slide-44
SLIDE 44

Stepwise: one step at a time Reversible: test using models, prototypes, trial and error Structure-preserving: each step builds on what is already there Design from weakness: each step improves coherence New from existing: emergent structure combines what is already there

slide-45
SLIDE 45

Structure- preserving transformations

slide-46
SLIDE 46

PhoneCall

A class

weak, latent center

slide-47
SLIDE 47

HalfCall HalfCall

Pattern: Half-object + Protocol

Local symmetry, strong center, levels of scale

slide-48
SLIDE 48

HalfCall HalfCall

What joins to what?

Local symmetry, levels of scale, boundaries, deep interlock and ambiguity

slide-49
SLIDE 49

HalfCall HalfCall Call

Explicit boundary

Local symmetry, deep interlock, and this is composable

slide-50
SLIDE 50

H a l f C a l l HalfCall HalfCall Call

Composable elements

Multi-way calls, conference calls

slide-51
SLIDE 51

Form languages

slide-52
SLIDE 52

Form language (Japan/China)

slide-53
SLIDE 53

Form language (Germany)

slide-54
SLIDE 54

Pattern language

slide-55
SLIDE 55

Pattern language Form language

slide-56
SLIDE 56

Pattern language Form language

slide-57
SLIDE 57

Pattern language Adaptive design method Form language

slide-58
SLIDE 58

Behavior- preserving transformations

slide-59
SLIDE 59

Move common code to function Strong center Boundary

slide-60
SLIDE 60

Move common code to function Strong center Boundary Add parameter to a function Roughness Non-separateness

slide-61
SLIDE 61

Move common code to function Strong center Boundary Add parameter to a function Roughness Non-separateness Replace parameter with explicit methods Strong centers Simplicity Non-separateness Deep ambiguity and interlock

slide-62
SLIDE 62

Delete a bunch of code The void Simplicity and inner calm

slide-63
SLIDE 63

Credits

  • Rob Hopkins – Picture of Christopher Alexander
  • Amazon.com – Book covers
  • Oxford University Press – diagrams from “A

Pattern Language”

  • Hobbit house -

http://www.tenchford.com/hobbit%20house.html

  • Other pictures – Flickr Creative Commons
  • Japan – Lennart Poettering
  • Process diagrams – Nikos Salingaros