last updated: 22 August 2018 (approximate reading time: 4 minutes; 824 words)
NOTE: this note is a work in progress and is likely to be updated (not least to tighten some of the loosely defined terms).
When building a website, there are two main choices if you don’t want to hand code: a static site generator to create a static HTML site or a content management system. You can choose one or the other, not both. Here’s how I think the comparison comes out.
I get very twitchy about “recommending” one approach as better. I think it’s better to:
- Start with the notion of: what are you trying to do?
- Once you’ve established what you’re trying to do, then the question becomes: what is the best tool to support that goal?
And then when it comes to looking at tools, I will always question whether someone is taking responsibility for the consequences of their decisions.
That all said assuming the basic aim is to make some sort of generic content available online, I would start from the position that—all other things being equal—a static site generator is preferable to a database-driven content management system.
What Makes a Static Site Generator Preferable?
There are a multiplicity of factors that mean—in my opinion—a static site generator should be the starting point when considering the appropriate tool to build a website:
- The generated website will be more secure. Since it will be static HTML rather than a script-running database-driven app, there is no app to be hacked.
- The generated site will be much faster and (all other things being equal) will give a better user experience.
- Everybody understands text files, and therefore writing content is easier. Plus writing text files on a local machine is faster than logging-in to a remote server.
- With Markdown, people can see what they’re doing (and there are GUI editors for those who want some form of WYSIWYG).
- The hosting requirements for a static site are much lighter.
- A static site won’t break or stop working unexpectedly because of something running within the app that creates the site.
- The site (the core app, the theme, and any addons) will not require updating (particularly for security) and there won’t be auto-updating which can break the site unexpectedly.
- There’s no need for processes and procedures to back-up the online database and to maintain the site in the event of hacking or any other problem (at worst, all that would be necessary would be to upload the files again).
Why Not Static?
However, there is a certain level of complexity associated with static site generator tools.
For anyone who cannot get past that learning curve, then a content management system offers a level of simplicity. And let’s not be underplay it, there is some complexity with static site generators:
- First, there’s a command line application.
- Second, there is the necessity to find a hosting service and to understand something of how that host’s system works behind the scenes.
- Lastly, there is the step of getting FTP set up and then uploading the content each time the site is regenerated.
And If Not Static…
If one chooses a content management system because of resistance to the static site generator learning curve, there are logical consequential decisions that flow from that choice.
I have difficulty in squaring that one can both be confident self-hosting a content management system (with the associated security and maintenance that is required) and yet insufficiently capable to do the static site thing.
Where a Content Management System May Be the Right Choice
There will be situations where a content management system is the better choice. This is particularly so where a content management system can achieve a task with ease which is hard to complete with a static generator.
The main functions that can be better undertaken with a content management system are:
- Creating and editing documents from a mobile device.
- Timed posting (setting a post to go live at a specific time on a specific date).
- Multi-user access. Multi-user content creation is simple with a static site generator. However, multi-user site regeneration and file uploading can offer some challenges.
These functions can be—and are being—completed with a static site generator in the real world, but these are areas where a content management system is a far more appropriate tool.
One thing that is impossible for a static site is privacy behind a log-in (since there is no logging in). So if, for instance, you want private forums then the only choice is a content management system.
On balance, for speed, ease, and security, the scales point to a static site generator as the preferable tool. However, there’s also a matter of personal choice, familiarity, and preferred way of working, so I suspect people will keep using content management systems for a long time.