Prototype pattern in creator tools

The open-ended flexibility of Prototype Pattern has been discovered in a lot modern productivity tools for creators, such as Roam Research and Figma.

Roam Research

Conor tweeted about Javascript’s prototypical inheritance. He mentioned a wonderful post from Steve Yegge. In this post, Steve Yegge nominates Prototype Pattern “The Universal” design pattern.

The block reference achieves prototypical inheritance at a text-processing level: when you rebuild/reshape a new idea using existing blocks, you can simply copy their references as well as their sub-bullets under the new block.

Besides the the block refs(pointers) to their ancestors, you can also drop your own words as new properties. All the inherited and the added properties help you to model the upper level concept.

Not simple text manipulation, but modeling technique!

Steve cited Douglas Hofstadter’s compelling argument in GEB, which explains Prototype Pattern is fundamental to the way our brains work.

He paraphrases a simple example: how the announcers comment on a new rookie player in an NFL game. The example is very helpful to understand the essence behind prototype-based modeling:

The most specific event can serve as a general example of a class of events.

Each block in Roam Research, no matter how specific it is, can be used to represent other concept. It can be either a fleeting note or a permanent note.

There is generality in the specific.

I elaborate Steve Yegge’s example using block reference(a more proper version should use “Attribute” but I did not).

L.T. is an “instance” of Emmitt Smith: he just inherited all of Emmitt’s properties.


Before Roam carries out its template feature. Romans] already take advantage of block references to achieve that purpose. From a programming perspective, templating is just one-level prototypical inheritance. So folk told him not to introduce template features.


Components in Figma is a perfect interpretation of the open-ended flexibility of “prototype modeling”, which is fundamental to the way our brains work.

Rusmus Anderson once said it was his most impactful innovation at Figma.


There’s something that I don’t fully get here.

I mean, the economies you make when you say “L.T is an instance of Emmitt Smith” are great: You compress the message by referencing existing common knowledge as you imagine it. AND, you also get to define your new thing with a fuzzy boundary, that’s easier to draw than a detailed boundary.

But, I think it’s also true that once you say “L.T is an instance of Emmitt Smith” then, what happens when you modify you understanding of Emmitt Smith? What it that no longer holds?

This is more like an open ended question, regarding the use of this “prototype pattern” in tools for thought.