# How a meme goes viral

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0kpctr0002jn06fmoqc7zx
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 28 steps across 3 layers
- Persona: The creator, The crowd, Brands and media
- Technology / systems: The platform's algorithm, Your feed

## Pain points

Where this process hurts, worst first:

- **Saturation: everyone has seen it** (How a meme goes viral; painful): By now nobody remembers where it started

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## How a meme goes viral

Lanes:
- The creator: person / role (id `creator`)
- The platform's algorithm: technology / system (id `algo`)
- The crowd: person / role (id `crowd`)
- Brands and media: person / role (id `brand`)
- Your feed: technology / system (id `feed`)

Steps, in the order they run:

1. **Someone posts a joke, clip or image** [start; The creator; id `m1`]
   - then The algorithm tests it on a small group
2. **The algorithm tests it on a small group** [subprocess; The platform's algorithm; id `m2`], opens the detail layer "The algorithm tests it"
   - then Do people react fast: likes, shares, rewatches?
3. **Do people react fast: likes, shares, rewatches?** [decision; The platform's algorithm; id `m3`]
   - if "Yes" go to Shown to a bigger group; if "No" go to It sinks without a trace, like most posts
4. **Shown to a bigger group** [task; The platform's algorithm; id `m4`]
   - then People remix it with new captions, edits and sounds
5. **People remix it with new captions, edits and sounds** [subprocess; The crowd; id `m5`], opens the detail layer "The remix machine"
   - then It is pushed into trending and recommendations
6. **It is pushed into trending and recommendations** [task; The platform's algorithm; id `m6`]
   - then It shows up on your page again and again
7. **It shows up on your page again and again** [task; Your feed; id `m7`]
   - then Brands and news outlets jump in
8. **Brands and news outlets jump in** [task; Brands and media; id `m8`]
   - then Does the joke still land?
9. **Does the joke still land?** [decision; Brands and media; id `m9`]
   - if "Yes" go to Saturation: everyone has seen it; if "No" go to "How do you do, fellow kids?" The crowd mocks the attempt
10. **Saturation: everyone has seen it** [task; The crowd; id `m10`] ⚠ PAIN POINT (painful): By now nobody remembers where it started
   - then Did it become part of the culture?
11. **Did it become part of the culture?** [decision; The crowd; id `m11`]
   - if "Yes" go to It turns into a classic reference people still use; if "No" go to It fades into a "remember that?" post
12. **It turns into a classic reference people still use** [end; The crowd; id `m12`]
13. **It fades into a "remember that?" post** [end; The crowd; id `m13`]
14. **"How do you do, fellow kids?" The crowd mocks the attempt** [task; The crowd; id `m9a`]
   - then The cringe becomes the new meme
15. **The cringe becomes the new meme** [task; The crowd; id `m9b`]
   - then Saturation: everyone has seen it
16. **It sinks without a trace, like most posts** [end; The crowd; id `m3a`]

```mermaid
flowchart LR
  subgraph l_creator["The creator"]
    n_m1(["Someone posts a joke, clip or image"])
  end
  subgraph l_algo["The platform's algorithm"]
    n_m2[["The algorithm tests it on a small group"]]
    n_m3{"Do people react fast: likes, shares, rewatches?"}
    n_m4["Shown to a bigger group"]
    n_m6["It is pushed into trending and recommendations"]
  end
  subgraph l_crowd["The crowd"]
    n_m3a(["It sinks without a trace, like most posts"])
    n_m5[["People remix it with new captions, edits and sounds"]]
    n_m9a["'How do you do, fellow kids?' The crowd mocks the attempt"]
    n_m9b["The cringe becomes the new meme"]
    n_m10["Saturation: everyone has seen it"]
    n_m11{"Did it become part of the culture?"}
    n_m12(["It turns into a classic reference people still use"])
    n_m13(["It fades into a 'remember that?' post"])
  end
  subgraph l_brand["Brands and media"]
    n_m8["Brands and news outlets jump in"]
    n_m9{"Does the joke still land?"}
  end
  subgraph l_feed["Your feed"]
    n_m7["It shows up on your page again and again"]
  end
  n_m1 --> n_m2
  n_m2 --> n_m3
  n_m3 -->|"Yes"| n_m4
  n_m3 -->|"No"| n_m3a
  n_m4 --> n_m5
  n_m5 --> n_m6
  n_m6 --> n_m7
  n_m7 --> n_m8
  n_m8 --> n_m9
  n_m9 -->|"Yes"| n_m10
  n_m9 -->|"No"| n_m9a
  n_m9a --> n_m9b
  n_m9b --> n_m10
  n_m10 --> n_m11
  n_m11 -->|"Yes"| n_m12
  n_m11 -->|"No"| n_m13
```

### The algorithm tests it (detail of step "The algorithm tests it on a small group")

Lanes:
- The platform's algorithm: technology / system (id `algo`)
- The crowd: person / role (id `crowd`)

Steps, in the order they run:

1. **Show it to about 200 people** [start; The platform's algorithm; id `t1`]
   - then Measure watch time, shares and comments
2. **Measure watch time, shares and comments** [task; The platform's algorithm; id `t2`]
   - then Better than the average post?
3. **Better than the average post?** [decision; The platform's algorithm; id `t3`]
   - if "Yes" go to Show it to ten times as many people; if "No" go to Stop pushing it
4. **Show it to ten times as many people** [task; The platform's algorithm; id `t4`]
   - then Reached a very large audience?
5. **Reached a very large audience?** [decision; The platform's algorithm; id `t4b`]
   - if "Yes" go to Hand it to the trending system; if "No — keep measuring" go to Measure watch time, shares and comments
6. **Hand it to the trending system** [end; The platform's algorithm; id `t6`]
7. **Stop pushing it** [end; The platform's algorithm; id `t5`]

```mermaid
flowchart LR
  subgraph l_algo["The platform's algorithm"]
    n_t1(["Show it to about 200 people"])
    n_t2["Measure watch time, shares and comments"]
    n_t3{"Better than the average post?"}
    n_t4["Show it to ten times as many people"]
    n_t4b{"Reached a very large audience?"}
    n_t6(["Hand it to the trending system"])
    n_t5(["Stop pushing it"])
  end
  n_t1 --> n_t2
  n_t2 --> n_t3
  n_t3 -->|"Yes"| n_t4
  n_t3 -->|"No"| n_t5
  n_t4 --> n_t4b
  n_t4b -->|"Yes"| n_t6
  n_t4b -->|"No — keep measuring"| n_t2
```

### The remix machine (detail of step "People remix it with new captions, edits and sounds")

Lanes:
- The crowd: person / role (id `crowd`)

Steps, in the order they run:

1. **The original template** [start; The crowd; id `r1`]
   - then Someone swaps in a new subject
2. **Someone swaps in a new subject** [task; The crowd; id `r2`]
   - then Funnier or more relatable than the original?
3. **Funnier or more relatable than the original?** [decision; The crowd; id `r3`]
   - if "Yes" go to It gets remixed again; if "No" go to Forgotten
4. **It gets remixed again** [task; The crowd; id `r4`]
   - then Someone swaps in a new subject
5. **Forgotten** [end; The crowd; id `r5`]

```mermaid
flowchart LR
  subgraph l_crowd["The crowd"]
    n_r1(["The original template"])
    n_r2["Someone swaps in a new subject"]
    n_r3{"Funnier or more relatable than the original?"}
    n_r4["It gets remixed again"]
    n_r5(["Forgotten"])
  end
  n_r1 --> n_r2
  n_r2 --> n_r3
  n_r3 -->|"Yes"| n_r4
  n_r3 -->|"No"| n_r5
  n_r4 --> n_r2
```

## Full data (JSON)

```json
{
  "title": "How a meme goes viral",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "creator",
          "name": "The creator",
          "type": "person"
        },
        {
          "id": "algo",
          "name": "The platform's algorithm",
          "type": "system"
        },
        {
          "id": "crowd",
          "name": "The crowd",
          "type": "person"
        },
        {
          "id": "brand",
          "name": "Brands and media",
          "type": "person"
        },
        {
          "id": "feed",
          "name": "Your feed",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "m1",
          "kind": "start",
          "lane": "creator",
          "next": [
            {
              "to": "m2"
            }
          ],
          "uses": [],
          "label": "Someone posts a joke, clip or image"
        },
        {
          "id": "m2",
          "kind": "subprocess",
          "lane": "algo",
          "next": [
            {
              "to": "m3"
            }
          ],
          "uses": [],
          "child": "m_test",
          "label": "The algorithm tests it on a small group"
        },
        {
          "id": "m3",
          "kind": "decision",
          "lane": "algo",
          "next": [
            {
              "to": "m4",
              "label": "Yes"
            },
            {
              "to": "m3a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Do people react fast: likes, shares, rewatches?"
        },
        {
          "id": "m3a",
          "kind": "end",
          "lane": "crowd",
          "next": [],
          "uses": [],
          "label": "It sinks without a trace, like most posts"
        },
        {
          "id": "m4",
          "kind": "task",
          "lane": "algo",
          "next": [
            {
              "to": "m5"
            }
          ],
          "uses": [],
          "label": "Shown to a bigger group"
        },
        {
          "id": "m5",
          "kind": "subprocess",
          "lane": "crowd",
          "next": [
            {
              "to": "m6"
            }
          ],
          "uses": [],
          "child": "m_remix",
          "label": "People remix it with new captions, edits and sounds"
        },
        {
          "id": "m6",
          "kind": "task",
          "lane": "algo",
          "next": [
            {
              "to": "m7"
            }
          ],
          "uses": [],
          "label": "It is pushed into trending and recommendations"
        },
        {
          "id": "m7",
          "kind": "task",
          "lane": "feed",
          "next": [
            {
              "to": "m8"
            }
          ],
          "uses": [],
          "label": "It shows up on your page again and again"
        },
        {
          "id": "m8",
          "kind": "task",
          "lane": "brand",
          "next": [
            {
              "to": "m9"
            }
          ],
          "uses": [],
          "label": "Brands and news outlets jump in"
        },
        {
          "id": "m9",
          "kind": "decision",
          "lane": "brand",
          "next": [
            {
              "to": "m10",
              "label": "Yes"
            },
            {
              "to": "m9a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does the joke still land?"
        },
        {
          "id": "m9a",
          "kind": "task",
          "lane": "crowd",
          "next": [
            {
              "to": "m9b"
            }
          ],
          "uses": [],
          "label": "\"How do you do, fellow kids?\" The crowd mocks the attempt"
        },
        {
          "id": "m9b",
          "kind": "task",
          "lane": "crowd",
          "next": [
            {
              "to": "m10"
            }
          ],
          "uses": [],
          "label": "The cringe becomes the new meme"
        },
        {
          "id": "m10",
          "kind": "task",
          "lane": "crowd",
          "next": [
            {
              "to": "m11"
            }
          ],
          "pain": {
            "note": "By now nobody remembers where it started",
            "level": 2
          },
          "uses": [],
          "label": "Saturation: everyone has seen it"
        },
        {
          "id": "m11",
          "kind": "decision",
          "lane": "crowd",
          "next": [
            {
              "to": "m12",
              "label": "Yes"
            },
            {
              "to": "m13",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Did it become part of the culture?"
        },
        {
          "id": "m12",
          "kind": "end",
          "lane": "crowd",
          "next": [],
          "uses": [],
          "label": "It turns into a classic reference people still use"
        },
        {
          "id": "m13",
          "kind": "end",
          "lane": "crowd",
          "next": [],
          "uses": [],
          "label": "It fades into a \"remember that?\" post"
        }
      ],
      "title": "How a meme goes viral",
      "parent": null
    },
    "m_test": {
      "id": "m_test",
      "lanes": [
        {
          "id": "algo",
          "name": "The platform's algorithm",
          "type": "system"
        },
        {
          "id": "crowd",
          "name": "The crowd",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "t1",
          "kind": "start",
          "lane": "algo",
          "next": [
            {
              "to": "t2"
            }
          ],
          "uses": [],
          "label": "Show it to about 200 people"
        },
        {
          "id": "t2",
          "kind": "task",
          "lane": "algo",
          "next": [
            {
              "to": "t3"
            }
          ],
          "uses": [],
          "label": "Measure watch time, shares and comments"
        },
        {
          "id": "t3",
          "kind": "decision",
          "lane": "algo",
          "next": [
            {
              "to": "t4",
              "label": "Yes"
            },
            {
              "to": "t5",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Better than the average post?"
        },
        {
          "id": "t4",
          "kind": "task",
          "lane": "algo",
          "next": [
            {
              "to": "t4b"
            }
          ],
          "uses": [],
          "label": "Show it to ten times as many people"
        },
        {
          "id": "t4b",
          "kind": "decision",
          "lane": "algo",
          "next": [
            {
              "to": "t6",
              "label": "Yes"
            },
            {
              "to": "t2",
              "label": "No — keep measuring"
            }
          ],
          "uses": [],
          "label": "Reached a very large audience?"
        },
        {
          "id": "t6",
          "kind": "end",
          "lane": "algo",
          "next": [],
          "uses": [],
          "label": "Hand it to the trending system"
        },
        {
          "id": "t5",
          "kind": "end",
          "lane": "algo",
          "next": [],
          "uses": [],
          "label": "Stop pushing it"
        }
      ],
      "title": "The algorithm tests it",
      "parent": {
        "map": "m_root",
        "step": "m2"
      }
    },
    "m_remix": {
      "id": "m_remix",
      "lanes": [
        {
          "id": "crowd",
          "name": "The crowd",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "r1",
          "kind": "start",
          "lane": "crowd",
          "next": [
            {
              "to": "r2"
            }
          ],
          "uses": [],
          "label": "The original template"
        },
        {
          "id": "r2",
          "kind": "task",
          "lane": "crowd",
          "next": [
            {
              "to": "r3"
            }
          ],
          "uses": [],
          "label": "Someone swaps in a new subject"
        },
        {
          "id": "r3",
          "kind": "decision",
          "lane": "crowd",
          "next": [
            {
              "to": "r4",
              "label": "Yes"
            },
            {
              "to": "r5",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Funnier or more relatable than the original?"
        },
        {
          "id": "r4",
          "kind": "task",
          "lane": "crowd",
          "next": [
            {
              "to": "r2"
            }
          ],
          "uses": [],
          "label": "It gets remixed again"
        },
        {
          "id": "r5",
          "kind": "end",
          "lane": "crowd",
          "next": [],
          "uses": [],
          "label": "Forgotten"
        }
      ],
      "title": "The remix machine",
      "parent": {
        "map": "m_root",
        "step": "m5"
      }
    }
  }
}
```
