Am I Building on Sand? Betting a New Product on an Unfashionable Foundation
I was about to bet a new product on Drupal.
So I did the thing you are supposed to do before you pour a year of your life into a foundation: I went and looked at the numbers.
They turned out to be more tangled than either the cheerleaders or the obituary writers would have you believe.
The chart people point to
The cleanest privacy-neutral signal for “how much of the web runs Drupal” comes from crawlers that fingerprint sites rather than ask them. By that measure, Drupal’s share of all websites has drifted down for years.
Drupal as a share of all websites (crawled)
It held near 2% through 2018, then eased down to 0.7%. This is the chart people reach for when they want to tell you a platform is past its prime – and taken on its own, it is a genuinely uncomfortable thing to stake a year of your life on.
But one line is never the whole story
Before writing the idea off, I pulled two more threads: how often Drupal core is actually downloaded (Composer installs, which sit behind no privacy gate), and how many sites self-report running it. Then I put all three on one axis, indexed so only the shape matters.
Three ways to count Drupal, indexed to 2020 = 100
Three instruments. Three different answers.
- Downloads nearly tripled.
- Self-reported installs crept up.
- The crawled footprint fell to 41% of where it started.
That looks like a contradiction until you notice each one answers a different question. Downloads count builds – and in the CI/CD and container era, one site pulls core dozens of times, so that line tracks DevOps habits as much as adoption. Self-report counts absolute footprint, and it is roughly flat: not surging, not collapsing. The crawl counts relative position – and here is what the headline number hides: the web quadrupled in size and the simplest tools scooped up the long tail, so Drupal’s share fell even as its own footprint held roughly level. Losing share is not the same as shrinking.
Put together, they tell a calmer story than the first chart alone. Drupal is not the default for a throwaway brochure site anymore – and it was never really trying to be. But the base is not falling out from under it. It is concentrating, in the places nobody crawls: intranets, gated apps, headless backends serving a framework’s HTML with no fingerprint on it at all, the serious and complicated builds that were always its home turf.1
The change is real. It is just gentler, and fairer to Drupal, than one line on a graph makes it look.
The question I was actually asking wrong
Here is where the walk paid off. I had been asking “is Drupal shrinking?” when the question that decides everything is:
Is the platform my audience, or my engine?
If your audience is Drupal people – you sell them a module, a theme, a service – then a shrinking pool is close to fatal. The whole install base is well under a million, the survivors are set in their ways, and a declining market gets more cutthroat, not less, as everyone fights over a smaller pie.
But if the platform is the engine – the thing under the floorboards that your users never see or name – then its market share is somebody else’s scoreboard. Your addressable market is no longer “Drupal sites.” It is everyone who has the problem your product solves. The engine just has to be good, stable, and invisible.
Same technology. Opposite verdict. The only thing that changed was which side of the wall I stood on.
The case for an unfashionable foundation
Once I reframed it that way, being unfashionable started to look less like a liability and more like an advantage.
A platform two decades deep hands you two decades of hard-won, battle-tested engineering for free – structured content, revisions, editorial workflow, real translation, granular permissions. The kind of depth the shiny new tools are busy rediscovering, one production incident at a time.
And being out of the spotlight is its own kind of protection. Hype pulls in funded competitors; an unfashionable label keeps them away. The ambitious builders mostly chased the money and the buzz elsewhere – which leaves more room, not less, for someone who actually wants to build here.
And in the end, what sets a product apart is rarely the foundation it stands on. It is what you choose to build on top of it.
The bet
So the corner I found myself drawn to is a strange one: a product that is AI-first and genuinely easy for someone who has never heard of the engine, but that you run yourself and own outright – your data, your models, your rules – instead of renting it from a platform that quietly owns you back.
That corner is nearly empty. Everything flashy in this space is proprietary and hosted. Everything you can self-host is either assistive AI bolted onto an old admin screen, or a raw backend with no opinion about the actual site. The specific overlap – opinionated, self-hosted, AI-native, yours – has almost nobody standing in it.
Empty is a wonderful and terrifying word. It either means you found an opening everyone else missed, or it means you are about to learn why nobody wants to stand there.
I think it is the first one. I have started building as if it is.
So, am I building on sand?
Maybe the honest answer is that the sand is just the part everyone can see – the public, crawlable, trend-chart surface. The bedrock is underneath it, older than the trend, and it does not much care what the market-share graph is doing this quarter.
Something to ponder: when a platform is “in decline,” are you looking at a dying thing, or at a mature thing that the hype cycle simply walked away from – leaving the door open?
-
I happen to maintain drupal-jsonapi-params, a small JavaScript library that only makes sense when a JS front-end is talking to a Drupal back-end. It has climbed from a few hundred downloads a month to tens of thousands – roughly half a million in the past year. A narrow niche, and npm counts run noisy with CI builds, so I would not hang a thesis on it. But the direction is unmistakable, and it points the same way as everything else here: that work did not disappear, it moved somewhere the crawlers cannot follow. ↩︎