In search of a perfect CMS

For some time now I've had the urge to write down some things I encounter mainly when working with computers. As a half-professional sysadmin more or less frequently I wish I had written down reasonings and most complex parts of setups.

Oh, and make it public as it could help others, too.


So, for writing notes mainly consisting of text I'd want the most sophisticated content management system (CMS), or in this case, even just a blog platform. I'm not expecting a megaload of content and I'd like the software to have quite minimal overhead of system resources and security.

I have also more or less experience with different CMS's and I wanted a fresh approach and point of view this time.

Simpler than SQL

To begin with, WordPress is probably (and quite rightfully) the first software what comes to mind if one is asked to think about a CMS or blog platform. As a truly tried and trusted veteran of web publishing, nowadays it's become even too feature-rich, being an overkill for smaller needs (not even mentioning Drupal or Joomla).

For these reasons I thought about flat file CMS; As the name tells, that kind of system stores all data in separate files on the disk. Sure, an SQL database would have its benefits, but for a small-volume site, could there be anything as basic as reading a file? Actually, I've heard that flat files scale really well to busier systems also, where the SQL database can be the worst bottleneck.

Also, using flat files eliminates the possibility to breach the database engine and makes backups really straightforward. I guess SQLite would have been a really acceptable solution in this setup too, altough I didn't end up with it.

Under these circumstances this left away otherwise great-looking and promising Anchor CMS which, as of writing of this, has only MySQL support, SQLite being not implemented yet. The true simplicity of this system appealed to me, not so much did appeal installing a whole new instance of MySQL server just for Anchor.

The ghost of Ghost

The language or inner workings of the CMS weren't much of constraints. After all, I was after a fresh insight. Only that the implementation to an existing web server should be nifty.

Being open to ideas, a bit more exotic choice by design would be Ghost. When people began to discover WordPress was no more "just a blogging platform", they began work on Ghost.

By exotic I mean it's built and running on Node.js, a JavaScript runtime. As so Ghost has its own server executable which may make it fast - but from the sysadmin perspective, it also makes managing Ghost as a system service not streamlined, mildly said at least; It requires setting up the Ghost npm as a system service, and additionally, proxying the traffic from Ghost via HTTP-proxy, eg. nginx. From my standpoint it felt all too cumbersome to set up and manage.

Of course, this only applies to self-hosted instances of Ghost. It is available as a paid service which is ready and managed out of the box. Just have to mention, though, Ghost's website is another thing that needs streamlining. I find it really awful to navigate with its ring-references, and links the user expects to find were missing - at least as of now.

An offering of tools

After searching for a while I encountered many a tool. Most, if not all, were built on PHP, if not counting some static site generators such as Jekyll based on Ruby. Jekyll itself is a great tool which generates a static site which can be then uploaded to the hosting service.

Anyway, it wasn't what I was looking for now.

Listings of lightweight CMS's included mostly: Anchor CMS, Pico CMS, Bolt, Monstra, Wolf CMS, Pyro CMS, Kirby (paid), GetSimple CMS, CMS Made Simple, Statamic (paid) and Stacey.

A few good options

I have Bolt running at some sites and so far I've been satisfied with it. Small and lightweight, still configurable. And it has proper administration and composition panel, an essential if there are other not technically inclined users. But I was looking even more compact solution.

Pico (CMS) answered to my needs by being compact and easy. In principle it also uses flat file database in which the user edits posts directly with a text editor and then makes them available to the CMS. Since I want that making posts has as low threshold as possible, I would've wanted a web composition feature. Fortunately it was available as a plugin. Unfortunately I wasn't able to get it working properly and the feeling of code was very "kludgish" to me. A plugin hadn't also been updated within years and one plugin had been officially abandoned. So I wasn't sure if Pico was for me.

The solution?

I was totally pondering the choice of the platform to use when, on the 11th moment, I stumbled upon Grav. The feature list on the site seemed quite exhausting and to be honest I didn't even bother to read it all. It was a free, flat file CMS so I just wanted to test how it would settle to my vision.

And after a little fiddling, it did settle quite well. It's even a bit over-polished when speaking of the graphic design but I don't mind. Actually I'm an advocate of sleek, simplistic, and even minimalist design philosophy. So for me, simple but elegant design just hit the spot.

Having used the system for a few days now, I can't really say about it's performance or overall fitness for different purposes. However Grav's usage principles really aren't hard to get a grip of (editing text files) and Markdown is quick to learn. Because of their simplicity, flat file CMS's really have their place in installations where using a database engine is not very feasible.

So, is it perfection? Of course not, but Grav has proven to be interesting, balanced, and flexible and I sure will use it again. Its active development at GitHub lifts worries and even for those who don't want to use terminal for administration an admin plugin is underway.


Note upon moving to a new CMS platform in July 2018: When I was introduced to Grav around the time of the original post, Grav was just only in its early stages. After a while at some point, some of the functionality which I had myself coded into it broke. I didn't have enough time and interest to fix it so I just took the whole thing offline. I've tried Grav recently and I think it's still extremely good CMS. However at this update I decided to go with SQLite backed Pagekit.

{{ message }}

{{ 'Comments are closed.' | trans }}