Successive Approximations

The World We Were Promised, Part 2

The World We Were Promised, Part 2

When I set out to build this blog, it was deliberately a place to tinker. I already have one blog running on WordPress and there wasn't a "cool factor" to starting up another one.

Why? Because WordPress is so old-fashioned. It's built in PHP, a programming language that is a few generations out of date and quirky. People who have other options would never choose to start a new project in PHP these days. There are just too many newer languages that are better-designed.

Surely, then, someone has built a non-PHP blogging platform, right? The two other legacy options, Drupal and Joomla? Both PHP.

Enter Ghost. Started in 2012, it uses the lingua franca of the modern web: JavaScript. Sure, JS has its quirks, but it's still way ahead of PHP. (If you believe, as I do, that JS is machine language and humans should be writing TypeScript that compiles down to JS, you have a real language to work with.)

I was excited. I read the tutorials and set up this blog. Ghost was still in active development so even the things I thought were missing I figured were coming soon.

Instead, since launching this blog in February 2019, the only significant development is the abandonment of the Android app, which was maintained by a volunteer who seems to have just lost interest in maintaining it. And the admin dashboard where you write and edit posts explicitly says that mobile browsers are not supported and that you should use a desktop browser.

It's 2020 and I have no way to blog from my smartphone? Upload a photo with a few words of caption?

Where is the world we were promised? Where every year brings better and better innovation?

What did we get wrong about 2020 that everyone just uses the same legacy software (Wordpress, Drupal, Joomla)? The only answer I can come up with is that there are fundamentally no use cases the legacy options can't cover that call for reinventing them in a more modern form.

Perhaps it's the fault of Facebook, Twitter, Instagram, and Tumblr. Want to post a photo with a few words of caption? All four explicitly support that use case. Who really cares that you're a tenant farmer on someone else's land, your content being used by them to sell ads?

Bad Behavior

Then, a few weeks ago, I see this Hacker News post. The original site it linked to has been edited, but the site as it appeared originally is archived here. First, a little background: Ghost is an open-source software project to produce the blog platform itself. People like me who run the software on their own server do so without paying a royalty to Ghost. The Ghost project, which has 10 or so people on the payroll, runs ghost.org which is a platform that will host a Ghost blog for you and manage keeping it secure and up to date, in exchange for a monthly fee based on things like number of hits your blog gets.

So, the story linked above involves someone building a blog hosted on ghost.org who was unhappy with their questionable business practice of letting you use the features of a higher tier of service and notifying you via email that you would be billed for the higher tier after 7 days. The poster took issue with this saying that it should block you from using the higher tier features until you explicitly upgraded your account. Fair enough.

But he went to Twitter, a little hot under the collar, and posted about it. The CEO of Ghost, John O'Nolan, replied to his tweets, and then without waiting for a response deleted his blog from ghost.org without providing a chance for the disgruntled user to back it up. This is the email he sent, which I'm copying here for posterity because it is so egregiously arrogant:

Eventually Ahmed was able to get in touch, recover his in-progress site (in order to presumably self-host it in the future) and removed the content of his post. I can understand why he did that, but luckily the archive is there as a testament to what a fragile ego looks like.

Purpose

When Ghost was Kickstarted 8 years ago, it was with the tagline "Just a Blogging Platform":

Ghost is a platform dedicated to one thing: Publishing. It's beautifully designed, completely customiseable and completely Open Source. Ghost allows you to write and publish your own blog, giving you the tools to make it easy and even (gasp) fun to do. It's simple, elegant, and designed so that you can spend less time messing with making your blog work - and more time blogging

Now? The GitHub repo for for Ghost, now on version 3, bears the tagline "The #1 headless Node.js CMS for professional publishing". My understanding of a "headless CMS" is that it's just the data: you write your own frontend to render the data it manages. That's... not the same thing as a blog.

Of course, using the software, it still seems like it's built for blogging. It's still fast and simple to use, if lacking in features.

I want Ghost to succeed. I want WordPress to have serious competition. I want there to be a marketplace of options that suit different niches.

But as it is right now, as much as I enjoy tinkering on my Ghost blog, I can't really recommend it as a platform to just get things done. Sure, WordPress is icky old PHP. But it works.

Postscript

Maybe Ghost's problem is skin in the game, in the sense that I have none. They haven't gotten a dime from me, even though they have provided me a fair bit of value.

To put it another way, why should they care what I think? They don't make any money off of me. Fair enough. So set up an arrangement where I have some incentive to set up a recurring donation or pay for features I want built.


This post took about three hours to write. One hour writing the text, and two hours chasing my tail trying to fix an issue with broken dependencies. Again, I don't mind tinkering and maintaing my own install. But upgrading from the installed version of the blog to the latest was just flat broken. After trying solution after solution, I ended up just reverting back to the version of both Node.js and Ghost that I was using when I started, and something about refreshing the dependencies fixed the issue I was having. But ultimately frustrating.

Ben Berry

I don't have comments on my posts, but if you want to reach me, email me at my first name at benb.us.