Ideas for my dream blogging CMS

Ideas for my dream blogging CMS
Photo by Austin Distel / Unsplash

Ever since I changed over from Wordpress to Ghost to power this site, I've gotten emails and replies asking me if Ghost is really good and worth making the jump from any other blogging engines.

My answer is this: it's currently the least bad one out there, but it is far from perfect and leaves a lot to be desired. It's kind of why I use Mastodon for my social stuff. It's fundamentally broken in key ways that make it difficult for people to use and interact with you, but it's the least bad option out there, so I stick with it for now.

Being the least bad at something isn't exactly the highest bar, so over the last few weeks I've been asking myself this question:

What would a perfect blogging content management system look like in 2024?

(micro)content is king

My ideal blogging CMS would treat every new entry as a highly portable text blob/object that I can optionally do lots of stuff with.

Let's be honest: from ten miles up, there's hardly any difference between the text that makes up a blog post and the text inside an email you send out to subscribers (that's what Ghost focuses primarily on, keeping them virtually identical). But the same can be also said for any text that becomes a social post to Mastodon, Threads and/or Bluesky. It's a bunch of text strung together. Same goes for LinkedIn posts and Medium essays. On the backend, these can be all identical, plucked from the source text and sent wherever an author likes.

I'd like a hosted, centralized web app that is akin to early-era Blogger.com that lets me save new posts into a system, then it's up to me where the output goes.

I might want to send it to my blog (perhaps hosted natively with whoever hosts the CMS app or maybe on another server as flat files that get built then ssh'd to my host?), or I might want to also (or instead) send that text out to email subscribers. I might want to post the entirety of my text to social networks—or if it's too long for those—swap the full text with a preview and a link to my full blog post. If I wrote something "professional" and "business-y" let me optionally send it to my LinkedIn or Medium account.

This isn't rocket science and most every network out there has a full posting API, but few tools try to talk to them all because they want to keep all the content under one roof, and that needs to change. I might want to send my content to three different places instead of one, or I might want my blog to be the sole source for original posts, with links or excerpts sent to other networks. Or, I might want each post to go to a different place—what I post on LinkedIn might never touch my personal blog.

Small bits of content are easy to move around the world, and tomorrow's ultimate blogging CMS should be designed to support as many kinds of output as possible.

It's all about the editor

Most blogging CMSes focus on getting their themes and outward-facing features right so the audience can interact and enjoy your blog, but not enough put their effort into building an ideal web editing environment for authors.

The Edit a New Post UI is what the author will see and interact with 95% of the time they work on their own blog, so it should be as perfect as possible for writers. I want a luxurious, powerful, full-featured (but blank) canvas that serves my needs (but also doesn't overwhelm me with options).

I know it's a tall order, and we're talking about building a UI that rivals as much work went into making Google Docs. At the same time, you want to hide complexity from authors so you're not dragging them down with choices they rarely use.

Ghost gets this mostly right, but in their quest for simplicity, you get a limited palette of options for things you can put in a blog post and how they can be formatted. Any tagging or other custom stuff is hidden behind a panel and I forget to open it before publishing most days. On the other hand, I find Wordpress' UI overwhelming as it has too many choices and too many abstractions (like managing your Media Library instead of just uploading an image). Medium is close to Ghost (Ghost is kind of a copy of Medium actually) but has a limited set of text formatting/embedding options and interactions allowed.

I don't know what the ultimate UI for writers looks like, but whoever builds the perfect blogging CMS will have to spend a great deal of effort here.

Adaptive UIs may be a solution

Several years ago, I took a javascript class to see what bootcamp-style CS education was like for people new to the topic. In just a few sessions we learned tons about bubble sorts and insertion and selection sorting orders and then spent a few weeks on raw javascript before moving to frameworks (at the time, jQuery was still king but waning).

One of my class projects was attempting to rewrite the advanced search page at Twitter, which looked dated and overwhelming with about 30 different options you could use, but my ultimate goal was to build an adaptive UI, where it stored (either to local storage/cookies or in a server-side account) which options out of the 30 you actually used most often. When you loaded the page later on, the UI could surface the ones you used most, with the rest hidden behind an expandable panel. Whenever you accessed other advanced options, they would be more likely to show up by default for future searches.

In my dream author-focused editor I described in the previous section, there's a conflict between total simplicity where you just ask for a title and the text entry versus total control where you can pick categories and tags and custom templates and move paragraphs around and alter the fonts and change the size of YouTube embeds among dozens of other options.

I think a smart blog CMS should track which features I use. If Ghost implemented this, I'd have the same UI as default, but it'd also surface one field for letting me set tags on a post. I don't need everything listed on the sidebar screenshotted below, but it would be nice if I could just see the 2-3 options I do use often in the main UI.

Themes and template still matter for blogs

One could argue that during the mid-2000s battle of the blog engines between Blogger, Movable Type, Wordpress, and others that Wordpress ultimately won out because it amassed the most free themes out there that anyone could try and later tweak to become their own. Wordpress did a smart thing by keeping their main templates fairly stable throughout years of version changes. So a blog theme for Wordpress designed in 2014 probably still works in a blog powered by the latest version of Wordpress in 2024.

Whatever blog output a dream CMS creates, it needs to make templates as basic and stable as possible, so that a million themes can bloom, CSS Zen Garden style.

Feature-wise, it's also nice when you can make small template tweaks via a web interface, but it’d also be great if it could fetch theme templates from a place like Github, which lets you track changes made along the way and allow rollbacks when necessary.

People might also want blogs within their blogs, like linkblogs (the way Kottke.org used to use them). People might want a blog on their sidebar that tracks something specific within the larger framework of their main blog. An ideal CMS needs to be wildly flexible and allow these blogs-within-blogs in their templating system.

If posting to your personal blog is your main output, having numerous, well-designed, modern themes is super important to authors and readers. Though it is worth noting that themes are slightly less important if a CMS can support sending output to Mastodon, email newsletters, and other networks that don't use your blogging templates at all.

Interacting with your audience

Audience interaction needs not be an afterthought in any CMS, because your audience is one of your most important assets as a blogger.

Wordpress has the biggest lead here and offers a lot of features around comments built over the last 20 years, but their commenting tools aren't fantastic for moderating at scale. Ghost only recently added them and they're sorely lacking many basic features other blog platforms had years ago.

Ghost does do a great job with one emerging feature and that's paid memberships. In Ghost, you can have free subscribers, paid subscribers and gate your content to your full audience or only just your paid supporters.

Ultimately a great blogging CMS will need to:

  • Let people put fine-grain controls on who can comment (and when) on posts
  • Handle email like MailChimp as it sends out your messages reliably to thousands of readers
  • Let you play with paid membership and paid-only content features seen in places like Patreon

How do we export/import/save/federate?

RSS is a powerful, stable, long-lasting wrapper that has spawned many tools to read, manipulate, and reuse blog content. I think any modern CMS will need to adopt and support RSS and treat it as a native way of storing and sharing text.

It's still a bit new, but I am intrigued by the ActivityPub protocol from Mastodon. ActivityPub describes content within their network and I think it should be adopted by any new blogging CMSes. Offer it as an option to make sending your posts to Mastodon as seamless as possible, and later on down the line when people start building cool ways to use ActivityPub-formatted content, every blog will already support it.

Doing the impossible with a new CMS

I've covered a lot of features here, but ultimately what a dream CMS has to support is mind boggling, including:

  • Let a billion unique personalities shine on all their very different blogs
  • Also make it easy as possible and highly portable to other networks
  • Also make it free—but also paid options to support continued development—but also not too expensive

It's a tremendous amount of work that anyone is going to have to tackle when trying to make the perfect blogging CMS. As a writing tool, it has to be easy enough to be used by millions of people, but also let authors express their unique personalities onto millions of very different blogs.

People also want to be able to pick up their content and leave at any moment. This sucks for a blog CMS company/creator/host but it's what people expect with their own written words. Keep everything as portable as possible, let people leave if they want, and instead focus on providing the best CMS and writing experience as possible to keep authors happy and around.

Nothing I've listed here is easy to build and would take many thousands of paid developer and designer hours to create. I do like paying for good services though, and a CMS that gets close to perfect is going to easily get a few hundred dollars a year from me.

(thanks to Jason Shellen and Paul Bausch for letting me pick your respective brains on some of these ideas over the past few weeks)