We spend ~$120/month on our CMS which hosts hundreds of people across different spaces.
Nobody manages it, it just works.
That’s why people build software so you don’t need someone like Lee to burn a weekend to build an extremely brittle proprietary system that may or may not actually work for the 3 people that use it.
Engineers love to build software, marketers working for gen ai companies love to point to a sector and say “just use us instead!”, just shuffling monthly spend bills around.
But after you hand roll your brittle thing that never gets updates but for some reason uses NextJS and it’s exploited by the nth bug and the marketer that built it is on to the next company suddenly the cheap managed service starts looking pretty good.
Anyway, it’s just marketing from both sides, embarrassing how easily people get one-shot by ads like this.
I am a marketer and a developer. But I also know that you don't get far by trying to trick people into your product. As a marketer, I also get front row seat seeing how software plays out for a lot of businesses out there, and I have done so for a lot of years. I wanted to share those perspectives in response to Lee's write-up.
So yes, obviously both these pieces make a case for how the software we're employed by solves problems. And anyone who has been in developer marketing for a while knows that the best strategy is to educate and try to do so with credibility.
The point was that bad abstractions can be easily replaced by AI now, and this might work well for some people/companies who were in a similar situation as me. I was not trying to say you don't need a CMS at all. In fact, I recommended most people still use one.
What you describe as an "extremely brittle proprietary system" is working great for us, and that's all that I care about. I don't "love to build software" for the sake of building software. The post is about solving a problem of unnecessary complexity.
The real test in any system is scaling usage across many different use cases and users.
But you did your job, it’s driving clicks and views, pushing the narrative that you don’t need x vertical, you just need cursor.
What software do you think shouldn’t be rebuilt and replaced with cursor?
Because if it’s all cursor, at some point you have eaten all your customers.
Customized software is as good as the team developing them are and trusting others to do that is proven to not work all the time, React proving it to all of us the last days with 4 different CVEs.
the chance of the software that does one thing well being maintained by the dedicated company is higher than the chance of Lee not switching jobs once the once vesting cliff has been reached again
just quietly move that back to a CMS so you can get back to building more interesting things, nobody actually wants to maintain a CMS
My thinking was that it became public pretty quickly once your post went viral (folks were already connecting the dots in the replies), and it felt awkward to respond to the substance without being direct about the context.
But you're right that a heads-up would have been the better move.
That seems backwards and hellish when you want to grow your content and marketing team as they have no clue on how to use this arcane tool.
Now the engineers would need to be bothered by the marketing department time and time again to add blog posts, wasting engineering time.
This is the reason why CMS's like Sanity, Wordpress, Directus exist.
using Git as a CMS doesn't make sense at scale.
(I didn't click through to the original post because it seems like another boring "will AI replace humans?" debate, but that's the sense I got from the repeated mention of "agents".)
This setup is minimal and works for them for the moment, but the author argues (and reasonably well enough, IMO) that this won't scale when they have dedicated marketing and comms teams.
It's not at all about Cursor using the chance to replace a department with AI, the department doesn't exist in their case.
So do you think this is a misrepresentation of Lee's argument? Again, I couldn't be bothered to read the original, so I'm relying on this interpretation of the original.
> Previously, we could @cursor and ask it to modify the code and content, but now we introduced a new CMS abstraction in between. Everything became a bit more clunky. We went back to clicking through UI menus versus asking agents to do things for us.
> With AI and coding agents, the cost of an abstraction has never been higher. I asked them: do we really need a CMS? Will people care if they have to use a chatbot to modify content versus a GUI?
> For many teams, the cost of the CMS abstraction is worth it. They need to have a portal where writers or marketers can log in, click a few buttons, and change the content.
> More importantly, the migration has already been worth it. The first day after, I merged a fix to the website from a cloud agent on my phone.
> The cost of abstractions with AI is very high.
The whole argument is about how it's easier to use agents to modify the website without a CMS in the way.
This is an AI company saying "if you buy our product you don't need a CMS" and a CMS company saying "nuh-uh, you still need a CMS".
The most interesting thing here is that the CMS company feels the need to respond to the AI company's argument publicly.
No, it isn't. The AI company was explicit about their use case not being a general one:
> "For many teams, the cost of the CMS abstraction is worth it. They need to have a portal where writers or marketers can log in, click a few buttons, and change the content. It’s been like this since the dawn of time (WordPress)."
> Alright you badgered me into reading the original
It's not "badgering" you to point out that your comments are pointless if they're just going to speculate about something you haven't read. But if you feel "badgered", you could just not comment next time, that way no-one will "badger" you.
Basically, if they ask for a change, can preview it, ask for follow ups if it's not what they wanted, then validate it when it's good, then they don't need a GUI.
It's almost 2026. There are more people who know how to code than ever before. This stuff is taught in every school now. Everyone has access to AI to help them if they get stuck. If someone under 50 is unwilling to work I am unwilling to employ.
Don’t be an asshole to them about that, think about how many developers would do anything it takes to avoid calling someone on the phone. Obviously they can learn it, but they know they’re going to be bad at it for a while (true for both git and phone calls) and they don’t know how long it’s going to take, or the extent of what they don’t know.
The thing about software companies is that they know how to automate and build stuff so why invest the time in learning a CMS if it’s something they could quickly solve for their own use case? Well, the same applies to people who just want to point and click and write, wondering whether it’s worth it to learn what a rebase does.
Think about all the developers we force into that situation all the time anyway.
> they know how to automate and build stuff
To an extent, yes, but as the author said "content management" is a complex problem.
> wondering whether it’s worth it to learn what a rebase does
This is the crux of the problem. Versioning is fundamental to project management for the kind of project you'd use a CMS for, yet with a CMS everyone is too siloed and the oversimplified interface ruins any chance of doing better. Any CMS is a dead end that leads to chronically incorrect assets, incomplete patches, broken links, etc. This is also generally true for many other low/no-code solutions.
I'm not saying the "non-technical" people need to work directly in git, but they do need to be familiar with this kind of workflow when discussing with developers, and developers are absolutely still needed. Any CMS workflow is too restrictive. Nobody experienced and sane would prefer it over a git based solution unless they're being bullied into using a CMS. It's been like this forever and no CMS has ever been able to overcome this reputation.
At some point one needs to ask why a CMS is preferred and time and time again the answer is only cost cutting. In any other business decision that reason wouldn't be good enough. CMS products only exist because of neglect, ignorance, and cheapness.
I think you're painting with too broad of a brush if your goal is an accurate model of the world here.
This is a parochial viewpoint that only describes the bubble you're living in.
But forcing people to use the tool is not the way to go as ROI depends a lot on context of the company and lots of time just a CMS would be better bang for the buck.
The article is about how people shouldn’t build CMSs because they’re building things that are too simple, missing tons features and not realizing the scope of what they get into.
But one thing that CMSs may want to have is “proper version control”. So what do they do? They are faced with 2 options: using a complete version control system like git, which allows them to do branches and merges and PR reviews and so on. Or they build something simpler internally, with only draft/publish, like they usually do.
But what if 2 marketers are making changes to the same file at the same time? one because the name of a product changed, and one because there is a new christmas sale. Does the version system handle merging? Maybe… maybe not…
The point I am making is that we always make the tradeoffs of buying off-the-shelf complex stuff vs internally built, incomplete buggy but tailor-made solutions.
And CMS is very much a space where customability matters.
BTW, Github Pages is a git-backed “CMS” used by millions of people. It works fine.
Oh. The irony.
But in that bias is a ton of experience in the CMS field and a lot of observation of actual teams trying to solve for content operations challenges. I think that's valuable to share, even if we happen to also sell a solution to these things.
> Previously, we could @cursor and ask it to modify the code and content, but now we introduced a new CMS abstraction in between.
That is a very real benefit to having everything accessible by Agents. Whenever I need to setup connections in web UIs, it slows me down. IaC is a huge step in the right direction for Agent workflows, but so much is still locked away like CMS management, Confluence docs, Jira tickets, etc.
Market for CMS in public open source arena is saturated. This requires time invested in learning one-offs.
Build one that is properly whiteboarded and engineered from the start, and subsequently gets purchased by an enterprise for an app platform.
I intentionally made a few interesting choices for my stuff, just to see how far you can push it, and to make sure no sane person would ever use that in production (like, from before Markdown was around, I was wondering how far you can get with doing a simple markup language parsed by using regexp only. Turns out, surprisingly far, but if something doesn't parse as expected later on you have a bit of a problem)
And just like described in the post it starts the same. Simple script wrapper. No tasks no tasks dependencies. Then over time you need to built now a library which contains the core part of the software to share between different other projects. You need to publish to different platforms. Shell scripts become harder to use on windows all of a sudden. You need to built for different architectures and have to integrate platform specific libraries. You can built your simple make / shell file around all that. But it ain’t so simple anymore.
For the 80% of use cases, you have homogeneous build commands that are the same across projects (such as a makefile with build, clean, test, etc). This calls the real (complex) build system underneath to actually perform the action. You shouldn't need to type more than 15 keys to make it do common things (and you CERTAINLY shouldn't need to use ANY command line switches).
Then for the other 20% of (complex) use cases, you call the underlying build system directly, and have a document describing how the build system works and how to set up the dev environment (preferably with "make dev-env"). Maybe for self-bootstrapping systems like rust or go this isn't such a big deal, but for C/C++ or Python or node or Java or Mono it quickly becomes too bespoke and fiddly.
Then you include tests for those makefile level commands to make sure they actually work.
There's nothing worse than having to figure out (or remember) the magical incantation necessary to build/run some project among the 500 repos in 15 languages at a company, waiting for the repo owner to get back to you on why "./gradlew compileAndRun" and "/.gradlew buildAndRun" and "./gradlew devbuild" don't work - only to have them say "Oh, you just use ./gradlew -Pjava.version=11 -Dconfig.file=config/dev-use-this-one-instead.conf -Dskipdeploy buildAndDeploy - oh and make sure ImageMagick and Pandoc are installed. They're only used by the reports generator, but buildAndDeploy will error out without them". Wastes a ton of time.
Code merges are extremely semantic. Changes over multiple files/places in project are the norm.
Feels like author went on defensive mode against Git. But he is quite right on other points.
I have tried, believe me, to make CMS work. I really did. But every time the customer came back with “can I do this or that” and inevitably, it fell in a blind corner of the CMS engine I was trying to use.
In the end, I developped something where the structure of the site matched a folder structure, setup a dropbox auto sync, and let the customers write anything they needed using markdown for content and yaml for metadata.
Sure, it didn’t do a hundredth of what the cms did, but it did what the customers needed. it took me less time to build this than to actually install/understand a cms system.
If I did have AI back then, it would have been even faster for me to build that stuff.
At some point, it just helps you get shit done.
I mount the folder with the content so they always has easy access to add and modify the website directly from the file explorer. It is quite powerful because there is not friction. You hit save, and it is live. This can off course be a drawback too, it is quicker to mess up stuff, but that is a trade off I am willing to make in 95% of the use cases I deal with.
How did this solve the CMS not supporting something they needed?
Did it simply make customizing functionality easier, since you are in total control of the codebase?
The yaml part was very simple, it was handling the links for the menu entries..
Yes the customers wanted customized functionalities, like different ways to access the same pages, in the same tree.
Like you have Menu Item 1 => SubMenu Item 2 => List Item 3 is the same as Menu Item 3 => SubMenu Item 1 => List Item 5. Very few CMS do this, as the usual is to have a non cyclic tree hierarchy.
Here I had a main hierarchy reflected in the folder structure, and then they could add some links to the menu tree with the yaml files.
The whole thing was very simple. It took me about 16 hours to set up the whole site.
Kirby?
You may think of it as: for each page, the yaml contained the React props to render. I d write the the main components, and the user would inject content through yaml as they saw fit.
The only source of this relatoinship reveal was Sanity, they did it in the tweet thread as well, and it was the first line of their blog post. They didn't say "well it emerged on X that we were the vendor for this", it appears to done without permission. If that's the case, it is beyond unclassy. They could have simply reciprocated the disconnection, not mentioned there was a relationship, and said in their own posts "some recent blogging and tweeting have started an interesting discussion about replacing CMS, and here's our take...".
Clients will be interested enough about these things to read every post when the reveal happens from the vendor side. I read every post on that thread, saw lots of people asking who it was. Leerob never revealed who it was or even hinted. But I never saw a tweet from either party that said "We talked about it among ourselves and decided it would be interesting for both of us and our communities to reveal that Sanity was the vendor of the CMS, and they have a take about how this has impacted them, which you can read at (url)".
None of that matters now. Only the doxx matters now. Lawyers salivate over these moments.
BTW this isn't the tenth time that moving to a mental model of "something as code" has completely and upsettingly (for some) disrupted a market, even before AI.
https://www.sanity.io/legal/tos "Each Party (as “Receiving Party”) hereto acknowledges that the Confidential Information of the disclosing party (“Disclosing Party”) constitutes valuable confidential and proprietary information. ...ruh-roh x2 (foreknowledge of impact to damaged party)
Each Party will (i) hold the Confidential Information of the other Party in confidence, (ii) not disclose to any other person or use such Confidential Information or any part thereof" ...ruh-roh x 3 (promise of secrecy)
Is Cursor.com located in California? Why, yes they are. Is Sanity located in California? Yes, they are. ...ruh-roh x 4 (bonus venue for privacy laws).
At this point, the filing could be done by "lawyer as code".
"All blog posts mentioning feature Y published after September...[more examples]...The three most recent case studies in the finance category...[etc]"
Fairly simple queries. If you're willing to build an MCP server (as they did for their solution), you could just as well build one that reads structured front matter.
"You can't. You'd need to parse frontmatter, understand your date format, resolve the category references, handle the sorting, limit the results. At which point you've built a query engine."
Well that's a scoped problem. Looks like it already exists (e.g., https://markdowndb.com/) and doesn't require moving away from Markdown files in GIT if you want.
Or use something like content collection in astro (https://docs.astro.build/en/guides/content-collections/). Hell, looks like that lets you have the MD files somewhere else instead of git if you please.
The AI-generated points aren't as compelling as the prompter thinks. A new common problem.
Yes, you don't need flatfile-committed raw text for AI tools to work properly, in part because of things like MCP servers. Yes, semantically linked content with proper metadata enables additional use cases.
The next point to make would be "if you use our thing, you don't need to think about this", but instead goes into a highly debatable rant about markdown in git not being able to fulfil those additional use cases on a practical level.
This distracts from the what I imagine is the real intent: "git and markdown files don't come automagically with a snazzy collaborative UI. And yes you can still use AI, and use it well out of the box. If someone tells you you need markdown in git to do x,y,z with AI they are wrong."
Personally, I can get over the "AI writing style", but only if the content still nails the salient point...
Ah I was looking for the boogeyman threat and there it is.
I am so glad to see people finally getting away from all CMS platforms. They never worked well and have always caused a lot more problems than they solved. Everyone used them either out of ignorance or red tape.
Like a couple icons and some basic platform scripts for the 99% use cases of picking a branch, adding content, and occasionally saying “oops”?
Powered by Git doesn’t have to mean using Git raw.
Modern CMS workflows separate the content from the website code/app. The code is always version controlled and for content most CMSes have some sort of content versioning.
Keep those initial hires aboard and train up the rest. Get rid of the ones who don't want to learn. I mean really why do we try so hard to avoid bridging such simple knowledge gaps? It's not a big deal and we shouldn't shut people out of career development under all these obviously false excuses.
Static site generators are good for some usecases but too little or too niche for most cases.
First the typo is discovered and it changes the length of the text. If it's more than a few words this becomes a layout problem. You will have to nudge things around a bit, but now this also fails accessibility testing because the alt text or aria labels were overlooked or font size or line height were changed. Then the marketing team reviews it and change their minds yet again and people are stuck in a hellish loop of tiny updates that start breaking other things through runaway inconsistency. Of course it's worth noting that the typos almost always originate from that same marketing team.
This is the nature of coding websites by committee. A CMS just makes this worse by getting in the way of proper versioning, and as a bonus launders all the blame onto developers.
It's far from naive to just use git and set up a CI pipeline to copy your static build onto a web server. This is done all the time by anyone with common sense and familiarity with web dev. It "just works" so well that it remains under the radar to anyone new to this and looking for solutions. The CMS grift continues as their sales team insists their product is the best solution.
And those sites can be pretty great. The pace of dev is just different. Usually with big initial investment and then some bulk fixup in few months or a year.
I am actually not sure why to hate CMSs good modern ones are basically sweet web framework with highly customisible admin panel.
I am not suggesting any framework at all.
I'm 100% serious when I say that you will inevitably need a developer. As the requirements become more refined they're going to wind up writing everything on those web pages from scratch in plain CSS, HTML, and JS. Every attempt to avoid this is just wasting time and pissing everyone off regardless of their stake in it.
As an aside, I've knocked out at least half a dozen of these projects that I can remember in the past decade and I'm not even really a web dev. Doing it my way was faster, cheaper, more accurate, and way less long-term maintenance.
They were all for significant clients and are still running today. When they need maintenance it's done by developers who can effortlessly knock out the tickets because there are no dependencies in the way. There is no dedicated team. The client managers just toss some stories into the backlog and it goes into the next sprint assigned to whoever has the time. A merge in gitlab updates everything and we're done and everyone is happy and nobody ever has to think hard about this.
We just write static pages from scratch and avoid all server side rendering. There is no backend apart from maybe a few REST calls where needed and they're implemented as separate node apps. Again, minimal dependencies apart from Express and misc utils. They could probably be lambdas in AWS if we were allowed to do it that way. That's how non-existent the backend is and how static the pages are.
Am I just living in a corporate fantasy and don't know how good I have it? The only part where I think we agree is that these projects should be low tech, but we have very different ideas of what that means.
Also, the part where I mention marketing being a shit show clown circus is still true, but avoiding a CMS keeps that noise away from devs where it belongs while still delivering a good result. This assumes you have devs. If you don't I still think you need at least a single web contractor and would be better off avoiding a CMS or any other shitty framework. That's all I'm saying.
And they didn't threat anything, they simply said: your simple system won't be too simple anymore as you keep on using it. To me it's a fair comment.
Of course, it might not backfire but predictions are personal and not always correct.
It’s not sexy I guess? But if the goal is “work done” instead of “tech wank to impress investors with complexity”, that’s a solution that works very well.
I think being later actually worked in their favor as they caught the wave that Drupal and others were too early for. They were simpler when a lot of new developers and clients were around and grew in complexity as what people did on the web did, while Drupal and co just seemed bloated, even though arguably modern versions of Wordpress with the plugin setups that are common now are even more complicated than those old version of their competitors at the start
- a big ecosystem of themes and plugins (especially for SEO)
- an army of contractors who can set it up for cheap, and don't know anything else
- users who know their way through the UI and don't even think about looking at alternatives
I guess those belong to the remaining 25%.
But as a CMS to build out landing pages for an ecommerce site with 10s of thousands of SKUs? That's where things fall down. I'm not going to reimport my entire catalog into WooCommerce or something just to show a block of 8 products. Do the products also need to be localized for pricing and language? Plugins/custom glue code. PDP pages? Custom content per product based on various supplier disclosure requirements? Meh, at that point, I need to build so much custom stuff on top of WP that I'd actually be better off owning the entire stack and finding a way to use their block editor as a library within my own system.
I've worked heavily in my career with both WordPress and more custom PHP applications and while they each have their tradeoffs, I would never suggest someone to use WordPress at this stage unless they are just getting started and their data models fits without a ton of customization. However, if you're really just starting out, you'd be likely better off with Squarespace or Shopify until your business outgrows those platforms and you need custom software to take your business to the next level. For some businesses, WordPress might be the right answer as a CMS, but for others, they might be better served by other solutions.
The only people I can confidently recommend WP for at this point are actual bloggers who will just use the WordPress.com free tier, or a news organization looking for a high quality interface to publish long form content. For new businesses, you'll be better served by other platforms until you outgrow them and your business needs become complicated enough to warrant custom software.
you guys do realize that WordPress (as much as I hate its ubiquitous existence) is the CMS model?
and still something like 40% of all pages on the internet
Where are the grownups in the room?
The main point I'd like to raise in this comment though is that one of us is wrong - maybe me or you - and our internal LLM radar / vibe check is not as strong as we think. That worries me a bit. Probably LLM accusations are now becoming akin to the classic "You're a corporate shill!".
It sort of reminds me of those marketing sites I used to see selling a product, where it's a bunch of short paragraphs and one-liners, again difficult to articulate but those were ubiquitous like 5 years ago and I can see where AI would have learned it from.
It's also tough because if you're a good writer you can spot it easier and you can edit LLM output to hide it, but then you probably aren't leaning on LLM's to write for you anyways. But if you aren't a good writer or your English isn't strong you won't pick up on it, and even if you use the AI to just rework your own writing or generate fragments it still leaks through.
Now that I think about it I'm curious if this phenomenon exists in other languages besides English...
I'm beginning to wonder how many of the "This was written by AI!" comments are AI-generated.
And if you only knew how much those headings and the structure of this post changed as I wrote it out and got internal feedback on it ^^_
But actually, I think I shouldn't have needed to identify any signs. It's the people claiming something's the work of an LLM based on little more than gut feelings, that should be asked to provide more substance. The length of sentences? Number of bullet points? That's really thin.
I don't know folks... Maybe I have been dabbling so much with AI the last couple of years that I have started taking on its style.
I had my digits on the keyboard for this piece though.
Someone linked this article you wrote from 7 years ago.
https://www.sanity.io/blog/getting-started-with-sanity-as-a-...
It's well written and obviously human made. Curious what you think as to the differences.
Honestly with the way the world is going, you might as well just ask AI to generate the chat logs from the article. Who cares if it's remotely accurate, doesn't seem like anyone cares when it comes to anything else anyways.
could be summed up as "and not a single bit of productivity was had that day"
Meanwhile nothing actually changed and the result is pretty much the same anyways.