Slide 1

Slide 1 text

Baltimore Drupalcon 2017 Pattern Language: Pattern Libraries in the Wild

Slide 2

Slide 2 text

Hi. Mark Llobrera Technology Director, Bluecadet Philadelphia @dirtystylus @bluecadet

Slide 3

Slide 3 text

Descriptive, Not Prescriptive I’m not telling you how to do this stuff. But I hope all of this helps.

Slide 4

Slide 4 text

BRIC bricartsmedia.org

Slide 5

Slide 5 text

Science Friday sciencefriday.com

Slide 6

Slide 6 text

Institute for Advanced Study ias.edu

Slide 7

Slide 7 text

Albright-Knox Art Gallery albrightknox.org

Slide 8

Slide 8 text

Patterns (Components) are a bit of Big Deal

Slide 9

Slide 9 text

Why?

Slide 10

Slide 10 text

Why? —We want to create visually interesting layouts that help support our content.

Slide 11

Slide 11 text

(And) —We want to reduce complexity —We want to encourage consistency —We want to support flexibility

Slide 12

Slide 12 text

We’ve got design techniques: —Style Tiles: styletil.es —Element Collages: v3.danielmall.com/articles/rif- element-collages/

Slide 13

Slide 13 text

We’ve got CMS structures to enable this: —Matrix (Expression Engine, Craft) —ACF FCF (WordPress) —Paragraphs (Drupal)

Slide 14

Slide 14 text

We’ve got Pattern Library frameworks Pattern Lab: patternlab.io Fractal: fractal.build (See styleguides.io for more.)

Slide 15

Slide 15 text

We’ve got an entire books on ways to do this: —Front-End Style Guides by Anna Debenham —Atomic Design by Brad Frost —Modular Web Design by Nathan Curtis

Slide 16

Slide 16 text

So What’s the Problem?

Slide 17

Slide 17 text

The Problem is Us. More specifically, humans. Even more specifically, language.

Slide 18

Slide 18 text

Small Goals If you can talk about specific things using the same words, you’ve accomplished something.

Slide 19

Slide 19 text

…we should start with language, not interfaces1 — Alla Kholmatova 1 “The Language of Modular Design” by Alla Kholmatova

Slide 20

Slide 20 text

—Establish consensus —Name modules (components) by function, not position

Slide 21

Slide 21 text

Do this together.

Slide 22

Slide 22 text

Multi-disciplinary teams —content person —designer —developer —(creative director)

Slide 23

Slide 23 text

Consensus > Best Laid Plans

Slide 24

Slide 24 text

Example: —“Billboard” vs “Promo” —“Callout” vs “House Ad” Sometimes you have to adopt language to move forward.

Slide 25

Slide 25 text

Liminal Spaces (In-between)

Slide 26

Slide 26 text

…when thinking about patterns, content strategists are primarily thinking about Content patterns,

Slide 27

Slide 27 text

designers are primarily thinking about Display patterns, and

Slide 28

Slide 28 text

front-end developers are responsible for bringing the two together.2 — Daniel Mall 2 “Content & Display Patterns” by Daniel Mall

Slide 29

Slide 29 text

Content Patterns —Words —Post-Its / notecards —With lots of tape —Helpful question: what does this need to be successful/complete?

Slide 30

Slide 30 text

This can get messy.

Slide 31

Slide 31 text

This can get messy.

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Display Patterns —Wires, usually —Low-res or high-res? Up to the designer —Combine design snippets with wires to run design/concept exploration on a parallel track

Slide 34

Slide 34 text

Problems with Doing This in Sequence —All the cards can be too abstract —Wires alone hide complexity —People absorb info differently. There’s a chicken/ egg problem.

Slide 35

Slide 35 text

Work in the middle —Mash your Content and Design Patterns together early

Slide 36

Slide 36 text

Cards and Wires

Slide 37

Slide 37 text

Cards and Wires

Slide 38

Slide 38 text

Derive Your Patterns

Slide 39

Slide 39 text

Derive Your Patterns

Slide 40

Slide 40 text

Work in the middle —Mash your Content and Design Patterns together early —Cut up your wireframes, and start stacking similar modules/components. That allows you to start seeing redundancy

Slide 41

Slide 41 text

Get Into the Browser Early

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Photo: Justin Grimes (https://www.flickr.com/photos/notbrucelee/5696237908/) CC BY-SA 2.0

Slide 45

Slide 45 text

Show Patterns in Context

Slide 46

Slide 46 text

—Have an opinion: is this visual pattern appropriate for this content type? —Situate your components in a scenario —If your collective team understands the small pattern, they also need to understand its interplay with other patterns —Build “Presets” for your client—can be in your documentation, can be unpublished nodes to clone in the CMS admin

Slide 47

Slide 47 text

Example Pattern Documentation

Slide 48

Slide 48 text

Pattern Index

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

Pattern Context

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

Template Combinations

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Combinations —Cards <—> Wires —Small Pattern <—> Collection of Patterns

Slide 55

Slide 55 text

Narrow the abstraction gap

Slide 56

Slide 56 text

Hooking up to the CMS

Slide 57

Slide 57 text

(Possibly) Helpful Translations —Content Pattern == Content Type or Paragraph Bundle —Display Pattern == template (tpl/twig) file —Collection == Page/Node/View template

Slide 58

Slide 58 text

Shortcodes drupal.org/project/shortcode Use this for WYSIWYG stuff that doesn’t have a ton of structure. —Pull Quotes —Tables —Lists —Images (L/R/C, Full-bleed)

Slide 59

Slide 59 text

WYSIWYG Style Preset

Slide 60

Slide 60 text

Paragraphs —drupal.org/project/paragraphs —We came in sideways via Matrix (Expression Engine, Craft) and ACF Flexible Content Field (WordPress) —I hate the name, but they are super useful —Structured data, with flexibility

Slide 61

Slide 61 text

Mapping to Paragraph Bundles

Slide 62

Slide 62 text

Example: Princeton Admission Flexible Grid

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

—Flex Grid Row: Full —Flex Grid Row: Half plus Half —Flex Grid Row: Half plus Quarter —Flex Grid Row: Quarter plus Half

Slide 65

Slide 65 text

—Flex Grid Column: Full Width Custom —Flex Grid Column: Full Width - Image Left —Flex Grid Column: Full Width - Image Right

Slide 66

Slide 66 text

—Flex Grid Column: Half Width - Split Image Left —Flex Grid Column: Half Width - Split Image Right —Flex Grid Column: Half Width - Image —Flex Grid Column: Half Width - Text —Flex Grid Column: Half Width Video Custom —Flex Grid Column: Half Width Custom —Flex Grid Column: Half Width News and Announcements

Slide 67

Slide 67 text

—Flex Grid Column: Quarter Width Custom —Flex Grid Column: Quarter - Image —Flex Grid Column: Quarter - Text

Slide 68

Slide 68 text

17(!!)

Slide 69

Slide 69 text

What can you do?

Slide 70

Slide 70 text

Building a Cake (Site) in Layers

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

No content

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

Building a Cake (Site) in Slices

Slide 77

Slide 77 text

No content

Slide 78

Slide 78 text

No content

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

No content

Slide 81

Slide 81 text

No content

Slide 82

Slide 82 text

No content

Slide 83

Slide 83 text

No content

Slide 84

Slide 84 text

No content

Slide 85

Slide 85 text

Give the Complexity Time to Settle In

Slide 86

Slide 86 text

Focused Practice

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

Next Steps/Hopes and Dreams —Getting context into the CMS authoring environment —Follow Eileen Webb’s work (@webmeadow) on Authoring Experience (AX)

Slide 89

Slide 89 text

twitter.com/webmeadow/status/ 809074672012660736

Slide 90

Slide 90 text

No content

Slide 91

Slide 91 text

Holy Grail —Style Guide -> CMS -> Style Guide —Visual, contextual cues in edit form

Slide 92

Slide 92 text

To Recap —Start with language —Work in the middle/narrow the abstraction gap —Show things in context —Build in slices—get your client focused practice in their CMS

Slide 93

Slide 93 text

Thank you.

Slide 94

Slide 94 text

Join Us for Contribution Sprints

Slide 95

Slide 95 text

First-Time Sprinter Workshop: 9:00am-12:00pm, Room: 307-308 Mentored Core Sprint: 9:00am-12:00pm, Room: 301-303 General Sprints: 9:00am-6:00pm, Room: 309-310

Slide 96

Slide 96 text

Mark Llobrera Technology Director, Bluecadet Philadelphia @dirtystylus @bluecadet https://events.drupal.org/node/17514