“You should never build a CMS”

(sanity.io)

74 points | by handfuloflight 6 hours ago ago

52 comments

  • JSR_FDED an hour ago ago

    I thought this was a classy response. It’s very hard to address the original points of criticism without coming across as too defensive, but he managed to do it well. On top of that the author is kind of speaking on behalf of the whole CMS industry, which when all taken together certainly has a lot of issues. He made a good case for his product without trashing his competitors.

  • inesranzo 4 hours ago ago

    Why do you need to use Git as a CMS?

    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.

    • gregates 3 hours ago ago

      It seems like the argument is roughly: we used to use CMS because we had comms & marketing people who don't know git. But we plan to replace them all with ChatGPT or Claude, which does. So now we don't need CMS.

      (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".)

      • arionmiles 3 hours ago ago

        Cursor replaced their CMS because Cursor is a 50-people team shipping content to one website. Cursor also has a "Designers are Developers" scenario so their entire team is well versed with git.

        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.

        • gregates 2 hours ago ago

          > Lee's argument for moving to code is that agents can work with code.

          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.

          • arionmiles 2 hours ago ago

            There's no sense in answering your questions when you actively refuse to read the article. You're more susceptible to misunderstand the arguments given your apparent bias on AI-motivated downsizing, which I must reiterate is not covered in the article at all.

            • gregates 2 hours ago ago

              Alright you badgered me into reading the original and the linked post does not misinterpret it.

              > 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.

    • PunchyHamster 3 hours ago ago

      Git can make sense, but you still need to wrap it for non-technical people. No matter how easy markup is, some people still will refuse to learn it and ask for WYSIWYG tools

      • sublinear 2 hours ago ago

        I'm gonna be honest here. I don't know what a non-technical person is anymore. The only people I can truly label that way are a subset of the people now near or at retirement age.

        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.

        • weitendorf 2 hours ago ago

          A huge number of those people only interact with computers as a consumer. Beyond that, maybe schools assignments, texting and other social media, light email, and video games (eg through steam or a console). There is a big gap between that and someone comfortable using git.

          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.

    • d--b 3 hours ago ago

      Ah, this is fun.

      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.

  • RobotToaster 3 hours ago ago

    This is written by a proprietary CMS company, so they may be slightly bias.

    • kmelve 2 hours ago ago

      Author here! Of course, I'm biased!

      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.

  • larusso 3 hours ago ago

    This story reminds me of a similar issue people love to solve with the same idea. Software builds. The can’t we have a simple make file or worse just a shell script to build.

    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.

    • kstenerud 3 hours ago ago

      The idea is to have an 80/20 build system:

      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.

      • 01HNNWZ0MV43FF 2 hours ago ago

        Having Make shell out to the real build system is a nice compromise. Then you can stick your tests and stuff in there too

  • odie5533 2 hours ago ago

    I think there is a need for Agent-first tooling for things like CMS.

    > 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.

  • finaard 2 hours ago ago

    I think it's good practise to build something CMS like for fun - as long as you don't expect it to be useful or used, outside of maybe your personal page. It's useful to experiment and learn stuff that might be useful at scale in other projects.

    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)

  • swazzy 2 hours ago ago

    I believe the point is that AI or cursor/agent is your CMS. The points about structured content and references are valid but go away as AI improves.

  • ozim an hour ago ago

    Part on Git not being content collaboration tool is just wrong.

    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.

  • ianberdin an hour ago ago

    UI first approach is dying. I don’t even want to touch it if possible, if cursor can solve it for me.

    • beezlewax an hour ago ago

      Can you give some examples of this?

  • mahmedtan 3 hours ago ago

    If anyone from sanity is reading this. Please for the love of god fix the rich text editor. It’s a great CMS for everything but writing text.

    • kmelve 2 hours ago ago

      We're fixing every week! Have you tried it recently? Are there particular issues you're having?

  • adamscybot 3 hours ago ago

    The point about CMSs having value in possibly being a more real-time collaborative UI layer to interact with that's less-scary for the average Joe is a valid driver; and is a critical factor for many use cases. But the the other stuff is clearly reasoning with a solution already in mind...

    "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...

  • camillomiller 3 hours ago ago

    This is a great testament to why 75% of the web runs on WordPress. Most of the problem mentioned have been solved by wordpress for ages, but there’s an entire industry set on reinventing the wheel in ways that really baffle me. If your actual goal is to publish on the web in a sane and understandable way, wordpress solves the problem for the largest number of cases. Scalability is solved. Usability by non tech editors is solved. Draft and approval flow is solved. Caching and speed is solved. You want headless? Oh, turns out wordpress is actually GREAT for that too.

    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.

    • beezlewax an hour ago ago

      WordPress didn't solve anything. They just got the first.

    • yurishimo 2 hours ago ago

      It also heavily depends on _what type of content_ your CMS is serving. Blog posts and static pages? Okay, sure, probably fine to bolt WP on top and be done with it.

      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.

  • d--b 3 hours ago ago

    I have built several small websites in the past that were updated by non tech people.

    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.

    • faeyanpiraat 3 hours ago ago

      How did you manage training non-tech people to edit yaml and markdown files?

      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?

      • d--b 2 hours ago ago

        I got them to install MacDown, which is a standalone Markdown editor with side by side editing (text on the left, render on the right), and print a cheat sheet for links and images. Markdown is very easy to write. Nowadays there's probably an opensource wysiwyg editor.

        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.

    • mabedan 2 hours ago ago

      > something where the structure of the site matched a folder structure

      Kirby?

      • d--b 2 hours ago ago

        That was my first try, but many things were missing from Kirby for what the customer wanted.

        • omnimus an hour ago ago

          I am curious what was possible with yaml+md files that was impossible with flat file CMS. Afaik flat file CMSes are basically glorified .md editors.

  • sublinear 2 hours ago ago

    > Give it six months. ... The "simple" system will accrete complexity because content management is complex.

    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.

    • omnimus an hour ago ago

      No. Everyone used them because people editing the websites are almost never developers. Moving to some static site generator powered by git is cool until your marketing team constantly bothers your dev team to change a typo.

      • GlitchInstitute 25 minutes ago ago

        you literally need 1 guy who will check marketing's AI Cursor commits of the changed typo. way cheaper than paying for the CMS.

  • BoredPositron 3 hours ago ago

    The font rendering is all kinds of fucked with Firefox impossible to read.

    • kmelve 2 hours ago ago

      Ooof. We should fix that!

  • fullstackchris an hour ago ago

    reading these comments - wow, absolutely nobody has an idea what a CMS is. if your going to "replace it with cursor" or "AI" you've completely lost the plot as a software engineer

    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

  • samdoesnothing 4 hours ago ago

    I'm really getting tired of gen AI and this article is like a perfect microcosm. Partially or at least fully AI generated, discussing a vibe-coded CMS built by an AI startup. It's several layers of marketing and no serious engineering.

    Where are the grownups in the room?

    • lmc 2 hours ago ago

      It didn't read as LLM-generated to me. And having some experience with CMS development, the article has plenty of substance. You can check previous blog articles from the same author far predating LLMs - here's one from 2018: https://www.sanity.io/blog/getting-started-with-sanity-as-a-.... The main difference i see with the OP article is it's a bit more emotive - probably a result of responding to a public trashing of their product.

      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!".

      • samdoesnothing 2 hours ago ago

        Comparing the two articles, they have a completely different style. I wasn't totally convinced the linked article was AI generated but I am now. Clearly the author can write, so I'm a bit saddened that they used an LLM for this article

    • Tenemo 4 hours ago ago

      It does read very LLM-y to me, too. The short sentences, dramatic pauses – but maybe I'm oversensitive nowadays, it's really hard to tell at times.

      • samdoesnothing 3 hours ago ago

        There are some obvious tells like the headings ("Markdown is nice for LLMs. That’s not the point", "What Lee actually built (spoiler: a CMS)"), the dramatic full stops ("\nThis works until it doesn't.\n"), etc. It's difficult to describe because it's sort of a gut feeling you have pattern matching what you get from your own LLM usage.

        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...

        • kmelve 2 hours ago ago

          Author here.

          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.

        • munch117 an hour ago ago

          This article is just about as un-AI written as anything I've ever read. The headings are clearly just the outline that he started with. An outline with a clear concept for the story that he's trying to tell.

          I'm beginning to wonder how many of the "This was written by AI!" comments are AI-generated.

    • CSSer 3 hours ago ago

      If only we could take output and reverse-engineer activation layers through some parameters and get the original prompt. Imagine how much time we could save if we could read the chat transcript or the two actually human-written paragraphs this article was based on. They'd be some banal rant about a DevRel dude but at least it'd be more efficient.

      • samdoesnothing 3 hours ago ago

        Would be nice but you could probably edit it enough or splice different chat outputs together to break it.

        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.

    • PunchyHamster 3 hours ago ago

      As I read it I was just thinking "whoa, someone really just decided to pawn their site design off to AI, then complain it doesn't get CMS, then build CMS purely so they can yell their requests at the AI, and so the company making the CMS pawned off to AI writing article why using AI isn't a great way to click at their CMS"

      could be summed up as "and not a single bit of productivity was had that day"

      • samdoesnothing 3 hours ago ago

        It's like a reflection of Nvidia, Oracle and, OpenAI selling each other products and just trading the same money back and forth. Which is of course a reflection of the classic economist joke about eating poo in the forest. "GDP is up though!"

        Meanwhile nothing actually changed and the result is pretty much the same anyways.