Matt Mullenweg Clarifies Jamstack Remarks

Two weeks ago, Matt Mullenweg made some pointed remarks in an article from The New Stack, calling Jamstack “a regression for the vast majority of the people adopting it.” In preparation for an upcoming article that will include comments from leaders across both the WordPress and Jamstack communities, I asked Mullenweg if he stands by his remarks characterizing Jamstack as a regression. His response was lengthy and is printed here in its entirety to preserve cohesion.

Q: Do you stand by your remarks that Jamstack is a regression for the vast majority of the people adopting it?

Answer:

“Vast majority of people adopting it” was probably too harsh, because there isn’t a vast number of people adopting Jamstack in the first place, and those who do are probably fully aware of the tradeoffs. There are some good reasons, for certain situations, to decouple and add complexity to your architecture, and WordPress’ REST API works fantastically as a backend there. But I worry they are over-selling the promise of what’s really an architectural decision. If you look at the benefits they purport, it’s better performance, security, scaling, and developer experience:

Better Performance: You can achieve the same performance by putting a great CDN like Cloudflare on top of WordPress, and your life will be infinitely easier when you want to add dynamic features like a store or comments. You can also easily find a static WordPress host like Strattic or Shifter.

Higher security: I don’t believe that introducing a number of proprietary and sub-scale SaaS services like Netlify into your stack will make your site more secure. I believe the most secure thing you can do is run fully open source code, as widely vetted and used as possible, on servers you control, or from the fewest number of vendors possible. WordPress securely runs some of the most attacked websites on the internet, including major media, Facebook, and WhiteHouse.gov. Having this many moving parts doesn’t inspire confidence:

Cheaper, easier scaling: CDNs are more expensive than normal hosting accounts, and you can get WordPress running on a decent host for less than $5/mo. And there are even more powerful offerings: The personal plan on WP.com can serve tens of millions of visitors per day, to the website or the headless API, includes a global CDN, and a domain name for $4/mo, and we still have a profit margin. GraphCMS starts at $29/mo and only gives you “5,000 entities,” whatever that means. Contentstack is $3,500/mo. And that’s just for the headless CMS part! You still need to sign up and pay for a bunch of the other stuff in that graphic before you have a website a human can visit in a browser.

Better developer experience: If your developer wants to copy and paste updates from marketing to the website, sure, but if they want people to be able to update the website without their help, they should go with something easier for users like WordPress. If you’re curious about the developer experience, or an investor thinking about this space, I really suggest you watch this three hour and thirty minute tutorial to really understand what is being sold under the premise of “better”:

Have I ever built stuff like that? Totally! It can be a ton of fun, like building a rocket at home or fixing up an old car. I’ve seen some awesome sites built on decoupled architectures or static publishing, using headless WordPress rather than the CMS’s above, but still a similar idea. People are trying to paint me as being against Jamstack, but that is as foreign to me as being against duct tape — it’s good for some things, bad for others, and it’s not going away. I just wish they would be more intellectually rigorous and honest when marketing it. I expect a Jamstack-like approach to exist forever, just like the ideas behind Jamstack pre-date it getting jammed down our throats by Netlify’s marketing team.

Biilmann has got the Ballmer / iPhone story backwards — Microsoft’s mistake there was they made something too complicated, and the iPhone simplified it. Jamstack introduces numerous vendors, build steps, network calls, interfaces, even billing relationships for something that’s a single button press in WordPress.

The reason services like WordPress.com and Shopify are growing so much is they are taking things that were complicated and making them simpler and accessible to a much wider audience. My mission is to democratize publishing and commerce, to make it radically accessible to everyone regardless of technical or economic ability, and increase the freedom and openness on the internet. As I said on Twitter, the first 15 years of WordPress were just the first few chapters. I’m looking forward to building and rebuilding the platform the rest of my lifetime, and when that comes to an end I hope future generations will carry the torch.

13

13 responses to “Matt Mullenweg Clarifies Jamstack Remarks”

  1. I think Matt’s brutal honesty is welcome, because most information out there about the Jamstack praises it. However, it also comes from developers using these modern new tools, evaluating their own convenience and satisfaction. As Matt points out, that doesn’t mean it makes it easier for the end user to use the software, which is what WordPress is good at.

    I actually like the Jamstack, but because of how complex it is, it’s rather limiting, even to support some otherwise basic functionality.

    The definitive example is comments, which should be at the core websites building communities. WordPress is extremely good at supporting comments in the site. The Jamstack is sooooo bad at it. In all these many years, nobody has been able to solve comments for the Jamstack, which for me evidences that it is inherently unsuitable to support this feature.

    All attempts so far have been workarounds, not solutions. Eg:

    Netlify forms: no hierarchy, so can post a comment but not a response (unless adding some meta to the comment body? how ugly is that?)
    Storing comments in a GitHub repo: it takes a long time to merge the PR with the comment

    Also, all these solutions are overtly complicated. Do I need to set-up a webhook to trigger a new build just to add a comment? And then, maybe cache the new comment in the client’s LocalStorage for if the user refreshes the page immediately, before the new build is finished? Seriously?

    And then, they don’t provide the killer feature: to send notifications of the new comment to all parties involved in the discussion. That’s how communities get built, and websites become successful. Speed is a factor. But more important than speed, it is dynamic functionality to support communities. The website may look fancy, but it may well become a ghost town.

    (Btw, as an exercise, you can research which websites started as WordPress and then migrated to the Jamstack, and check how many comments they had then vs now… the numbers will, most likely, be waaaaaaay down)

    Another way is to not pre-render the comments, but render them dynamically after fetching it with an API. Yes, this solution works, but then you still have WordPress (or some other CMS) in the back-end to store the comments :P

    The final option is to use 3rd parties such as Disqus to handle this functionality for you. Then, I will be sharing my users’ data with the 3rd party, and they may use it who knows how, and for the benefit of who (most likely, not my users’). Since I care about privacy, that’s a big no for me.

    As a result, my own blog, which is a Jamstack site, doesn’t support comments! What do I do if I want feedback on a blog post? I add a link to a corresponding tweet, asking to add a comment there. I myself feel ashamed at this compromise, but given my site’s stack, I don’t see how I can solve it.

    I still like my blog as a Jamstack, though, because it’s fast, it’s free, and I create all the blog posts in Markdown using VSCode. But I can’t create a community! So, as Matt says, there are things the Jamstack can handle. But certainly not everything. And possibly, not the one(s) that enable your your website to become successful.

    • Good points, indeed. Although I’ve worked with WordPress before and I would not go back to it… 😦

      I’m (genuinely) curious, when you say that it takes a long time to merge a PR, what do you mean? Merging itself takes long or the fact that you need to review, etc.?

      • I’m referring to the experience of adding comments in the Smashing Magazine site, which went from WordPress to Jamstack. Their solution for comments is to create a pull request with the comment, and merge it to the repo, right when the user posts the comment. This operation takes many seconds, during which time the user is shown a spinner, and waiting. I’ve had to wait 20 seconds at times… It’s not a pleasant user experience.

  2. Doesn’t read any more clear, just reinforces the same nebulous take where WP can do no wrong and static can do no right.

    Bloated ecosystem and services down your throat? 57,000+ plugins and Jetpack say hi.

    Yes, Netlify team is a lovely loud bunch and JAMstack is riding the wave of hype, disproportional to its state and usage.

    However static can deliver what it promises for some use cases — a site that is faster, cheaper, and easier to run, comparing to a WordPress one. How do I know? I moved my personal site from WordPress to Hugo/Netlify and benefited from it.

    The mission of WordPress isn’t to “democratize publishing”, it’s to “WordPress-ify publishing”. And so whenever someone else makes advances in publishing they are a target instead of an ally.

  3. In this particular case, I think it’s very specific to Jamstack, but the point behind people adopting it is strongly connected to developer preference.

    I think a lot of developers are keen on working with new frameworks, that are easier to use and extend for a developer, but they don’t consider how easy the end product will be to use and maintain by the end-user.

    Overall, I think WordPress is the best software I have ever seen in terms of usability and has a good balance between customizability and how easy it is to just quickly build something. But developers tend to choose the stack, and its easier for them to overlook the maintenance part.

    I think for certain situations Jamstack might be better. But the majority of WordPress admins, probably don’t want to write articles in markdown.

  4. I would like to note that there are other options for headless CMS, not only GraphCMS or Contentstack (I guess it was picked for its price). For example, you can use Forestry CMS, Dato CMS, Sanity CMS which all have free plans. Also, Netlify CMS is open source and completely free.

    • Thank you for the pointers, I’ll check them out!

      The ones I highlighted seemed to be the closest to WP in terms of user experience for site managers and editors.

      On pricing: The first listed price at Sanity is $199/mo… similar to others I was trying to count listed prices vs free trials or variable usage plans, because it’s very hard to know what that would cost. At Sanity for example they limit based on API CDN requests, API requests (not sure the difference), bandwidth, listeners (?), datasets (?), documents, users, and storage. You don’t see mainstream hosts or WP.com limiting in the same way, perhaps except storage.

      WordPress itself is an open source, and free CMS that can be used in a headless way. :) In general I am supportive of any open source CMS, including “competitors” like Drupal or Joomla, but more skeptical of proprietary solutions, especially if they lock you in.

      • The ones I highlighted seemed to be the closest to WP in terms of user experience for site managers and editors.

        Publii CMS is also similar to WordPress in this regard. It’s free, easy to setup – comparing to the regular JAMStack solution – and quite friendly to the final user.

        But it doesn’t come even close to WordPress in terms of flexibility, community and functionality, of course.

  5. This is like comparing apples and oranges.

    JAMstack is a way to build a website using different technologies. It’s up to developer to find the best solution for specific problem.

    WordPress is a monolithic CMS which tries to do too many things of which many are done poorly.

  6. For my sites it’s definitely cheaper I only have domain costs to pay for (8 – 10 per year) plus free hosting on Github and other platforms compared to the pricy equivalent, content can be easily managed through a platform such as Forestry or Netlify. The scalability is insane since the server resources are a lot less compared to a bloated monolithic cms such as WordPress, and the speeds are amazing. I understand that with sites such as news sites etc that are updated like down to the second perhaps a custom cms or something like WordPress is more suited…but there are sophisticated site generators that can handle 5k – 100k so I guess it’s possible, but I’ve never looked into it as it’s outside of my use case. My personal general philosophy is the the same as Arron Swartz “Bake, Don’t Fry” and WordPress don’t fit that mantra.

    I’m happy that some developers are experimenting as I think that too often people get what I like to call WordPress disorder, I should state this can be for any cms, where they have tunnel vision without considering different use case and tools, I would say 60% – 75% of the time WordPress is overused where it could be done cheaper elsewhere, thats the real reason that it runs 30ish% of the web, it’s because you have people continually reiterating what percentage runs WordPress and naive web creators buying into it, when in fact what they really should be doing is asking if it can be done cheaper with a static site generator or something similar, if people did that I think WordPress share wouldn’t have got as large as it has and we see people making better decisions and saving money on server resources they don’t need.

  7. I’ve built a bunch of Jamstack sites in the last 2 years, ranging from 3 – 500+ pages, and I agree with all points above.

    Try telling your clients this:
    – You now need an account & pay for at least 3 different services, one for Github, one for a headless CMS, one for Netlify
    – You can not preview your site while you’re editting it. Wait, you can, if you use Gatsby Preview — but it’s another $20/month if you want 250 ‘real time edit’ per month — that’s right. I’ve probably editted 50 times writing this comment. But wait — can’t you just deploy your own Gatsby real time edit? It’s open-sourced, after all? Yep! Now you need to pay for a droplet & extra developer resource to maintain it, just so you can preview your site while you’re editting it… on a separate tab.
    – Commenting is another service. You want the comment to be baked into the html? Either spend more developer resource, or you have to pick a service that allows that (not many). Either way, more developer resource.
    – You want to optimize your images? Too many images will slow down your build beyond belief. Caching helps, but occasionally you’d need to clear your cache due to vague error… You know what, let’s put all our images in a bucket and put imgix in front of it. Another 2 services.
    – This one is Gatsby-specific: You just want a website that you can edit, but I spend a lot of time wrestling with Gatsby’s GraphQL to bring your data to a template I wrote in React, a framework choice that is totally overkill since 90% of your site is just static HTML, but I just can’t write anything in vanilla JS/HTML anymore.

    Things that make a static site fast also make a server-rendered site fast. Throw a CDN in front of a wordpress-powered site, pair it with a web worker for pre-caching stuff and it can be really fast.

    At this point, I’m convinced people who uses JAMStack are either companies with strong dev teams that willing to shoulder the marketing responsibility, or hobby developers feel so great after rewriting their simple blog for the fifth time in a new technology.

Newsletter

Subscribe Via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.