React Distros

and The Deployment Age of JavaScript Frameworks

James K Nelson raised an interesting point recently:

So Mr. Abramov has been telling us #reactjs is a UI runtime. To me, that sounds like React is a kernel. Webpack/Create React App are bootloaders. Next.js and Gatsby are the closest things we've got to distros. I think we need more distros.

In case you, like me, weren't sure what bootloaders are, Google says a "Bootloader is a piece of code that runs before any operating system is running. Bootloader are used to boot other operating systems, usually each operating system has a set of bootloaders specific for it". I guess Webpack's runtime is that, but it is also a compiling mechanism from, well, /src to /dist .

Anyway, the analogy rings true. I'd like to expand on it a little.

The Carlota Perez Framework 🔗 The VC world is particularly enamored with The Carlota Perez Framework right now. Both Fred Wilson and Marc Andreesen love it, and Ben Thompson, Benedict Evans and Tuur Demeester have extended it to BigTech, Smartphones, and Cryptocurrency recently. People love dissing techbros as reinventing things every 10 years in an endless and meaningless cycle. But in reality the real Megatrends often take on a different shape. The X axis takes place on the order of 20-50 years, and the Y axis is % of population penetration. This has played out repeatedly in the past century and adoption is accelerating as we get better at distribution: The basic idea is that there is an initial innovation, then a "frenzy" of competing technologies with massive growth, then a turning point comes where the technology reaches synergy and maturity (often compared to the "late majority" and "laggards" group from Everett Rogers). The concerns of the Installation Age are growth and innovation, often resulting in creative destruction (read: massive churn). The concerns of the Deployment Age are stability and addressing the needs of later, often larger, market segments. In the former, hobbyists and speculators rule, and things are often simpler. In the latter, the suits take over, and a lot of time is spent over the nitty gritty details.

The Deployment Age of JavaScript Frameworks 🔗 I think the turning point for JS Frameworks began a year or two ago. We no longer have a new frontend framework every month. React has been on top of Hacker News Job Board for 31 months. But it isn't just React - Vue and Angular both have found very stable adoption among sizable companies who are not going to migrate anytime soon. The Deployment Age has led to the rise of metaframeworks - frameworks built around frameworks to literally address deployment concerns the original frameworks were not designed for. React has Next.js and Gatsby, Vue has Nuxt.js and Gridsome, Svelte has Sapper, and Angular even got Scully recently. In most cases, the frameworks were designed for taking control of a single DOM element and managing a tree of dynamic elements in it, and their metaframework extends that to cover the entire site/app, including routing and static/server side rendering. I always liken metaframeworks to the Hulkbuster armor wrapping around the Iron Man suit, because they are heavier but more powerful, but also because I'm a massive Marvel nerd.

React Distros for Toolmakers 🔗 Why should only app makers get React Distros? I first made friends with Travis Fischer through discovering create-react-library. I also help maintain TSDX, a toolchain for building React + TypeScript libraries like Formik. As we start being able to bet on a stable foundation in the Deployment Phase, we can start making tools to help us make tools.