9-WordPress_logo.svg

WordPress - Why I started considering alternatives

WordPress is the go-to for blogging or any other web presence. It's fairly easy to setup, and is infinitely expandable. Plugins can customize for almost any use case. Is it always the best solution? Ask any good engineer what the best of anything is and the answer is: "It depends, what are you trying to do?"

Issues

One of the issues I find with WordPress. The scope is so huge you find yourself wading through menus, plugins, and block types. Any solution I design I try to ask "what is the least complex design to achieve my goals?". For me this means packaging the configuration into easily repeatable steps (preferably code). There are some automation tools WP-CLI for example that let you express the configurations in code. I find that layers of abstraction between the CLI and what you see in the WP Admin menu makes it difficult to replicate a configuration that was created in the GUI.

Another issue is performance on lower end devices. WordPress was designed in the on premises era when compute was becoming cheap. Spinning up a VM or even repurposing a retired server with 8-16GB of ram would give you adequate performance. Today we are moving towards microservices and cloud architecture where compute is limited by expense. Running a VM with 16gb of ram can run about 70$ a month. That's assuming you run a LAMP stack with MySQL and Apache on the same server.

The main issue - MySQL

I run my apps in the Azure app service. Running the MySQL db gets problematic. You either need to run it on a vm, build it into a multi container web app, or run a managed MySQL instance. Of the solutions the managed MySQL has worked the best, but this will run you an additional 6-20$ per month. I found myself looking at other DB configs. After thinking about it I started to question what use case I was filling. For me I was using fairly structured data with a more of a knowledge base hierarchy. Having a database allows you to create dynamic structure to your pages by forming connections that will drive user engagement. The need to create dynamic content to form connections wasn't there for me.

1-Grav_logo

Enter Grav

If you are not familiar with grav, it is a PHP content management system with the Symphony application framework. Most important to me though was that it uses a flat file database which would eliminate my database woes with WordPress.

2-EditInVsCode

Individual pages can easily be created and modified using YAML with markdown. Overall I have been very impressed with how intuitive it is to create and modify pages. If you use the Azure VsCode plugins you can directly edit your app service site files without using a GUI interface.

3-EditInAdminConsole

You can also use the optional admin page to edit documents as well. It's definitely not on par with the WordPress in terms of formatting and block options though. The problem is many businesses don't need or want to fully utilize all of the complex formatting options in WordPress. I have seen many small and local businesses with barebones pages that don't look as good as Grav does out of box with a basic theme.