Jamstack is meaningless

Bryan Robinson - Sep 8 '23 - - Dev Community

Right at the top, let’s say what’s in the title… The name Jamstack is meaningless… but then again, so is MACH … and composable… and headless… and Developer experience… and serverless…, but also, they’re all hugely important

Meaningless and hugely important seem to be almost diametrically opposed, so let me take a step back and explain

I’ll start where all good tech thought leadership should start: With the works of Ludwig Wittgenstein.

Who is Wittgenstein and why do I care?

Wittgenstein was an Austrian philosopher of the early 20th century. His primary focuses were logic and philosophies of language and the mind. He had only one book published during his life: Tractatus Logico-Philosophicus.

The Tractatus is a collection of 525 declarative statements that seems to try to solve both philosophy and language. needless to say, we’re not going to dive into all those, we’re going to focus on one interesting statement made near the end of the work.

Often referred to as “Wittgenstein’s ladder” proposition 6.54 says the following

“My propositions serve as elucidations in the following way: anyone who understands me eventually recognizes them as nonsensical, when he has used them—as steps—to climb beyond them. (He must, so to speak, throw away the ladder after he has climbed up it.)

He must transcend these propositions, and then he will see the world aright.”

In other words, as you read and understand the work of the Tractatus, you realize the words and propositions you’ve read are meaningless, despite allowing you to attain a new level of understanding: a ladder to be kicked away after you’ve climbed it

And that’s where we come back to our technologies.

I’ve been professionally working on the web since 2006 and building on the web since well before that. I’ve seen the eras of the web. They’re all marked by their own best practices and nomenclature. Marked by their own frameworks, both mental and code.

I started with pure HTML. I grew into proto-static site generators like movable type. I got HYPED for WordPress. Got Hyped again for Django. Full-stack frameworks, frontend frameworks, static sites, object-oriented programming, test-driven development, domain-driven development, LAMP stack, headless… JAMstack…no, i mean Jamstack.

All these terms. All this language. It’s representational of ideas of how to build sites or apps or software. They describe process. They give categorization. They build mental models. They all have common communication. They allow humans to understand technology, and humans to understand each other. And once a person (or industry) understands what the term is representing and transcends the terms to “see the world aright,” then those terms become meaningless. They have served their purpose and can be kicked away.

That’s maybe where we stand with the Jamstack.

The term and technologies caused a small revolution, but perhaps that term has served its purpose and now we all think of it as meaningless.

Let’s take a quick aside and exam the path the Jamstack has gone through as a term and trend.

Jamstack origins

We’ll start with something that, in hindsight is obvious: Jamstack is a marketing term cooked up by the folks at Netlify. Mat Biilman, co-founder of Netlify gave a talk at SmashingConf in 2016 (2016 was 7 years ago.. god I’m old…). Netlify was betting on the new architecture that was starting to spring up around the industry. What started as Static sites with generators like Jekyll, but went beyond “static”.

They had to find a way to make static sites cool. Make them seem more than what the term static implies. Mat goes so far in the presentation to say that the word static is a bad word since the experiences we created with these tools could be incredibly dynamic.

The term comes from an industry convention of naming our “technology stacks” using an acronym to describe each piece of the technology. The most famous of these at the time would have been the LAMP stack. This stood for Linux the OS, Apache, the web server, MySQL, the database, and PHP, the server-side language. There wasn’t a singular analog in the world of static sites.

You could host your HTML wherever. Your data could just be markdown or pulled from postgres… or mongo db or mysql. The underlying technologies mattered less. But how you added interactivity was JavaScript and APIs and the initial page load was just Markup. JavaScript, APIs, and Markup. JAM.

This sort of work was already in the zeitgeist. React and Vue had hit their first real stride. People saw how interactive the web could be and how the tools made that easier. This was already happening, but naming the movement made things catch faster and helped rally more folks to the cause.

In many ways, this was an instance where culture changed the language, but then language helped change the culture. We had our ladder to help people climb to this new level of architecture.

But because the JAM of the Jamstack could be nearly anything, the freeform nature of the name meant people brought their own understandings

Language games: Definitions matter

Permit me another philosophical moment. Wittgenstein’s second published work (published after his death) dealt again with language. In the book, Philosophical Investigations, he explores the idea of language as a game and how the context of language is as important as syntax and vocabulary.

Imagine, he argues, you hear the utterance “Water!” what this means is dependent on the context. It could be an order, as in “Fetch me water,” an answer to a question, “Yes, that is a cup of water,” or perhaps an exclamation of relief to a parched person. We can’t know without a common context.

In the same way, we need comprehensive definitions to avoid miscommunications.

For over two years, I ran a podcast called That’s My Jamstack. on the podcast, we talked about various technologies, and I would ask people what their entry point was into the ecosystem and their favorite parts (what was their jam in the jamstack). This always elicited interesting conversations, but I noticed (especially through the first year of hosting) that the Jamstack typically fell into two different camps… both thinking of what they were doing as the Jamstack, often with little thought to the other methodology.

One camp pre-rendered their HTML via generators like Jekyll, Hugo and 11ty. The other camp took the JavaScript of the JAM stack to whole new levels and rendered everything via client-side JS with the top framework of the time: Gatsby. Sending a simple HTML wrapper over the wire and hydrating the rest via the client JS. Now, near what is being considered the end of the Jamstack era, we’ve got new technologies that have been grouped in: server-rendered (maybe more precisely “serverless-rendered) pages. Next.js, with their adoption of React Server Components, is at the forefront of this. It’s definitely a fun way of developing, but in the waning moments of the Jamstack movement, it has ALSO been considered Jamstack.

Can you believe it? This is often a server-rendered application (albeit with great caching and some really great affordances to prerender when possible), and it’s considered Jamstack. In fact, beyond that, in 2022’s Jamstack survey, there are data points for RedwoodJS and Remix. Both amazing tools. Neither would be what I would consider “Jamstack” personally. Except… there they both are.

And that’s because… well the definition has never really been set in stone (even with a definition listed on jamstack.org), and it’s been ever changing (did you know the definition on jamstack.org changed?).

In this way, Jamstack has often been “Water!” from our earlier language game. It changes based on context, the people involved, the use case… and much much more.

The Discourse: The Jamstack is dead

With recent developments coming from Netlify (such as the shutting down of the Jamstack Discord community) and companies like Vercel doubling down on Next’s next iteration, the discourse has of course turned back to the term Jamstack. Is it helpful? Will it continue to exist? Is it dead? Is it toast?

The general consensus has been that it doesn’t matter. Whether that’s been in thevein of “it’s served its purpose” or “did it ever really matter?” what we see is that these terms are incredibly fluid.

I’d add to the discourse that while the Jamstack may be dead (and I truly mourn for that), these concepts must remain.

The problem is that without a word or a flag or a rallying cry, these systems and setups will drift further apart. We’ve already seen that as “Composability” becomes the next big rallying cry. When you’re more interested in the systems that tie things together, the implementation details can become more varied. We’ll get more server-side rendering; we’ll get more static site generation; we’ll get more islands architecture. As we get all those, the overall naming convention for “modern web practices” will slip away, and the community that was found may also.

I still might argue that the term Jamstack should have a place in our nomenclature, but maybe that place should be closer to its roots: static sites with interactivity brought in via small amounts of serverless functions and small amounts of front-end JavaScript.

That won’t happen, of course. The Jamstack term was coined by Netlify, and as Netlify shifts toward its next horizon of composability and enterprise, the term will set over the horizon behind them.

But it certainly would be nice.

Additional reading

In the time since I started writing this, there have been a lot of great articles near this subject. Here are a few of my favorites:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .