Statamic: First impressions

While the confusion over the launch of WordPress’s new “Gutenberg” editor continues, I’ve been considering some other options.

As someone who also works in the Laravel world, Statamic is making a pretty big blip on my radar. It’s a content management system that ‘runs on a “flat file” engine based on Markdown and YAML files’.

I took it for a spin the other night and kinda live-Tweeted as I went. Here’s how that went (click the Twitter icon in the top right, or the date/time link to see the whole thing:

I was really impressed with Statamic. It costs, but it’s got a lot going for it. But I was left with a niggling feeling about something, and as I’ve let my brain post-process it over the last couple of days, I’ve worked out what it is.

Statamic is still a CMS with a database. Yes, the database is in flat files, but it still – to some extent – builds pages on the fly from the data it has rather than being a full-on “static” CMS that builds a set of HTML files.

Yes, you can static-cache it, and it provides you with the tools for doing that, but it still needs a little extra effort to get the super-speed of a full static CMS. And it still has a control panel with a login, so it doesn’t have the super-security of a full static CMS.

And I’m left with this niggling doubt about performance. Statamic prides itself on “eliminating the rigid, relational database” which “unlocks the ability to create and support any data structures you can imagine”. Which I kinda get, but also I’m not sure I can imagine a data structure that would fit into YAML that wouldn’t work in SQL. And SQL’s rigidity means you can query it easily using a declarative query language, and you can get great performance from it.

Not knowing how the caching works in Statamic, it’s hard to say how it would perform with a large dataset, but my instinct is that, unless it builds indexes of some sort, it really won’t be as efficient as MySQL. And I’d feel like I was dependent on the software itself providing me with import/export ability.

I know that full-on static site generators are MUCH harder to use and really developer-only territory.  And I see that Statamic is much more user-friendly than them, while being much more flexible and developer-friendly than something like WordPress. I’m struggling with this idea of a hybrid static/dynamic CMS.

Let me be clear, I can see a LOT of benefits to using Statamic:

  • easier configuration with easier access to advanced options
  • built-in form builder
  • more flexible data structures
  • good user roles and groups system
  • simple drag-and-drop page ordering
  • built-in caching
  • built-in CLI tool
  • nice image editing features
  • built-in upgrade…and downgrade!…functionality

And, biggest of all, the fact that it’s flat-file means you can store everything: content, configuration, users, the lot(!) in version control and, potentially, roll back and merge and do all the things that version control allows you to do.

But I’m yet to be convinced that the benefits of a flat file database outweigh the drawbacks.

So. It’s great. I’ll almost certainly play with it more and add it as a tool to my kit.

And…HUGE thank you to the @statamic team, who followed along the live tweeting and well-actually’d me on a few things. They seem like a great bunch and I’m certain support from them would be superb.