For the past couple of days, I’ve been experimenting with the Ghost publishing software. I tried Ghost before out of curiosity, but did not do much other than install it and poke around. I wanted to revisit the software, and see how it compared to WordPress.
Overall, I’m impressed with the minimal interface, the content import process, and the ability to add memberships and an email newsletter out of the box. There are some additional features that are built in (such as SEO settings) where you would need a plugin with WordPress.
In this post, we’ll take a brief look at what Ghost is, and how you might be able to use it as an alternative to WordPress.
What is Ghost?
Ghost is a publishing platform, or content management system (CMS), designed for writing and creating a community around your content. Calling it a CMS may be a little inaccurate. You can think of it as a blogging platform that adds a membership capability.
You may not build your next business website with Ghost, though you might build your next blog with it. It is a bit like an open-source Medium. Whereas Medium is a closed platform, Ghost is open source, and you have control over your content, and greater access to your subscribers.
The creators of the software will explain it more eloquently than I can, so be sure to check out their website for all the details.
In comparison to WordPress
Ghost is similar to WordPress, but with many features removed, and a few others built in. The overall writing and editing experience is much cleaner and more elegant.
Membership features and email newsletter features are included. There is no need to install any extra plugins for an email newsletter, or to build a membership site.
If you have ever built a membership site with WordPress, you will know the challenges involved. Having that capability to begin with in Ghost is incredibly useful.
The content editor is extremely minimal, and a refreshing change from WordPress. However, if you are looking to create a customized landing page layout, you won’t find those tools here. The editor is paired down to the essentials, and nothing more.
I don’t pretend to know exactly how the database is managed within Ghost. The Ghost documentation informs us it uses the Bookshelf.js ORM layer, with SQLite3 as the default in development, and MySQL recommended for production.
When installing it, there was no need to create a separate database. I imagine there are some steps required when moving it into production.
Ghost is a headless CMS, which means you can use what you want on the front-end. By default, a Handlebars.js theme layer is served by an Express.js webserver.
If you want to take it further, you can use your own front-end or static site generator such as Gatsby.js.
As compared to WordPress themes
If you have ever built a WordPress theme, you will know the difficulty of working with inconsistently-named functions, legacy code, and code that is most certainly not DRY.
There are projects that aim to modernize the WordPress theme development process such as Timber and and Roots. If these work for you, great! But you are still applying a modern layer on an old technology stack.
WordPress is quickly moving towards block-based themes, which does modernize the development process a bit. However, maintaining backward compatibility comes at a cost. We have a legacy codebase, resistant to modernization.
Within the Ghost admin area, we are presented with an uncluttered and focused UI that doesn’t get in the way. You can easily get to your posts, and edit or add new content. A contextual menu appears when you need to add a new element while writing. A sidebar is available when needed for metadata and other post options.
The various system settings are logically grouped in the “Settings” area, accessible from a gear icon at the bottom of the left column in the admin panel.
Design settings have their own screen as well. From there, you can change the theme and make other adjustments to customize your site.
If you are looking for the never-ending page of design options and settings that you have with many WordPress themes, you won’t find it here. Just the essential options are available so that you can set up your site, and get on with writing.
My one nitpick about the design would be the pink, orange, green, and blue interface colors used on some of the buttons. The colors don’t seem to relate to anything. It would be nice if there were an option to go grayscale in keeping with the rest of the interface. But this is a minor complaint.
As a test, I imported this site from WordPress. There is a plugin that makes this process easier. The plugin imports standard posts, pages, tags, and the media library.
Note that you will need to convert your categories to tags if you want those imported. I have not tested this, but there is a way to convert the categories to tags before import with a plugin.
The post and page URLs remain the same after import. The category URLs will change, however there is a way to adjust that.
The image URLs will change as well. If that is essential for you to manage, you might be able to set up some 301 redirects for the images.
If you have ever used the WordPress importer, you’ll know that it’s not foolproof. Half the time it stalls out, and images don’t import unless you do some setup on your server first.
With Ghost, the content import process worked without issue. Media files imported and attached to the correct post or page. Even image alt text was imported.
Custom fields and custom post types are not imported. That’s by design. So, if you have a large amount of custom content, you may need to do some rearranging before you import to Ghost.
Comments and metadata are also not imported. There are third-party integrations for comments if needed.
Ghost is open source, just like WordPress. However, WordPress uses the GNU General Public License, Version 2, and Ghost is released under the MIT license.
I prefer the MIT license as it is simpler, and less restrictive. The MIT license document for Ghost is 168 words, while the GNU v2 license bundled with WordPress is 3,188 words. I can read a 168-word license. I don’t really want to sort through 3,188 words to understand what is permitted with the software.
Ghost has a hosted version of their platform. Of course, this comes at a premium price, comparable to Squarespace or managed WordPress hosting providers. The price scales as your audience grows, similar to how most hosting works.
But the software itself is open source, and it can be installed in your own hosting environment. I use Opalstack as one of my hosting providers. There is a built-in installer for Ghost, and it worked just fine. Node.js had to be upgraded, but other than that, it worked without issue.
Ghost would work on any modern hosting environment, as long as you can install Node.js. You’ll be able to do this on a platform such as Oplastack, Linode, or Digital Ocean. I think you can probably even run it on a VPS at DreamHost.
Ghost has an installation guide for doing it yourself.
Ghost has some SEO post settings that allow you to set the post URL, date, tags, and metadata. Instead of requiring a third-party plugin for metadata, it’s built in. You can also set Twitter and Facebook card data from the post interface.
In my opinion, this is the way it should be. WordPress should not need a separate plugin to manage post metadata.
So will I use Ghost, or is this just an experiment? And should you consider it for your next project?
I would like to use Ghost for my next blog. I have a project in mind that may work well on the platform. And I would consider migrating this site to Ghost at some point too.
I’d like to understand a little more about how it handles custom content, and custom page designs. I do need the capability to design a few pages beyond just the standard blog format. I also want to know how updates are applied, and what potential security issues exist.
Overall, I’m excited about the platform, and I look forward to delving into it further. If you are considering Ghost as an alternative to WordPress, I would encourage you to give it a try.