Evaluating and working with content management systems (CMSs) is a large part of what we do at Viget. Our capabilities range from implementing of off-the-shelf (OTS) solutions to building customized applications with Ruby on Rails (check out what Lawson had to say about creating Colonel Kurtz). This means we're able to work with our clients to identify the most appropriate technological solution based on their particular needs, and not force anyone into a one-size-fits-all solution.



Oftentimes, we get to work with a client to determine the best option; but, occasionally, they've already done some homework and come to us with an idea of what they need. Even in those situations, we attempt to complement the client's ideas with our own research and experience to help make the best possible decision for the long term.



Things We Consider When Evaluating a CMS

When choosing a CMS, the first decision we have to make is whether to pick an OTS or custom system (read more from Zach on Proprietary vs. Open Source). If the choice is OTS, we help clients select the best solution from all available options. At their most basic level, CMSs do three very simple things: store, manage, and present content. We consider each of these CMS features during the discovery phase (or sometimes sooner) of a project.

Storing Content

Content is one of the most precious resources of a website, and it needs to be treated with care. Shoehorn it into the wrong database structure and it'll be a nightmare to work with, display, and migrate. Place it in the right structure, and it becomes a breeze to slice and dice in any way you want. More importantly, it'll be future-proof when the inevitable migration to a new system happens.

Content that is ripe for OTS systems is content that is structured in pages and posts. Systems like Craft (let Trevor tell you Why We Love Craft), WordPress, and ExpressionEngine are perfect for this kind of straightforward content. For e-commerce, we've become big fans of Shopify because of its easy Twig-based template creation and full style control; it even includes all-in-one order, payment, and inventory management processes.

All these systems, however, are opinionated* about how to store content and what kind of content really works best. We've found lots of ways to push, pull, and contort these CMSs to work with more unique data, but when it looks like the content demands are going to push the limits of an OTS CMS, we start looking into building a custom system.

Building custom systems allows us to create unique solutions that perfectly suit a client's needs (read about how we developed a custom solution to fit the unique needs of World Wildlife Fund). Creating a custom CMS necessitates a careful consideration of data relationships and integrity. We recommend custom systems when content is more than presentational (posts and pages) and may have complex relationships or taxonomies.

Managing Content

The administration (admin) interface —the place where content is managed — is typically seen and used by only a few people on the client’s side, but it can have a huge impact on the quality and consistency of content delivered to visitors.



While OTS CMS admin interfaces are highly polished, they too have an opinion about content structure, as well as workflow. If the content structure matches the CMS, it’s great. However, the further an OTS CMS is pushed and customized, the more confusing the workflow can become. WordPress can be especially vulnerable to this problem, as its admin is based around managing posts and pages, but can be highly customized and pushed way beyond its core capability.



With a custom system, we're able to tailor the admin workflow to a client's specific needs and requests. Need to bulk import your proprietary list from a customized 10-year old Excel spreadsheet? A custom CMS makes that easy. The development of our custom CMS Colonel Kurtz came out of our experience building custom admins and our desire to remove the interface as a barrier to content management.

Presenting Content

Database systems may seem arcane and confusing, but templating (content display) is the fun part! Or, it can be, as long as we've chosen our CMS solution well.



Like content storage and admin interfaces, OTS CMSs generally have some opinion or structure around content display. Craft is the least opinionated, and lets us start from scratch and craft (hence the name) the site from the ground up with an easy-to-use templating language. WordPress, on the other hand, is built on a theming system, allowing users to easily install and swap themes on a whim. This is generally a good thing, but means building a theme for WordPress has a specific structure and workflow that's not always ideal and can occasionally impose restrictions. Additionally, templating languages such as Twig and WordPress's loop make getting straightforward content into templates ... straightforward ... but accessing more complex relationships can be very difficult.



Choosing a custom CMS opens up the possibilities for content display, brings the full expertise of our developers into the mix, and allows unique and complex mashups of data. Even when a heavy query can work in a OTS CMS, the resulting database work can be costly in server performance and result in slower loading pages. Custom development allows fine-tuning of queries to ensure fast server responses.

Getting Around the Pitfalls

Not all projects are ideal. Sometimes we're tasked to work with a CMS that isn't great for the application. There are many legitimate reasons for a less-than-ideal match:

Budget: Comparing the costs of OTS to custom CMSs can be deceiving. It’s important to consider the upfront cost of a CMS, as well as the cost of customizations and long-term maintenance: Upfront cost: OTS CMSs get you off the ground quickly and with little ($299 for Craft) to no (free for WordPress) cost. Custom development has a much higher upfront cost, but can pay off in the long run. Configuration cost: An OTS CMS may seem cheaper, but, if it has to be highly customized to work, its cost can ramp up quickly, sometimes making it comparable to a custom solution. Maintenance: Over the long term, the cost of maintaining the server and CMS needs to be considered. Good OTS systems are regularly being upgraded and come with easy “one-click” updates that allow even non-technical admin users to keep them up-to-date. Custom systems are built to be robust and may better fit long-term needs; however, additions and upgrades do require additional development expense.

Comparing the costs of OTS to custom CMSs can be deceiving. It’s important to consider the upfront cost of a CMS, as well as the cost of customizations and long-term maintenance: External needs: CMS choice can be driven by factors beyond content and templating. Ease of use, ubiquity, and familiarity can all factor into a decision.

CMS choice can be driven by factors beyond content and templating. Ease of use, ubiquity, and familiarity can all factor into a decision. Internal preferences or technological comfort level: Sometimes simple comfort level with one system, wariness with another, or a key stakeholder's bias can drive a choice.

Our approach in these cases is to take a careful look at the situation and gain a better understanding of the client's motivations. Sometimes we're able to reframe our recommendations so the client is able to understand our rationale. Other times, we get a deeper understanding of the client's needs outside of databases and templates.



In either case, we make sure we're able to stand behind the CMS that's chosen and build a site that we're proud to deliver.

Wrap Up

Choosing and working with a CMS is a unique process for every client and project. At Viget, rather than putting every project into a one-size-fits-all solution, we’ve developed expertise in a variety of options so that we’re able to help our clients to choose the best technology that fits their needs.



* Roughly, opinionated software means: "The framework imposes a certain way of working on you [...] there's clearly one right way of using the framework which is nice and easy, and any other way of using the framework makes your life difficult." (link)



** A Big thank you goes to Billy French for the fantastic illustrations that accompany this post.

