Have we outgrown the CMS?

I think I may have been looking at websites all wrong. Dynamic websites don’t always make sense.

The backbone of most modern websites is usually some sort of Content Management System. This could be proprietary or open source, but the goal is always the same - to allow a non-developer to modify and add content.

The most popular of these at the moment, and for a while, has been WordPress. I’ve used many - ExpressionEngine, CraftCMS, even Joomla many years ago. And just when I’ve felt I’d mastered the quirks and flexibility of WordPress, I’ve come to a realization.

This is usually overkill.

Look at all of the layers of technology that are used just to publish a simple blog using WordPress. You have a server, probably running Apache or Nginx, with PHP processing the stored data from MySQL into the presentable HTML that the user sees. On top of that, you have all of the plugins installed to do this thing and that thing, and it all eventually (if it’s set up with any love at all) gets cached and squashed into a flattened, HTML / CSS / JavaScript page, which is where we started before CMS’s were even a thing.

The Beauty of Static

Over the past few weeks I’ve been learning Middleman, a static site generator. There are several others out there that accomplish mostly the same thing, like Jekyll and Assemble. The idea is simple - let your local machine replace the CMS while developing, and build a flattened version that’s published to the web. The frameworks offer tools to allow CMS-like functionality, as well as your technologies of choice - write the code and content the way you want to, and in any format you like.

What are some of the advantages to this?

  1. No database. You can write your content in markdown files, and they’ll be iterated through instead of entries in a database.
  2. Security. There’s no backend, so there are no user profiles, which means one less potential headache for the future of your site.
  3. Speed. Since there’s no database, there are no queries to slow down your site.
  4. Simplicity. There’s no bloat. It’s an additive approach. The final product only has what you put into it, and requires no server-side processing.

Of course, these advantages are dependent on the project’s needs. This ditches the backend completely and new entries will require some level of coding as well as a way to execute build and deploy processes. At the moment, this works best for developers who run their own sites, and for teams who manage a website in-house. So this is not for freelancers or development shops to hand off to their clients with no future relationship in mind. But it doesn’t have to stay that way.

Simplified Hosting

Probably the biggest draw for me, as a developer and very part-time blogger, the simplification for hosting is great. I’m able to host my site on Github Pages with just a CNAME file containing my domain name and a couple of A records for my DNS to point to Github. Read more about it here.

Taking it a Step Further

If you need more, there is the unique approach that Prismic takes. You can build your site on any technologies you like, and use their API to connect to content hosted on their nicely crafted writing platform, allowing writers and content managers to do what they do best. The content can then be pushed out to websites as well as native apps.

Putting it Into Practice

This site is now on MiddleMan. As an exercise to learn how it all worked together, I ported my WordPress blog over. It wasn’t quick but it wasn’t too much work either. Since I had been using a markdown editor already, it was a simple copy and paste to port entries.