Working with Ghost: a review

This site is built with Ghost and the Krabi template. I use it for blogging and as a professional home on the web. Why Ghost? Here are some initial thoughts. Ask me again in a year's time ...

Lorcan
Lorcan
: Read in 17 minutes
Meta

The choice

In looking at building a personal site, there seemed to be some very clear tradeoffs, between prefabrication and control, between time spent writing and time spent building. Especially as a secondary goal for me in starting a new web presence is to learn a little more about front-end web technologies, while starting from a low knowledge base (CSS, Handlebars, JavaScript). Some options:

  • WordPress is the most obvious choice. WordPress powers a surprisingly large part of today's web and of course there is a massive ecosystem - hosting sites, website builder layers, themes, plugins and so on. There are multiple choices, options, and additions for everything. I have used WordPress for a long time, admittedly in a simple and work-supported way. And I also had a simple personal WP deployment as a placeholder on this URL for some years. However, I found the sheer volume of WP choices and opportunities a little oppressive and bloated. Of course, I understand one could constrain this and that the ecosystem is evolving but I was interested in looking at more modern approaches. And I just felt like a change.
  • One could use a website builder like the very popular Squarespace. However, I resisted the packaged and closed nature of this option.
  • The most attractive option was a static site builder, like Jekyll, Gatsby or Hugo. The most attractive philosophically, I should say, but maybe not practically. I thought the technical lift might be too great for me, unless I was prepared to invest quite a bit of time, and it did seem to me that I would need pretty active support. In retrospect, maybe I should have spent some time with Jekyll or Hugo given the growing ecosystem available.
  • I wanted to do more than one can do on Medium or Tumblr.
  • I have been interested to see the growing popularity of Substack, but I was not sure I would have the discipline to send out a regular newsletter, at least not now.

In this context, Ghost looked more and more interesting, for a variety of reasons. I was attracted by the non-profit status and culture of Ghost, its commitment to open source, its vision of enabling creativity and writing on the web, and its modern design. I confess I was overinfluenced by these factors, perhaps irrationally so. But most important I was interesting in a good publishing experience coupled with an opportunity to be that bit closer to the building process.

A few things about Ghost:

  1. In describing itself, Ghost foregrounds its role as a writing platform and very much ties itself to an independent writing/journalism/publishing movement. This is perhaps most closely associated in more general discussion with the popularity of Substack, although it was also interesting to see the recent acquisition of Revue by Twitter. (Craig Mod writes: 2020: the year “Substack” entered the realm of “Kleenex.”) Ghost supports this role by providing a very engaging editing interface, the capacity to manage membership and subscription newsletters, and support for paid subscriptions. This was attractive, as it provides a framework for sharing, even when one doesn't implement the paid subscription options. While it might be interesting to experiment with the paid newsletter model, we operate in a very small community and I am not very confident that this site would aggregate very much in the way of paid membership :-) Anyway, this is not planned here, although I am interested in the membership functionality to facilitate mail updates and comments. Ghost also emphasizes its support for startups developing a web presence, and there are some nice examples on the list below.
  2. Ghost is also a small and very focused organization (21 employees according to the website), and is also supported by voluntary code contribution. The Ghost Foundation is registered in Singapore, but I did not see anything immediately about a board or governance. It seems still to have that startup energy and culture.
  3. Ghost is a headless CMS, a growing category of provider.  Simply, it focuses on backend content management, exposing content through APIs. It does not focus on frontend presentation. If you have the dev capacity  you can build your own front end. Or you can rely on themes. Ghost ships with Handlebars.js, a templating language which provides a themes layer. There is a default theme, and a small industry of theme creators. More about this below.
Headless CMS - Top Content Management Systems | Jamstack
Check out this showcase of some of the best, open source headless CMSes. This is community-drive so be sure to submit your favorite CMS today!
Ghost Customers – A showcase of real sites built with Ghost
Learn about Ghost customers and why thousands of businesses rely on Ghost to build professional publishing websites. #1 CMS for privacy, security and speed.

The execution

So, how has it gone?  My remarks here are confined to the hosted version, Ghost(Pro), and also rest on my experiences as a non-initiate single user, rather than somebody with more development experience or an organization with some development capacity. I feel it is important to emphasize this, as I fully understand that the system may not be optimized for my level of expertise. That said, I remain reasonably positive about the overall experience.

Ghost

Ghost emphasizes writing. And it has a very nice editor that really focuses you on the words in front of you. Markdown can be used 'in the flow' and there is unobtrusive elegant support for embedding video, images, raw HTML code, and so on (although it doesn't have the extensive options of, say, Notion). It hides the clutter of functionality. On one side of the page, you can open up a dashboard that gives access to general Ghost features, and, on the other, to a dashboard that gives access to publishing, SEO and other options for that page. It is nicely designed.

It usefully includes some things:

  • SSL - although you have to register your domain with a third party, Ghost provides SSL at no additional cost.
  • SEO,CDN, security and speed - reading reviews I was reassured that Ghost was making good design and engineering choices more connected to the future than some other options. See the review below for a brief overview of these areas from a more knowledgable perspective than mine. SEO is integral, not provided through a plugin. You can configure for social media, add keywords, Google snippet text, and so on. I have not experienced how well this works yet, as I have only just published the site. It also sits on a content distribution network, has good security options, and says it does backup (although, apparently you cannot roll the site back to a previous version). It provides a nice option to do a JSON dump of the entire site in a few seconds.
  • Membership and paid options, as noted above. Mail distribution is built into Ghost, although you need to provide your own email to receive notifications/replies. Here is an example of a site with premium membership options deployed.

Ghost suggests that it can be used out of the box by the non-technical writer. This may be mostly true if you are prepared to accept what comes out of the box, and do not need to change the theme. But in practice, there are some areas where you may need to do a little more which exposes you to CSS or Handlebars. There are two design choices that mean that starting up with Ghost is a little more challenging than starting up with, say, Medium or Squarespace. The first is the Ghost development focus on the functional core, creating a need either for third party integrations or for custom theme work to implement desired features. And the second is the reliance on themes rather than any inbuilt design layer.

Third party integrations

The clear focus on core capabilities means that functionality seen as more peripheral becomes literally so, as it is passed to third-party integrations. This is the case with comments, for example, although of course this is now common as the widespread use of Disqus shows. I am experimenting with Cove here, which is built specifically for Ghost and handily sits on top of its membership model. Similarly, contact forms are provided through third parties. I am using Formspree here. Depending on choices, in some cases this will add subscription cost, especially if one wants to avoid the perennial spam problem. Ghost is not a large organization and this discipline does mean that there is a welcome focus on enhancing the core (blogging, membership, subscription). However, it is surprising that search is not natively provided. Typically, this is managed in different ways on a per-theme basis. And in fact, given the volume of posts I have imported, I have run into issues with the theme-provided search - it was hanging when it was trying to search the full text, so I have limited it to titles for the moment. I will need to look at other options - it would be better if this were natively provided.

Some integrations are built in: Unsplash for images, Slack, Stripe for payments, and some more. Others can be managed through Zapier, a third-party integration app. Integrations supported in this way are described here:

Ghost Integrations – Connect your favourite Tools & Apps to your site
Keep your stack aligned and integrate your most used tools & apps with your Ghost site: automation, analytics, marketing, support and much more! 👉

There is no support for plugins, so, while you are not tempted to load up on unnecessary plugins, you also may be short of readymade and basic functionality. Philosophically, I find this quite pleasing, focusing on simplicity and the task in hand. However, again from a practical point of view, it means that things that might be simple to do in another environment (pulling out tweetable quotes, for example, or having an archive, organized by month or some other period, or creating a table of contents) have to be custom crafted here. And of course, in turn, this requires some technical knowledge.

Themes

You can build your own theme or website if you are able, and there are some 'starter' themes around for those who wish to develop their own. It also comes with a default theme (Casper - geddit?). I need to go with an existing theme.

My experience with themes has been very variable. The first I tried turned out not to be developed or supported any more, so I got a refund. I tried a couple for which I had to chase for documentation and responses were delayed or non-existent. However, I also had a very good experience with another developer who was interested in how his theme was being used or could be improved. I settled on Krabi which is more expensive than most (and I notice the price has gone up since I subscribed). It was used in some nice sites, and, at that price, I expected it to be well-supported. Given the subscription price of any individual theme, development needs to be a volume business, if it is not a labor of love. There is naturally a line between implementation support on one side, and customization or development advice on the other, and you are not really paying enough for the latter.

This means that  you have to settle for being constrained by the capacities of your chosen theme, or you have to have enough knowledge to make adaptations yourself if you want to change design or features. Of course, if you are happy with theme choices or do not have additional functional requirements, then it is not a big issue. Although it does mean that you don't have the control you might have hoped for. The irony here is that while you may have been attracted to Ghost by the promise of openness and control you may end up being limited by the options supported in the theme you have chosen.

There are occasions when you do need to know a little more. Membership is one. Ghost has a newly developed membership Portal which natively provides elegant membership management functionality. However, this is recent, so similar functionality is built into themes. On this site, I have a signup/in button (the Portal) and signup forms (the theme). I can also link to Portal functionality (e.g. signup here). I could of course do away with one approach but it took me a while to figure out how to hide all pay options, what to show where, and so on. This requires some editing of theme files.

Given its design, Ghost is very flexible, but you do have the development skills to take fuller advantage of its possibilities. If you do have those skills, I can see that it could be quite powerful and rewarding.

Incidentally, the business ecosystem around themes is fascinating: I would be very interested to read an analysis of the economics and distribution of theme development. Themes are created by all sorts, by small companies, solo operators, and sometimes as a sideline to other work. It is very much a global activity. And of course, the WordPress theme building ecosystem is enormous.

Ghost has acquired a small theme developer, and it is bundling free themes with its new lowest subscription tier which does not allow you to customise themes or to use premium (i.e. paid-for) themes.

The learning curve is in the wrong place

Of course, the well-known problem here is that the learning curve is in the wrong place. When you are setting things up is precisely when you need to know what you are doing. And things that become simple with familiarity can be tedious, frustrating or time-consuming when you don't know what you are doing.

Making adaptations does require some knowledge of Handlebars and CSS. Copying from other parts of the theme or from other themes, trial and error, and some learning will help move things along. Becoming familiar with the structure of the theme, the classes used, the syntax of Handlebars and CSS, and so on, comes with experience. And of course depending on interest and time, you can engage in some more structured learning. And such learning is truly accompanied by many small pleasures.

I was ridiculously pleased for example to implement the table of contents and even to get a 'sticky' version working. However, it would have taken me some time to figure out how to prevent it from floating over the header when scrolling to the top of the post. And then I would have to figure out how to switch it off in mobile versions. So I disabled it. I also did some styling, placing it in the white-box widget characteristic of the theme. I wanted to place it both in the sidebar and at the head of the post (as in the mobile version, sidebar content goes to the bottom). But it would not show in two places and I could not immediately figure out how to make that happen - did I need to run the generating script twice (it is based on a third party script), or something else, or was it just not possible? Also, you may notice that if there are no headings in the post, the white TOC box continues to appear but is empty. The logic of what I need to do to prevent that is obvious (has no heading, do not include TOC) but after a few guesses at the syntax I moved on.  I will fix it some time in the future, no doubt after stumbling over the answer in another context (leave a comment if you can help :-)).

I did end up wanting to do quite a bit of reformatting. But given that I was learning as I was going, it is somewhat inelegant, to say the least. A glance at the Inspect Panel will quickly show this! I have probably over-loaded the code injection facility (the ability to adapt styling etc at the point of page/post creation). Although I have certainly made changes to the theme, I did not want to make too many, as, when it is updated, I have to reconcile my changes and the new version. And indeed, deploying an updated theme is somewhat tedious if you have edited existing theme files. Reconciliation is a time-consuming manual process.  There is certainly a tradeoff between how much you want to implement your own style choices, and how much you are happy to go with the theme.

And of course, if one makes local changes to the theme without being very familiar with its overall structure, then predictably enough one may create unanticipated issues elsewhere.

With more time and experience I would hope to clean things up, and to do things more efficiently and elegantly.

There are a couple of things in particular I would like to see:

  • The ability to present archive pages for blog entries - not individually listed (this won't scale with the number of entries I have, over many years), but rather a chronological list of months and a link to a page for each month which shows the list of posts for that month.
  • The ability to send out a monthly digest, which gives title/excerpt of each post in that month. The default behavior is that it is possible to send each post to your members. A digest would be nice.

I did not see a theme which did these things for me. And I understand that Ghost is certainly flexible enough to support that functionality. However, it is currently beyond my capability.

I should note that Ghost does point to some experts who can provide for-fee development services, and there are occasional enquiries on the Forum looking for freelance design or development input.

One drawback of the general themes environment is that you have to buy before you try. Indeed, one of the reasons I began using Krabi was that it offered a refund if things did not work out in early stages. But this is not common. This means that the initial choice may be based on surface style. One does begin to develop better cues - is there online documentation and what does it look like, for example. However, it would also be good to be able to assess the clarity of the file structure of the theme, check whether there is helpful commenting, and so on.

All that said, I have enjoyed working on it. And I understand that if I had only a small bit of additional knowledge, the story might be quite different.

The curse of knowledge

Ghost support is very responsive and friendly. There is a forum for discussion of technical questions, which does not get hyper-active. There is extensive documentation, a little confusingly divided between developer and general guidance. There is a refreshingly personal nature to some of this, given the scale and culture of Ghost. It is a welcome contrast to the scripted customer support we have become used to, sometimes tied to an upsell agenda.

However, the curse of knowledge is a very real factor here, which is not really surprising - maybe? - given the demographic of Ghost users, who, I imagine, lean more technical than, say, a general blogging audience?

Nor are theme developers really set up to hand-hold their unsophisticated subscribers through the learning journey. Ditto in the case of some third-party applications (e.g. Cove, where my chat questions about implementation have gone unanswered).

You are suffering from the curse of knowledge when you know things that the other person does not and you have forgotten what it’s like to not have this knowledge. This makes it harder for you to identify with the other person’s situation and explain things in a manner that is easily understandable to someone who is a novice. // Lifehack

The signal of the curse of knowledge is that little word 'just', which often crops up in answers to questions.  "Just insert this line in the theme." "Just run this script." "Just adapt the CSS."

As I describe in the next section, I have imported almost two thousand blog entries from another environment. I would like to be able to provide a chronological overview archive of these, showing the entries by month, for example. This is not a very unusual feature in blogging environments but is not available in the theme I am using,  or natively in Ghost. I did ask about it in the Forum and the response was that it was straightforward to build using the Ghost API. Well, yes ....

The future

I have moved 15 years of so of work over from my work blog (over 1,900 entries) [update: now redirected]. Even with some help, there were glitches. I have cosmetically upgraded entries that were widely referenced or influential, and tagged them classics. I may add more. And time permitting, I will fix formatting in other posts that might get some attention. (I do have a redirection issue - internal links in the WP blog resolve to an archive entry of the post, which has a different URL. With some help I am working on that. [update: thanks to great work by Libchalk, who did additional scripting around redirection, this now works as expected])

Even though it may continue to exist elsewhere, I wanted to bring the archive under my own control. I have created a separate 'collection' for them so that they are under their own particular path and will redirect from the original. A 'record' of the major contributions exists as the book of the blog which does ensure some durability.

The book of the blog
Not very many blogs end up as books. This one did!

Ghost is an evolving system, so some things will get easier. However, there is something very attractive about its spareness, and the design choices it has made. I do feel that a little more help could be provided though - if it is to be more attractive to the individual blogger. And remember, that has been my perspective here, understanding that there are other types of user. I mentioned search, the table of contents and chronological archive above. I was aware in the transfer of entries from the other site that Ghost did not have some of the bulk editing tools of WordPress - the ability to merge tags for example.

I have enjoyed my Ghost experience. And after many years it has been interesting to peek under the hood again, being exposed to brackets in curly and angled varieties. It has been been nice, if occasionally frustrating,  figuring out how to do things and seeing the changes ramify through the web version. Even if it takes a while for things to work or you have to unpick mistakes, or you can't figure out what to do. And  you know that you are tangling things up a bit.

Maybe there is something a little sentimental about this, but if you want to focus on writing, are prepared to do without bells and whistles, and if you want to learn, it is quite satisfying.  

Coda - after Ghost 4 release

So, the above was largely written a little while ago, before the release of Ghost 4. This introduced evolved functionality, some design changes, a rebranding, and was generally greeted positively. It clearly represents a major commitment by the small team. Developments are described here:

Ghost 4.0
Almost exactly 8 years ago, we announced the first prototype of Ghost onKickstarter. Today, over 20,000 commits later we’re releasing Ghost 4.0[https://ghost.org/features/], the latest major version of the product, as wellas small refresh of our brand. If you’re short on time, here are the abbre…

The design refresh has changed the simple arrangement which appealed to me above, changing how things are presented, adding links to Ghost materials, moving some functionality to a settings section, and so on. However, the editing experience remains engaging and they have added a very useful preview feature, showing what the post will look like on different devices. They have added a cheaper hosting option for those that are prepared to use one of a set of free themes without additional customization.

They have also moved the membership and subscription Portal UI into production making it a core part of the platform. There has been some discussion about this from those that do not want to use the functionality and would like easily to switch it off. I am sure something will be done to address this in time.

What I found most interesting in the discussion was the reaffirmation of the strategic centrality to Ghost of the paid subscription model, and the focus on the "creator economy." From the Changelog:

Memberships, subscriptions and the creator economy as a whole is a noisy space right now. Many companies building products in this space weren't around 8 years ago, and most won't be around 8 years from now. We will be.
Decentralised, open source technology is methodical, powerful, and inevitable.

I don't have any insight into Ghost's numbers. Or into how their users break down across the range from personal to startup/corporate (without membership) to unpaid and paid independent creators.

The future of that independent creator economy is certainly pretty interesting and something I might talk about again. At the same time, I hope that Ghost continues to be an effective platform for the rest of us. I admire the achievement of the Ghost team. I have grown to like it and enjoy working with it ... even in my limited way!

Picture: I took the feature picture at Ruskin Park in Camberwell, London.

Meta

Comment?

Comments

Sign in or become a LorcanDempsey.net member to comment. See Membership page for more detail.

Lorcan

Responsible for Membership and Research at OCLC, serving libraries around the world.