Do We Really Need Another CMS?

Wednesday, 29 December 2021
  • By
  • Jeff Ammons
  • Tags:
  • Blogging
  • Blog
  • CMS
  • Programming
  • Projects
  • .NET
  • C#

Great Idea

Oh that's a GREAT idea!

OK, so I'm going to throw this right out there.

There is NO reason for me to write a new CMS or blogging system.

None. Zero. Nada. Null reference error.

But here we are.

Why?

So it turns out that I enjoy writing blog engines more than I like writing blog posts.

I also like trying new ideas and experimenting with novel ways to do things.

It always bugged me that blog software was so heavy. You need a database and a webserver and lots of processing happened whenever someone asked to see a blog post even if it hadn't changed in years.

Back around 2014 I switched my blog over to a static website generator. I published a Pluralsight course about how to do so: Build a Better Blog with a Static Website Generator.

Things I like about static website generators

Speed. You literally can't get faster response time with anything that does processing on the server, because the static site doesn't have to do any processing. It just hands back the HTML.

Deplyoyment Simplicity. You can deploy anywhere. GitHub Pages? Check! Content Delivery Network? Check!

Built In Backups. Since your site is essentially a directory full of markdown files, images, etc., you can just version it with Git and not only is it backed up, it is fully versioned.

Things I don't like about static website generators

The Name. Half a joke. Trying to say or type “static website generator” over and over is a bit of a drag.

The Generator. There are some really cool generators out there, but they all require a bit of a learning curve to really use them well. I shouldn't complain since it gave me my first Pluralsight course!

Configuration. Configuring your generator. This is a subset of the last point. You can spend quite a bit of time getting things tweaked the way you want them.

Publish Process. The fact that you need a build step when you are writing can be off-putting. My cycle tended to be 1) write, 2) build, 3) version, and 4) deploy. Not terrible, but just cumbersome enough that I have to think whether or not I really want to write a new post.

It is Static. This goes without saying, but I'm saying it anyway just in case I get paid by the word someday. You have to jump through some hoops to provide anything like search or tag clouds.

So what's the alternative?

I want to have my cake and eat it too. I want to keep the things I like about a static system and add the bits I miss from a dynamic system.

So here's what I want:

  1. Keep the Markdown and YAML files in a directory approach
  2. Deploy via Git
  3. Serve via the simplest dynamic system possible: no database. Not SQL. Not NoSQL. Call it NoDB.
  4. Encapsulate everything in one directory with subdirectories. That includes the posts, images, CSS, JavaScript, and HTML templates.
  5. No need to log in
  6. Use ASP.NET because I like it and C#

GatorSmile CMS

Assuming you are reading this post close enough to the time I published it that I haven't decided to try a totally different blog system (not kidding myself that this will be my last system), then you are using GatorSmile.

The concept is to keep the same source directory used by my static site generator, and use that as the database.

When GatorSmile starts up, it reads that directory into memory and serves it from there.

When you install GatorSmile you can Git clone your source directory and configure a webhook so that every time you push a new commit to GitHub it will trigger GatorSmile to update.

In this way you can greatly simplify the process over a static site generator.

I will release GatorSmile as an open source project once it goes beyond the prototype stage.

End result

The end result is a site that is almost as fast a static site generator, but has an easier process for the writer and makes implementing features like search a snap.

Who should use GatorSmile CMS?

Me. That's pretty much it.

If anyone else wants to use it, then they will need to weigh their needs. It will NOT be good for a site with thousands of posts.

The performance of the server would be find, but the maitenance of the files would become problematic.

Why's it called GatorSmile?

I've used aligators as my blog banner for a really long time. Waaay before I ever dreamed of moving to Florida.

Alligators always look kind of like they are smiling to me. So there you have it. 😁

What's next?

I'll be blogging over the next few months about GatorSmile as I expand on it and make it public. I might do some YouTube videos about it as well if I have time.