Why we chose GravCMS

cms

Asset Depot chose GravCMS to manage our front-end website because it's a flat-file CMS with a modular design that results in minimal bloat on both the client and server-side. This helps ensure a great user experience!

Choices

In today's web-dev world, there are many content management systems to choose from. It often seems as if new ones are popping up every week. Most companies and developers will default to one of the oldest and most popular open-source CMS's, WordPress. To a beginner developer or an understaffed or inexperienced organization, WordPress may seem like a great choice. WordPress's multitude of plugins accompanied with its plug-n-play themes and large open-source community allow users to get a "Hello World" site spun up with relative ease on a managed hosting provider. On the surface this sounds great, right? However, if we take a deeper dive through the lens of an experienced engineer, we begin to see the significant downfalls of using CMS like WordPress and why a CMS like Grav was not only more appealing but fit our companies philosophy.

The correct tool for the job

WordPress is a content management system. It was developed to provide authors and content creators a means of managing the content on a blog, news publication or small website. When WordPress was released, SaaS (Software as a Service) and PaaS (Platform as a Service) were relatively new concepts. At the same time, there was a growing demand for low-code or no-code web applications, such as e-commerce platforms and customer portals. To fill the void, many WordPress plugins began popping up that provided the plug-n-play SaaS/PaaS functionality small businesses and individuals desired but without having to purchase additional software or hire a developer. Put simply, the problem with these plugins is that they frankensteined a product that was never originally intended to provide these functionalities. Additionally, WordPress's core code has a history of being akin to a bowl of spaghetti, making it difficult to audit and troubleshoot.

The reality is that you can do one thing really well, or do all things, if you're lucky, so-so. Many developers and organizations end up mutating their WordPress sites into a one-stop shop to fulfill their web needs. It's not uncommon to find public facing WordPress sites that also function as the companies record management system, a client area and infrastructure controller all hastily put together using random plugins. For example, I've personally witnessed a small physicians offices using their practice's public WordPress site as their patient EMR (Electronic Medical Record system). On top of the severe performance issues and inefficiency, this is an incredibly irresponsible and dangerous security risk.

The bottom line is that companies need to pick the correct tool for the job. This is one of the first steps in ensuring a safe and positive user experience. Don't jerry-rig your CMS to provide the services that should handled by a dedicated application.

When Asset Depot selected Grav, we did so because we wanted a platform that did one thing really well, provide a fast, efficient and secure static website. Under the hood Grav only contains the basic necessities. More functionality can be added as needed, but a base install is lightweight and streamlined. If it weren't for the fact that our company had non-developers publishing content, we could trim Grav even further by running it headless. These attributes have further downstream advantages for our engineering team such as a smaller security auditing footprint, easier orchestration and decreased administration complexity.

Database vs flat-file and Minimizing bloat

Serving a static HTML page to a user on modern hardware should ideally incur negligible system impact and not require the execution of excessively long instruction sets.

WordPress is a database CMS. It follows a process where content for a requested route or page is fetched from the database and then rendered onto a template page before serving the request. This process, without caching, can strain server resources, resulting in resource-costly page load operations. When coupled with additional plugin overhead, WordPress can become slow and overall resource-intensive. Consequently, a plethora of caching plugins have emerged to mitigate this issue. This however, contributes to a feedback cycle of adding more plugins thus increasing complexity and risk. The bottom line is that WordPress takes considerable tuning and effort to achieve good performance.

Grav is a flat-file CMS. Instead of relying on complex database structures to store and retrieve content, static files are used instead. In other words, we're back to serving our website the old-fashioned way. The result is significantly less server impact per page load and simpler scaling. Achieving a lightning-fast end-user experience and good SEO score is much easier to attain. Our team also prefers the modular design of Grav. This gives us a lot of flexibility going forward when it comes to decoupling, isolating and distributing various components of the CMS.

Many developers might tell you that a database CMS is necessary for large sites or those with dynamic content. This is simply untrue. Grav for example, has been used to manage sites with over 50,000 pages. Yes that's 50 K pages. It also very capable of efficiently serving dynamic content. Thus our philosophy remains that with some incredibly rare exceptions, anything requiring a database should be a stand-alone application. Don't Frankenstein your CMS.

Other CMS options

At the end of the day, there are many other flat-file and headless CMS options out there that most certainly warrant consideration. In our opinion there are very few cases where a database CMS makes sense. We choose Grav due to the available paid support, and all the advantages outlined in this post.