If I were asked this question several years ago, more often than not, I would have opted for a content management system (CMS) solution. Systems like WordPress were gaining a lot of popularity at the time, and with its famous “5-minute” installation, I felt it couldn’t be beat.
I’ll admit I was fully pushing CMS platforms like this to every client of mine for several reasons. Besides providing a nice separation of HTML structure and content, they also made it extremely easy for website editors to login, and change copy and images without any real technical expertise.
Generally, the core of CMS platforms is solid with either a large community or software company backing. However, most developers don’t just utilize the core functionality without adding any type of modifications. Plugins, which can include themes and extensions, will inevitably make their way into the website build. And with these add-ons comes added risk. Data collected by Sucuri Security, a website security firm, on 11,000+ malware infected websites indicates that a large percentage of sites that run CMS platforms have either vulnerable or outdated plugins.
Besides security concerns, CMS platforms also come with a larger codebase which could increase your website’s footprint on the server as well as creating more opportunities for issues to crop up. And, you will always run the risk of opening up your beautifully executed website to unintentional sabotage by content editors who don’t think the way web designers do.
CMS platforms still make a lot of sense and can be an absolute necessity in some cases. To help answer the question of whether to utilize a CMS, you need to evaluate the goals of the site along with business objectives while weighing out the risks. Some valuable questions to ask stakeholders during the planning phase could include:
- Is it necessary for non-technical website administrators to edit site content?
- Does website content currently exist within a database or some type of external resource?
- Does the review process for content need to happen within the website? (ex: editor, approver, and publisher roles)
There are alternatives to a full blown CMS setup. If you are looking to develop a simple website or maybe a Minimum Viable Product (MVP), you may want to explore a solution that is a little lighter and more agile. There are frameworks available that still provide template engines and utilize a Model View Controller (MVC) paradigm, but without the bloat and security concerns of a full CMS platform. These frameworks come in various programming language flavors with some examples including:
- ASP.NET: MVC
- PHP: Laravel
With these frameworks content can easily live within the Views for very simple sites. But, you can still achieve full separation of content and structure by utilizing the models to pull from an external resource such as a database or API if available.
If you are looking for something that feels more like a complete publishing system vs. a framework, you can also explore static website generators. These generators provide a way for working-code and content to be published into a set of static HTML files that put no burden on the web server to parse a programming language prior to delivery. They load quickly within the browser because they are pure HTML, plain and simple. Think back to the early days of web development here. Some static generators include:
Again, let the website goals and objectives help inform the decision as to whether a CMS should be used, but for that simple 1-pager or small-scale site, there are a lot of good options available.