July 20–24, 2015
Portland, OR

A general theory of reactivity

Kris Kowal (Uber)
5:00pm–5:40pm Wednesday, 07/22/2015
Foundations D135/136
Average rating: ****.
(4.00, 14 ratings)
Slides:   1-PDF    external link,   external link

Prerequisite Knowledge

Experience with event driven programming with one or more techniques including promises, streams, coroutines, or a flavor of reactive programming will be helpful to appreciate bridging the gap between these concepts.


Draw a sample from the cacophony: “Everything is just a stream.” “A promise is just an observable.” “A value is just an array of length one.” “There are no silver bullets.” “Why can’t we all just get along?”

It is only logical that we all get along. In this talk I will explain a General Theory of Reactivity, which will train you how to choose the right asynchronous tool for the job, covering Streams, Promises, Tasks, Futures, Observables, and more.

Each of these primitives is distinguished by whether it is broadcast or unicast, pushable or pullable, discrete or continuous. All objects that model temporal behavior have analogues with spatial behavior, and some combine both.

Furthermore, each of these concepts is becoming integral to the JavaScript language or the web platform. What makes each of these types similar and what makes each of them distinct is the key to weaving them into a cohesive whole.


Photo of Kris Kowal

Kris Kowal


Kris Kowal wrote the CommonJS modules specification and the first package.json. Through that work he was introduced to promises by Mark Miller and brought the Q library to popular attention, which has had a hand in shaping JavaScript promises. Kris is also an aficionado of J.R.R. Tolkien’s Elvish languages and produced an online map of Middle-earth, 3rin.gs.